高并发架构设计

01概述
高并发(High Concurrency)是互联网分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计保证系统能够同时并行处理很多请求 。
高并发一方面可以提高资源利用率,加快系统响应速度,但是同时也会带来安全性,分布式事务、死锁等问题 。
并发:一个处理器同时处理多个任务 。并行:多个处理器或者是多核的处理器同时处理多个不同的任务 。
02度量指标并发的指标一般有QPS,TPS,IOPS,并发用户数,PV,响应时间等 。
2.1 QPSQPS:每秒响应请求数,是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准, 即每秒的响应请求数,也即是最大吞吐能力 。
2.2 TPS
Transactions Per Second,也就是事务数/秒 。一个事务是指一个客户机向服务器发送请求然后服务器做出反应的过程 。客户机在发送请求时开始计时,收到服务器响应后结束计时,以此来计算使用的时间和完成的事务个数 。
QPS基本类似于TPS,但是不同的是,对于一个页面的一次访问,形成一个TPS;但一次页面请求,可能产生多次对服务器的请求,服务器对这些请求,就可计入“QPS”之中 。
2.3 并发用户数
并发用户数:同时承载正常使用系统功能的用户数量 。例如一个即时通讯系统,同时在线量一定程度上代表了系统的并发用户数 。
2.4 响应时间
响应时间:系统对请求做出响应的时间 。例如系统处理一个HTTP请求需要200ms,这个200ms就是系统的响应时间 。一般而言,用户感知友好的高并发系统,时延应该控制在250毫秒以内 。
2.5 PV
PV(Page View):页面访问量,即页面浏览量或点击量,用户每次刷新即被计算一次 。可以统计服务一天的访问日志得到 。
03设计思路互联网分布式架构设计,提高系统并发能力的方式,方法论上主要有两种:垂直扩展(Scale Up,也叫竖向扩展)与水平扩展(Scale Out,也叫横向扩展) 。1、垂直方向:提升单机能力
【高并发架构设计】提升单机处理能力又可分为硬件和软件两个方面:
硬件方向,升级服务器硬件,购买多核高频机器,大内存,大容量磁盘等 。
软件方向,包括用更快的数据结构(编程语言级别的并发编程),改进架构,应用多线程、协程(select/poll/epoll等IO多路复用技术),以及上性能优化各种手段,但是这种方式很容易出现瓶颈 。
2、水平方向:分布式集群
为了解决分布式系统的复杂性问题,一般会用到架构分层和服务拆分,通过分层做隔离,通过微服务解耦 。
这个理论上没有上限,只要做好层次和服务划分,加机器扩容就能满足需求,但实际上并非如此,一方面分布式会增加系统复杂性,另一方面集群规模上去之后,也会引入一堆服务发现、服务治理的新问题 。
因为垂直向的限制,所以,我们通常更关注水平扩展,高并发系统的实施也主要围绕水平方向展开 。
04集群化单机的硬件扩展成本较高,软件优化易出现性能瓶颈,因此利用集群解决高并发问题 。负载均衡是常用的解决方案,即把前端流量分配到不同的服务节点上 。在集群化的架构下,可以采用池化(内存池,连接池,线程池),分布式缓存,分布式消息队列,流控技术(服务降级,应用拆分,限流)和数据库高并发(分库分表,读写分离等)提高并发能力 。
负载均衡可以分为3种:
1、DNS负载均衡,客户端通过URL发起网络服务请求的时候,会去DNS服务器做域名解释,DNS会按一定的策略(比如就近策略)把URL转换成IP地址,同一个URL会被解释成不同的IP地址,这便是DNS负载均衡,它是一种粗粒度的负载均衡,它只用URL前半部分,因为DNS负载均衡一般采用就近原则,所以通常能降低时延,但DNS有cache,所以也会更新不及时的问题 。

推荐阅读