采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
1、库存redis和数据库异步,那产品展示也中的库存数字是用redis中的?还是数据库中的?2、目前redis和provider消息是符合一致性了,那如果消息consumer处理失败,依旧无法保证redis和数据库最终事务一致?
关于展示问题,我建议都是按照redis中取,取不出来再取数据库的,若数据库内数据更新,比如下单成功,则发送异步消息去清除redis数据,这样下次过来就可以走数据库拿到正确的数据了,当然也会有扣减库存没有清redis快,但业务上对库存还剩多少件展示层面没必要那么实时
consumer处理失败分为两种情况:
程序退出或网络问题等,这种mq不会被标记为消费成功,mq会重试直到成功为止
无论重试多少次都不能consume成功的消息,目前情况下业务是先扣redis的,因此不会又这种情况
那跳出课程项目,如果实际遇到consumer存在消费失败的业务场景,这个时候怎么处理?发消息给provider补偿吗?
使用mq这种情况只能保证消费端处理成功或者处理不成功也可以忽略的场景 没有办法回退provider 这种需要靠业务设计去规避
登录后可查看更多问答,登录/注册
理解高流量电商网站性能构建思路 用高逼格技术解决性能提升问题
1.8k 11
1.3k 10
1.6k 9
1.2k 9
1.1k 8