高并发

高并发相关的一些指标

  1. 相应时间:系统对请求做出相应的时间。
  2. 吞吐量:单位时间内处理请求的数量
  3. QPS:每秒请求数。
  4. 并发用户数:同时承载正常使用系统功能的用户数量,例如一个即时通讯系统,同时在线量一定程度上代表了系统的并发用户数。

如何提升系统的并发能力

互联网分布式架构设计,提高系统吞吐量的方式有两种:垂直扩展,水平扩展

垂直扩展:提升单机处理能力

  • 增强单机硬件能力:增加CPU核心数,升级更高配置的网卡,升级更好的SSD硬盘,扩充系统的内存
  • 提升单机架构性能:使用Cache来减少IO次数,使用异步来增加单服务吞吐量,使用无锁数据结构来减少相应时间

水平拓展

只要增加服务器的数量,就能线性的扩充系统性能,水平扩展对系统架构设计是有要求的

常见的互联网分层架构

高并发

  • 反向代理:隐藏真正的服务端,用户只知道代理服务器的地址
  • 正向代理:隐藏真正的客户端,类似于代理访问外网的服务器,谷歌只知道代理服务器的地址,不知道客户端的地址。
  1. 反向代理层的水平扩展

反向代理层的扩展是通过“DNS轮询”实现的,dns-service对于一个域名配置了多个解析ip,每次DNS解析请求时,就轮流返回这些ip地址。
当nginx变成瓶颈时,就新增服务器,新增nginx服务器的部署,增加一个新增的ip地址,就能无限的扩展反向代理层的性能,做到理论上的无限高并发。

  1. 站点层的水平扩展

站点层的水平扩展是通过nginx实现的,当web后端成为瓶颈时,可以通过增加服务器数量,部署web后端,通过修改nginx.conf来实现的,可以设置多个web后端,在nginx的配置中更新上新的服务器就可以在站点层实现扩展。

  1. 服务层的水平扩展

服务层的扩展是通过连接池来实现的,站点层通过RPC-client调用下游PRC-server时,client中的连接池会建立与下游服务的多个连接,当服务称为瓶颈时,只要增加服务器数量即可。

  1. 数据层的水平扩展

在数据量很大的时候,数据层涉及数据的水平扩展,将原本存储在一台服务器上的数据水平拆分到不同的服务器上。