• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

抢购时,用异步队列处理下单,那怎么实时把下单结果通知用户呢?

php 搞代码 4年前 (2022-01-23) 17次浏览 已收录 0个评论
文章目录[隐藏]

抢购时,用异步队列处理下单,那怎么实时把下单结果通知用户呢?

回复内容:

抢购时,用异步队列处理下单,那怎么实时把下单结果通知用户呢?

client端用js轮询一个接口,用来获取处理状态

抢购最重要的是要保证库存数据的强一致性,抢购的瞬时流量非常大,如果使用MySql等一些关系型数据库可能会扛不住这方面的压力。一般会结合缓存中间件进行处理,例如redis。抢购开始前,将商品和库存数据同步到redis中,所有的抢购操作都在redis中进行处理,后台开启一个异步任务,定时的将库存数据刷到数据库中。
跟着开始对订单进行付款,由于流量较大,第三方支付系统本身也对调用端的应用限制流量,所以你这边所说的应该是我接下来需要描述的。
这里必然要使用消息队列(也就是你所说的异步队列),可以参考淘宝双11的限流措施,为了保护系统不受高流量的冲击而导致系统崩溃的问题,消息队列做了一层缓冲保护,系统需要设计一个窗口模型,窗口模型会实时的刷新用户办理手续的状态。
例如,用户下单之后准备去付款,这个时候会跳到办事大厅的服务2本文来源gao*daima.com搞@代#码&网6

搞gaodaima代码

窗口,如果此时窗口都满了,也就是消费者的数量达到上线了,那么需要用户开始排队,系统可以通过弹出等待窗口,让用户等待一下,一旦有空闲的线程释放出来,用户就可以开始支付下单。
上面的是以拍下减库存的模型进行说明,如果你们设计的系统是付款减库存,稍微会有些出入,但是同样也需要这样的窗口需要告知用户状态,及时用户付款成功,虽然没及时把状态返回给用户,用户能够通过一个页面及时查看到他的窗口状态就可以了。


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:抢购时,用异步队列处理下单,那怎么实时把下单结果通知用户呢?
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址