请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

请问老师,分布式队列该如何实现呢?该把哪些信息放到redis当中,还是说redis只起到一个计数的作用,如果redis中数量大于2000,自旋?

正在回答 回答被采纳积分+3

1回答

龙虾三少 2019-06-12 20:19:18

redis做分布式队列然后用自旋的方式做是一种方案,但是自选的周期设置是个头疼的问题,太短影响cpu,太长了又怕耽误业务,这里推荐给大家一个比较好的方式,自己实现一个中间件队列,其内部的原理就像线程池的队列一样,然后通过类似dubbo rpc请求的方式将请求发给队列,再由队列二段式的发给服务提供方,这样服务提供方和消费方都像是再处理一个rpc请求一样,具体的平滑过程给中间件队列消化掉了,这个中间件队列本身无状态,可以水平扩展

0 回复 有任何疑惑可以回复我~
  • 提问者 慕粉7499463 #1
    大概的意思,是服务提供方发送rpc请求到远程队列,队列将rpc请求入队,出队的时候再将rpc请求返回,然后再执行业务逻辑?
    回复 有任何疑惑可以回复我~ 2019-06-12 20:57:18
  • 龙虾三少 回复 提问者 慕粉7499463 #2
    出队的时候调用真正的rpc远程提供方,收到消息后返回给rpc服务调用方
    回复 有任何疑惑可以回复我~ 2019-06-12 20:58:49
  • 提问者 慕粉7499463 回复 龙虾三少 #3
    那也就是说controller层的createOrder方法要拆分成两个服务,具体的减库存逻辑就是服务提供方了。服务的调用方和提供方是同一个线程?  还有“这个中间件本身无状态,可以水平拓展”是什么意思呢?
    回复 有任何疑惑可以回复我~ 2019-06-12 21:16:53
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信