02 系统面临的现实问题:日益增加的并发与同步响应延迟

Posted 鮀城小帅

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了02 系统面临的现实问题:日益增加的并发与同步响应延迟相关的知识,希望对你有一定的参考价值。

订单架构如下:

1. 系统压力来源之一: 日益增加的并发访问量

在当前的案例中,每天几十万的订单量,对应了百万次下单操作和订单查询等操作,如果将其均分到5个小时内,也就是每秒几十次请求而已,但账不是这么算的。

电商系统的访问量受两方面影响:一个是用户习惯,一个是平台的营销策略;前者决定了平均每一天用户访问的最高峰,也就是前面说过的2000/s的请求,后者决定了大促当前的某个时间段内每秒1w请求的结果。

总结一下,就是真实的系统访问负载应该是一个半圆形的曲线:

如图,中间部分是访问高峰期,那么平时的峰值可能达到2000~3000/s的样子。这里假设订单系统由8台服务器,每台4核8G

再添加一台数据库为16核32G的配置

按照以上的配置,8台订单服务器扛住每秒2000的请求是没问题的,同样的数据库服务器也能轻松扛住2000~4000的请求。

压力的来源:公司的业务时日益增长的,也就是说用户会越来越多,订单量也会增多,同样的高峰期的请求量也在日渐增长,一旦增长到高峰期每秒6000个请求,那么8个订单系统还能轻松扛住,但是数据库就不一定了。16核32G的最佳负载是4000/s,再高就有宕机的风险了。而这是一个亟需解决的问题:日益增加的并发请求。

2.系统压力来源之二:同步响应延迟

上图中,第8个步骤里,除了发优惠券、红包、push短信通知外,还要做很多事。比如:支付后要对预占的库存做实际扣减落库;支付成功后,要更新订单状态等。

在我之前做过的电商小程序里,在下订单时就预扣减库存了,就需要在支付失败后做库存归还、优惠券归还等操作。在高峰期或大促期间,数据库的负载是很高的,会导致服务器磁盘、CPU、IO的负载都很高,进而导致数据库SQL执行性能下降。所以高峰期,一个TPS可能要耗时几秒,然后在界面上有个圈一直在刷新进度,直到几秒后才提示支付成功或失败。这种体验相当不好。所以这是亟需解决的第二个问题。

总结:着眼于长远打算,现在系统QPS没有那么高,如果一旦QPS上来,那么会导致硬件方面性能下降,进而影响数据库SQL性能等,最后导致系统挂了。

以上是关于02 系统面临的现实问题:日益增加的并发与同步响应延迟的主要内容,如果未能解决你的问题,请参考以下文章

极验高并发验证服务背后的技术实现

29 | 聊聊性能测试的基本方法与应用领域

学习Redis

你一定要掌握这种缓存读写策略,开发必备

java处理高并发高负载类网站的优化方法

性能压测时,并发压力增加,系统响应时间和吞吐量如何变化