如何避免“扣减了积分,但是没有成功创建订单”? - 分布式事务相关

2022-01-15 21:51:44 +08:00
 JasonLaw

假设现在有商城和会员两个服务,用户在商城使用积分购买商品,但是用户的积分是存储在会员服务的。

现在的流程如下:

扣减积分发生在会员服务中,创建订单及修改订单状态为已支付发生在商城服务中,所以会出现“扣减了积分,但是没有成功创建订单”这种情况。

应该怎么解决这个问题呢?

4108 次点击
所在节点    程序员
23 条回复
x66
2022-01-17 17:54:54 +08:00
@TUNGH 事实上你的方案没有解决扣减积分和修改订单状态不在同一个事务里的问题。
如果扣减积分成功,修改订单状态失败,还是需要一个补偿机制。
TUNGH
2022-01-18 08:03:33 +08:00
@x66 嗯嗯,确实
vibbow
2022-01-19 02:26:15 +08:00
先扣积分,然后创建订单。

之后检查订单是否创建成功,失败的话退回积分。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/828494

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX