一、分布式事务最终一致性思想
如果生产者投递消息到MQ服务器成功
场景1 如果消费者消费消息失败了
生产者是不需要回滚事务。 消费者采用手动ack应答方式 进行补偿机制,补偿的过程中注意 幂等性 问题。
分布式事务中遵循base理论 遵循cpa理论
如何确保生产者发送消息一定发送到MQ消息服务器端成功? confirm机制 确认应答机制
场景2 如果生产者发送消息到MQ服务器端失败
使用生产者重试机制进行发消息
二、分段式事务的补偿机制
分段式事务一般做法就是把需求任务分段式地完成,通过事务补偿机制来保证业务最终执行成功,补偿机制一般可以归类为2种:
1 )定时任务补偿:
通过定时任务去跟进后续任务,根据不同的状态表确定下一步的操作,从而保证业务最终执行成功,
这种办法可能会涉及到很多的后台服务,维护起来也会比较麻烦,这是应该是早期比较流行的做法
2) 消息补偿:
通过消息中间件触发下一段任务,既通过实时消息通知下一段任务开始执行,执行完毕后的消息回发通知来保证业务最终完成;
当然这也是异步进行的,但是能保证数据最终的完整性、一致性,也是近几年比较热门的做法