如何保证秒杀业务的事务性?

秒杀任务中,在redis中判断秒杀资格,生成订单;订单异步写入数据库。
怎么保证整个流程的事务性呢? 比如订单写入数据库失败,怎么通知redis恢复缓存中扣除的库存。
当通知redis恢复库存的消息,由于网络等原因,redis收不到怎么办?
全部评论
个人看法。 秒杀是很快的动作,基本要求快速返回,所以当写入数据库失败时,其实这时生产者端早已处理完缓存发送消息返回了,缓存回流也没效果,除非你做那种后续发送信息通知用户秒杀失败,不过这种体验很差。 考虑保证订单写入数据库这个操作的完成比较好,而不是在缓存恢复上做文章。要保证订单写入数据库这个操作的话其实就是如何做到消息不丢失,这个网上很多方案。
3
送花
回复
分享
发布于 05-03 22:42 广东
保证不超卖就行,这些不管了
1
送花
回复
分享
发布于 05-02 17:21 湖南
滴滴
校招火热招聘中
官网直投
m
点赞
送花
回复
分享
发布于 04-29 13:05 江苏
m
点赞
送花
回复
分享
发布于 04-29 13:26 辽宁
N
点赞
送花
回复
分享
发布于 04-29 13:28 山东
m
点赞
送花
回复
分享
发布于 04-29 14:19 广东
m
点赞
送花
回复
分享
发布于 05-01 11:51 辽宁
佬,这是黑马点评吗?
点赞
送花
回复
分享
发布于 05-01 11:57 湖北
用canal配合消息队列?消息队列本来就有失败重试,多试几次总能最终一致性
点赞
送花
回复
分享
发布于 05-01 15:30 天津
m
点赞
送花
回复
分享
发布于 05-08 21:02 湖北

相关推荐

5 54 评论
分享
牛客网
牛客企业服务