如何保证秒杀业务的事务性?
秒杀任务中,在redis中判断秒杀资格,生成订单;订单异步写入数据库。
怎么保证整个流程的事务性呢? 比如订单写入数据库失败,怎么通知redis恢复缓存中扣除的库存。
当通知redis恢复库存的消息,由于网络等原因,redis收不到怎么办?
怎么保证整个流程的事务性呢? 比如订单写入数据库失败,怎么通知redis恢复缓存中扣除的库存。
当通知redis恢复库存的消息,由于网络等原因,redis收不到怎么办?
全部评论
个人看法。
秒杀是很快的动作,基本要求快速返回,所以当写入数据库失败时,其实这时生产者端早已处理完缓存发送消息返回了,缓存回流也没效果,除非你做那种后续发送信息通知用户秒杀失败,不过这种体验很差。
考虑保证订单写入数据库这个操作的完成比较好,而不是在缓存恢复上做文章。要保证订单写入数据库这个操作的话其实就是如何做到消息不丢失,这个网上很多方案。
保证不超卖就行,这些不管了
m
首先保证不超卖,然后就是既然他都抢到了,就不应该恢复库存吧,订单写入数据库失败是消息队列的可靠性问题
m
m
N
m
m
佬,这是黑马点评吗?
用canal配合消息队列?消息队列本来就有失败重试,多试几次总能最终一致性
m
相关推荐
查看8道真题和解析
点赞 评论 收藏
分享
11-11 08:38
贵州师范大学 运营 2024-11-11
在牛客打卡1天,今天也很努力鸭!
产品经理傅立叶:虽然我劝你不用焦虑,但不焦虑是不可能的不过不必过度焦虑,毕竟大部分人都不是特别了解。数据相关可以去做技术岗,也可以做数据分析,再不济还能搞运营,路子多嘞慢慢了解就是了~
点赞 评论 收藏
分享
10-31 13:24
浙江工业大学 嵌入式硬件工程师 点赞 评论 收藏
分享