关注
(秒杀问题中的一个方向,不一定是面试官真问的)
订单系统 和 商品库存系统 可能不在一个数据库或一个服务器上,不能用数据库事务完成,你必须自己保证两个系统的一致性,也就是要么订单创建成功、库存扣减也成功,要么两者都失败。如果库存扣完了,但订单创建失败,那你要保证库存加回来、且订单一定不会创建成功(至少之后要删掉它)(因为要及时响应用户,一直等订单服务响应是不可能的)。这个是典型的分布式事务问题。
难点在于,如果请求订单服务超时(不是直接返回插入失败),服务器短时间没法知道请求是失败了(订单不会创建成功),还是请求没有失败、只是被延迟了(订单之后又成功更新了)。
最简单的方法应该是,服务器重试几次、允许等一小段时间,如果还是超时或请求失败,就直接返回下单失败,撤销库存更新;然后开一个定时任务定期给订单服务发补偿信息(删除订单或标记订单无效,如果是库存服务超时就是加库存)直到这个消息被成功处理。
服务器的插入请求和补偿请求必须满足幂等性:重发插入请求不会导致一个订单被插入多次;重复发补偿不会导致订单被删多次(对库存服务就是库存被加多次)。并且要注意在订单真的创建后,才执行这个补偿。
查看原帖
5 4
相关推荐
点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
- 1... 工作半年后更确定:我们依然不欠优绩主义什么7234
- 2... 我建了一个分享实习业务的仓库,欢迎大家贡献哦2115
- 3... 岁末论道:谁才是牛客 2025 最强修仙者?1982
- 4... #牛客2025仙途报告#居然是五颗星1850
- 5... 一个程序员的自救书|从酒吧陪玩DM到上岸大厂1761
- 6... 【2025-年终总结】25届毕业生果果牛这一年~1624
- 7... 仙途报告1431
- 8... 腾讯 微信支付一面面经1377
- 9... 关于我在某小厂实习半个月后在圣诞节当天被开除1112
- 10... 壕壕壕,京东发7个月年终,此生要做东孝子1077
正在热议
更多
# 牛客2025仙途报告 #
10519次浏览 219人参与
# 我们是不是被“优绩主义”绑架了? #
1147次浏览 53人参与
# 2025年终总结 #
189803次浏览 3197人参与
# 找工作,行业重要还是岗位重要? #
86810次浏览 1735人参与
# 你面试体验感最差/最好的公司 #
27161次浏览 454人参与
# 今年你最想重开的一场面试是? #
10148次浏览 118人参与
# 礼物开箱Plog #
2791次浏览 99人参与
# 为了秋招你都做了哪些准备? #
29455次浏览 524人参与
# 一人说一个提前实习的好处 #
19411次浏览 287人参与
# 秋招落幕,你是He or Be #
20676次浏览 361人参与
# 机械人晒出你的简历 #
147800次浏览 883人参与
# 重来一次,你会对开始求职的自己说 #
9241次浏览 234人参与
# 工作中听到最受打击的一句话 #
11445次浏览 169人参与
# 实习没事做是福还是祸? #
22106次浏览 327人参与
# 工作两年,想和老板谈涨薪怎么说 #
39054次浏览 176人参与
# 离家近房租贵VS离家远但房租低,怎么选 #
13902次浏览 130人参与
# 25届暑期实习 #
1039109次浏览 20591人参与
# 实习的内耗时刻 #
212546次浏览 1578人参与
# 拿到offer之后,可以做些什么 #
81309次浏览 430人参与
# 这些公司卡简历很严格 #
82607次浏览 375人参与
三奇智元机器人科技有限公司公司福利 70人发布