我认为 订单和商品模块要求强一致(订单创建成功,则库存即刻减少,反之亦然)分俩种情况讨论: 订单内部调用商品模块 开始事务-->生成订单-->调用减少库存-->提交事务。此时,保证了强一致性 有另一个服务C从外部调用 订单 和 商品 商品服务需要提供回滚接口(库存+操作),总体上调用顺序如下: 调用商品服务-->调用订单服务(这个可以多次尝试)-->失败调用回滚接口-->提示用户失败 第二种情况已经涉及到分布式事务的相关问题了,此时如果你认为不要求强一致性,可以去查看相关资料,你用MQ也可以考虑我提议的调用顺序,先减库存,保证有库存,再发消息生成订单,通过多次重试,持久化消息等机制保证订单创建成功
我认为 订单和商品模块要求强一致(订单创建成功,则库存即刻减少,反之亦然)
分俩种情况讨论:
订单内部调用商品模块
有另一个服务C从外部调用 订单 和 商品
第二种情况已经涉及到分布式事务的相关问题了,此时如果你认为不要求强一致性,可以去查看相关资料,你用MQ也可以考虑我提议的调用顺序,先减库存,保证有库存,再发消息生成订单,通过多次重试,持久化消息等机制保证订单创建成功