架构师之路——究竟啥是高并发

一、高并发常用的指标:

1、响应时间:

例如系统处理一个HTTP请求需要300ms,这个300ms就是系统的响应时间。

2、吞吐量:

例如在1秒内处理的请求数量

3、QPS:

每秒的响应请求数

4、并发用户数:

同时承载正常使用系统功能的用户数量

二、如何提升系统的并发能力:

1、垂直扩展
a、增强单机硬件性能:

增加CPU核数,更好的硬盘等等。

b、提升单机架构性能:

使用Cache来减少IO次数,使用异步来增加单服务吞吐量。

2、水平扩展

增加服务器数量,就能线性扩充系统性能。

三、水平扩展架构实践

1、反向代理层的水平扩展

反向代理层的水平扩展,是通过“DNS轮询”实现的:dns-server对于一个域名配置了多个解析ip,每次DNS解析请求来访问dns-server,会轮询返回这些ip。

当nginx成为瓶颈的时候,只要增加服务器数量,新增nginx服务的部署,增加一个外网ip,就能扩展反向代理层的性能,做到理论上的无限高并发。

2、站点层的水平扩展

站点层的水平扩展,是通过“nginx”实现的。通过修改nginx.conf,可以设置多个web后端。

当web后端成为瓶颈的时候,只要增加服务器数量,新增web服务的部署,在nginx配置中配置上新的web后端,就能扩展站点层的性能,做到理论上的无限高并发。

3、服务层的水平扩展

服务层的水平扩展,是通过“服务连接池”实现的。

站点层通过RPC-client调用下游的服务层RPC-server时,RPC-client中的连接池会建立与下游服务多个连接,当服务成为瓶颈的时候,只要增加服务器数量,新增服务部署,在RPC-client处建立新的下游服务连接,就能扩展服务层性能,做到理论上的无限高并发。如果需要优雅的进行服务层自动扩容,这里可能需要配置中心里服务自动发现功能的支持。

4、数据层的水平扩展
a、安装范围水平拆分

在这里插入图片描述
不足是:

(1) 请求的负载不一定均衡,一般来说,新注册的用户会比老用户更活跃,大range的服务请求压力会更大;

b、安装哈希水平拆分

在这里插入图片描述
不足是:

(1)不容易扩展,扩展一个数据服务,hash方法改变时候,可能需要进行数据迁移;

四、水平拆分和主从同步的对比

1、水平拆分

通过水平拆分扩展数据库性能:

(1)每个服务器上存储的数据量是总量的1/n,所以单机的性能也会有提升;

(2)n个服务器上的数据没有交集,那个服务器上数据的并集是数据的全集;

(3)数据水平拆分到了n个服务器上,理论上读性能扩充了n倍,写性能也扩充了n倍(其实远不止n倍,因为单机的数据量变为了原来的1/n);

2、主从同步

通过主从同步读写分离扩展数据库性能:

(1)每个服务器上存储的数据量是和总量相同;

(2)n个服务器上的数据都一样,都是全集;

(3)理论上读性能扩充了n倍,写仍然是单点,写性能不变;

发布了128 篇原创文章 · 获赞 0 · 访问量 2506

猜你喜欢

转载自blog.csdn.net/qq_41134008/article/details/105481863