这是我参与2022首次更文挑战的第24天,活动详情查看:2022首次更文挑战
前言
我们都知道秒杀开始的那一瞬间的流量是非常大的,因为全民参与的缘故,这么大的流量可能会把整个系统冲垮,导致用户无法使用。那么我们肯定要对系统进行保护的,因为我们服务器的配置是有限的,那么有限的服务器配置下,我们就能得到系统的处理能力的上限在哪里。那么当秒杀活动的用户量超过我们的服务器处理能力的上限时,我们要怎么处理呢?这时候就要使用削峰限流了。
削峰限流策略
削峰限流的策略顾名思义,就是将流量控制到我们服务器处理的能力的范围内,保证系统的稳定性,那么有以下两种策略。
排队机制
在现实生活的活动中,当参与的人数过多的话,就会有人组织排起长队,保证活动的有序进行,那么切换回秒杀上,我们的参与的用户量过多时,我们也需要加入排队的机制,让用户的请求一个一个的进来,那么排队的实现的话,大家第一个想到的应该就是消息队列了。使用消息队列,可以把同步的请求,切换成异步推送,让大流量的在队列的一端被拦截下来,另一端有序的处理消息推送的请求。这样就可以把流量洪峰限制住,防止直接冲击核心服务。
答题验证机制
秒杀系统肯定会有所谓的黄牛来抢,黄牛可能会使用脚本来进行抢购,大家都知道计算机的操作速度肯定比人快的多,那如果不对脚本进行控制,真正的用户根本抢购不到秒杀商品,这样会让系统对用户的口碑造成损害,所以我们会对秒杀商品抢购进行答题验证机制,只有题目正确了,才可以进行下单操作。题目的要求尽量是人脑可以很容易回答,但是计算机很难回答的,图片上增加无规则的修饰图案,题目之间不存在关联性,每次请求的题目尽可能的保证不一样。这样就可以让请求的时间延长,让用户流量有序的进入系统,降低瞬时流量的冲击。
总结
我们今天讨论了当用户量超过了我们服务器处理能力的瓶颈时,我们需要如何限制,如何处理,保护我们服务的稳定性。