高并发思维导图

1. 高并发

比如微博每天1亿多pv的系统一般也就1500QPS,5000QPS峰值。

2C 4G机器单机一般1000QPS。

8C 8G机器单机可承受7000QPS。

1.1 响应时间

举例(地铁):列车速度或者说起点到终点的时间

1.2 并发数

举例(地铁):假设只有一辆列车,那这一辆列车所能运送的人数为并发数。

1.3 吞吐量

举例(地铁):一天总共能运送的总人数。


2. 提高并发能力的方法

分布式架构设计

2.1 垂直扩展(Scale Up)

提升单机处理能力。垂直扩展的方式又有两种:

  1. 增强单机硬件性能,例如:增加CPU核数如32核,升级更好的网卡如万兆,升级更好的硬盘如SSD,扩充硬盘容量如2T,扩充系统内存如128G;

  2. 提升单机架构性能,例如:使用Cache来减少IO次数,使用异步来增加单服务吞吐量,使用无锁数据结构来减少响应时间;

在互联网业务发展非常迅猛的早期,如果预算不是问题,强烈建议使用“增强单机硬件性能”的方式提升系统并发能力,因为这个阶段,公司的战略往往是发展业务抢时间,而“增强单机硬件性能”往往是最快的方法。

不管是提升单机硬件性能,还是提升单机架构性能,都有一个致命的不足:单机性能总是有极限的。所以互联网分布式架构设计高并发终极解决方案还是水平扩展。

2.2 水平扩展(Scale Out)

通过增加服务器数量,就能线性扩充系统性能。水平扩展对系统架构设计是有要求的,如何在架构各层进行可水平扩展的设计,以及互联网公司架构各层常见的水平扩展实践,是本文重点讨论的内容。


3. 分布式理论CAP - C(一致性)A(可用性)P(分区容忍性)

  • 一致性(C):在分布式系统中的所有数据备份,在同一时刻是否同样的值。(等同于所有节点访问同一份最新的数据副本)
  • 可用性(A):在集群中一部分节点故障后,集群整体是否还能响应客户端的读写请求。(对数据更新具备高可用性)
  • 分区容忍性(P):必然存在网络故障断开的风险,这个网络断开的专业场景成为网络分区。系统如果不能在时限内达成数据一致性,就意味着发生了分区的情况,必须就当前操作在C和A之间做出选择。