高并发是互联网分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计保证系统能够同时处理很多请求。高并发相关的一些指标有响应时间、吞吐量、每秒查询率QPS、并发用户数等。
互联网分布式架构设计,提高系统并发能力的方式,方法论上主要有两种:垂直扩展(Scale Up),水平扩展(Scale Out)
提升单机处理能力。垂直扩展的方式又分为两种:
只要增加服务器数量,就能线性扩充系统性能。水平扩展对系统架构设计是有要求的。
反向代理层的水平扩展,是通过DNS轮询实现的:DNS Server对于一个域名配置了多个解析IP,每次DNS解析请求来访问DNS Server,会轮询这些IP。
当Nginx成为瓶颈的时候,只要添加服务器的数量,新增Nginx服务器的部署,增加一个外网IP,就能扩展反向代理层的性能,做到理论上的无限高并发。
站点层的水平扩展,是通过Nginx实现的。通过修改nginx.conf,可以设置多个Web后端。
当Web后端成为瓶颈时,只要增加服务器的数量,新增Web服务器的部署,在Nginx配置中配置上新的web后端,就能扩展站点层的性能,做到理论上的无限高并发。
在数据量很大的情况下,数据层(缓存,数据库)涉及数据的水平扩展,将原本存储于一台服务器的上的数据水平拆分到不同服务器上,已达到扩充系统性能的目的。
这里需要注意的是,通过水平拆分来扩充系统性能,与主从同步读写分离来扩充数据库性能的方式有本质的不同
注意: 缓存层的水平拆分和数据库层的水平拆分类似,也是以范围拆分和哈希拆分的方式居多