消息队列处理秒杀/拼团活动的高并发问题

1、消息队列(以下简称MQ)天生就是处理高并发的有力工具,因为他可以把一个完整的流程拆为多部分,并发进行,或者不是很重要的步骤模块延迟进行。大家所熟悉的是消息队列在大基数用户项目的注册模块和电商项目的订单模块运用的比较多,淘宝就是最好的案例。但是这里并不是想要介绍这个,而是想简谈一下消息队列处理拼团秒杀活动的高并发的运用:

【1】秒杀活动有个特点,就是在某个特定的时间点,并发请求量特别大,峰值远远高于平常,所以秒杀应用服务器就有可能承受不了这么大的并发而导致系统崩溃;

【2】这个时候就可以考虑使用MQ,MQ在这里可以起到削减高峰流量的作用,实现场景是搭一个MQ服务器,挡在秒杀应用服务器前面,承受这个大量的请求数,然后再把符合条件的前多少个请求发送到应用服务器,去正常消费库存,MQ在这个流程中做了三件事:收集请求-->筛选过滤请求-->发送符合条件请求/返回秒杀失败信息给不符合条件的请求者,其中"返回秒杀失败信息给不符合条件的请求者"这个可以最后来做,往大的方向来说就是转发请求;

【3】举个实际的例子,我配置了一个秒杀活动,活动配置是开始时间为第二天早上八点,名额数为100个人。到了第二天7点50多分,估计好人都在守着手机等着抢秒杀商品,所以到了准时8:00这个点,所有人一拥而入,1000个人同时进来枪秒杀的商品,如果直接访问秒杀应用服务器,可能会让系统受不了这么高的并发直接服务器崩溃,但是有了消息队列的话,可以将这1000个人先挡住,收集他们的信息,然后将符合条件的前100个人的请求发给秒杀服务器,从而达到削减并发高峰和筛选的作用,以下是实现方案图:

消息队列处理秒杀高并发流程图

猜你喜欢

转载自blog.csdn.net/qq_35860138/article/details/81872911
今日推荐