分布式事务解决方案
业务场景描述
下单时,需要扣减库存和生成订单,两个操作要求确保同时成功或同事失败,需要分别调用不同的服务便形成了分布式事务问题
解决方案
采用弱一致性的解决方案
1.重试机制
第一步执行成功后,将生成订单操作发送到消息队列中,消费生成订单消息,如果失败,采用重试机制,重试后依然失败,放入死信队列中,人工介入
2.回滚
生成订单失败时,则调用库存更新接口进行回滚
3. 本地消息表
解决发送MQ时机器宕机
使用本地事务当扣减库存成功时,将消息发送到一张消息表中,然后开启定时任务去将消息表中的数据发送到MQ处理