前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >什么是高并发架构?

什么是高并发架构?

作者头像
kubernetes中文社区
发布2019-07-30 16:11:41
9220
发布2019-07-30 16:11:41
举报
文章被收录于专栏:kubernetes中文社区

什么是高并发?

狭义来讲就是你的网站/软件同一时间能承受的用户数量有多少

相关指标有

并发数:对网站/软件同时发起的请求数,一般也可代表实际的用户

每秒响应时间:常指一次请求到系统正确响的时间(以秒为单位)

TPS(每秒事务数):每秒钟可以处理的事务(请求响应),大概的计算公式为:并发数/每秒响应时间=TPS

QPS(每秒查询数):TPS事务有读有写,而QPS指的是读取,一般情况QPS应是高于TPS的

IP(独立IP):一个IP可以发生多次UV和PV

PV(访问量):即Page View,页面浏览或点周量,用户每次新刷新即被计算一次

UV(独立访客):一般通过cookies记录等判断为一个独立用户,同一IP可能有多个UV(共享IP),发生多次PV

流量(网络流量):请求所产生的网络流量,因为受限于带宽也是并发中的一个重要指

一般公司演化阶段

1、优化运算代码、SQL查询、数据库索引等

2、进行应用负载均衡、数据库做主从/主主复制进行读写分离、增加缓存(Redis\Mem)

3、对系统和数据进行垂直拆分,按业务模块拆分成不同的应用及数据库表

4、分布式服务化、异步消息机制、数据库表水平拆分

优化运算代码、SQL查询、数据库索引等

一般初创公司系统大多数都是单体单库的系统,按照成本优先级第一要做的就是对系统进行代码级的优化。比如应用代码逻辑梳理、合理使用多线程、SQL避免全表扫描、少使用LIKE、

根据业务创建索引等。

案例

单次LIKE大数据量统计查询Sending data状态过多导致数据库连接被耗尽,系统停止响应。通过在统计表建立触发器更新单值表解决

负载均衡、读写分离、缓存

到了第二阶段,单体应用通过优化与增加硬件配置已无法解决高并发的问题,这时可以考虑进行以下架构的演化,这种演化对系统基本没有侵入性,成本低廉

负载均衡:

可以通过Nginx反向代理、F5等进行应用的多流量分发,需要解决的问题就是会话问题,可采用Nginx的路由或是SESSION同步/独立。

读写分离:

采用数据库的主从复制机制,将写入库与读取库分离,可采用中间件进行代理路由,基本可以不改代码。

缓存:

可跟据业务规则将部分数据进行缓存

应用、数据垂直拆分

第二阶段支撑过一定量后,随着并发量再次的提升,由于单库表数据量变大以及访问限制已经不能满足,这时可以考虑进行数据库表的按系统模块垂直拆分。将内联的业务划分为独立的库表,相应的应用也

应随之拆分(应用这时加机器还能挺,不过做不到可审缩资源利用最大化)。同一应用系统访问同一库表,应用系统之间进行少量通信。

分布式服务化、异步消息机制、数据库表水平拆分

在经历过前三阶段后,能走到第四阶段说明平台的发展非常好了,对系统的高并发又有了进一步的要求,这也是成本最高最复杂的,系统架构需要进行很大的改造

分布式:

对系统应用进行服务化(如微服务),服务化的目的不只是为了高并发,也从系统的可维护性(团队大了)、资源利用最大化(对服务进行差异化支撑)方面考虑。

面临的挑战主要是分布式事务方面的控制,可采用二阶段提交方式或是分布式事务容器实现分布式事务。

异步消息机制:

主要解决大并发写入瓶颈,利用消息对列对写入消息进行排队,待数据库进

行处理。

数据库表水平拆分:按一定规则将同一业务表的数据拆分到不同的库/表中(如HASH),面临的挑战主要是跟业务关联性强、跨表的数据合并等。解决方案就是写

好代码吧。。。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-07-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 kubernetes中文社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档