从构建分布式秒杀系统聊聊WebSocket推送通知
前言
秒杀架构到后期,我们采用了消息队列的形式实现抢购逻辑,那么之前抛出过这样一个问题:消息队列异步处理完每个用户请求后,如何通知给相应用户秒杀成功?
场景映射
首先,我们举一个生活中比较常见的例子:我们去银行办理业务,一般会选择相关业务打印一个排号纸,然后就可以坐在小板凳上玩着手机,等待被小喇叭报号。当小喇叭喊到你所持有的号码,就可以拿着排号纸去柜台办理自己的业务。
这里,假设当我们取排号纸的时候,银行根据时间段内的排队情况,比较人性化的提示用户:排队人数较多,您是否继续等待?否的话我们可以换个时间段再来办理。
由此我们把生活场景映射到真实的秒杀业务逻辑中来:
- 我们可以把柜台比喻成商品下单处理逻辑单元
- 拿到排号纸说明你进入相应商品处理队列
- 拿到排号纸的请求直接返回前台,提示用户抢购进行中
- 排号纸进入队列后,等待商品业务处理逻辑
- 小喇叭叫到自己的排号相当于服务端通知用户秒杀成功,这时候可以进行支付逻辑
- 那些拿不到票号的同学,相当于队列已满直接返回秒杀失败
- https://yq.aliyun.com/articles/614326?utm_content=m_1000007223