20190712 - 高并发&秒杀

一、秒杀痛点

所有人都会在同一时刻去并发请求,瞬间流量暴增,数据库压力暴增,读写严重不平衡,锁非常严重。

二、优化方向

(1)、将请求拦截在系统上游,不要落到DB上。
(2)、充分利用缓存,因为秒杀一般都是写少读多的场景。

三、具体的优化

一般的流程都是: 浏览器 --》站点 --》服务层 --》数据库
1、浏览器拦截:可限制用户在X秒之内只能真正往后台请求一次;
2、站点拦截:对用户的请求进行计数和去重,如果有uid的话,同一个uid,限制访问频率,设置缓存,x秒之内的所有请求都返回缓存数据。
3、服务层来拦截:对于写请求,做请求队列,每次只透有限的写请求去数据层,比如1w部手机,只放1w个请求到DB;
对于读请求,缓存来扛。
或者,可以做一些业务优化,比如分段分时间获取,或者,将数据粗粒度化,比如,缓存抢到还是没抢到即可,余票倒是没有那么重要了,也可以针对一些业务做成异步处理。
4、数据库层:上面会拦截掉很多请求,实际落在DB上也就没有多少了。
所以,浏览器做限流,站点做限流,做页面缓存,服务器通过做写请求队列控制流量,做数据缓存,数据库无压力。

更详细的可参考如下链接:
https://blog.csdn.net/andong154564667/article/details/82153104

原创文章 88 获赞 21 访问量 3万+

猜你喜欢

转载自blog.csdn.net/cfy1024/article/details/95650105