作者:阿凡卢
出处:http://www.cnblogs.com/luxiao…
一、什么是高并发
高并发(High Concurrency)是互联网分布式系统架构设计中必须思考的因素之一,它通常是指,通过设计保证系统可能同时并行处理很多申请。
高并发相干罕用的一些指标有响应工夫(Response Time),吞吐量(Throughput),每秒查问率 QPS(Query Per Second),每秒事务处理量 TPS(Transaction Per Second),并发用户数等。
响应工夫:系统对申请做出响应的工夫。
吞吐量:单位工夫内解决的申请数量。
QPS:每秒响应查问申请数。
TPS:每秒响应事务申请数。
并发用户数:同时承载失常应用零碎性能的用户数量。
二、晋升零碎的并发能力
互联网分布式架构设计,进步零碎并发能力的形式,方法论上次要有两种:垂直扩大(Scale Up)与程度扩大(Scale Out)。
(1)垂直扩大:晋升单机解决能力。垂直扩大的形式又有两种:
1)加强单机硬件性能,例如:减少 CPU 核数如 32 核,降级更好的网卡如万兆,降级更好的硬盘如 SSD,裁减硬盘容量如 2T,裁减零碎内存如 128G;
2)晋升单机架构性能,例如:应用 Cache 来缩小 IO 次数,应用异步来减少单服务吞吐量,应用无锁数据结构来缩小响应工夫;
(2)程度扩大:只有减少服务器数量,就能线性裁减零碎性能。程度扩大对系统架构设计是有要求的,如何在架构各层进行可程度扩大的设计是本文重点探讨的内容。
1、零碎集群化部署 + 负载平衡
(1)增加负载平衡层,将申请平均打到零碎层。
(2)零碎层采纳集群化多活部署,扛住初步的并发压力。
2、数据库分库分表 + 读写拆散 + 分布式数据库
(1)分库分表:程度拆分、垂直拆分(弊病太多如关联查问)。
(2)读写拆散:主库写,从库读(数据同步提早)。
(3)分布式数据库:TiDB(HTAP、兼容 MySQL 协定、程度扩大、分布式事务)
3、缓存
(1)本地缓存:本地磁盘或内存。
(2)分布式缓存:用缓存集群抗住大量的读申请。
(3)预缓存,多级缓存。
4、消息中间件
(1)零碎解耦,数据同步。
(2)申请异步化解决,实现削峰填谷的成果。
5、利用拆分(微服务)
(1)按业务拆分、缩小耦合。
(2)分级部署,扩容缩容。
(3)利用资源隔离。
6、CDN(内容散发网络)
(1)尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节, 使内容传输的更快更稳固。
(2)CDN 可能实时地依据网络流量和各节点的链接,负载情况以及到用户的间隔和响应工夫等综合信息将用户的申请从新导向离用户最近的服务节点上。