微服务 - 分布式事务
分布式事务方案选型
- 强一致性:两阶段、三阶段提交协议
- 最终一致性:TCC、可靠消息投递模式、补偿对账模式
可靠消息投递模式(可靠事件模式)
方案特点:正反向消息机制,补偿=》重新投递
步骤原理:
1、生产者服务插入跨DB事务消息,到本地数据库消息表
2、生产者服务发送消息到消息队列
3、消费者服务从消息队列获取消息,ACK确认从消息队列移除消息
4、插入本地判重表,执行完成,再次发送返回消息给消费队列
5、生产者取消费者ACK消息消息
6、更新本地消息表消息状态已完成
7、本地定时任务取超时消息,重新发送
通用异步架构设计
两个MQ消费端作业: 消费端消费消息,生产者接受处理完成的消息
一个定时补偿作业:扫描超期消息,重新发送
1、生产者:
实时接口调用:基于不同微服务(跨DB) 记载异步本地消息,记载请求事件
消费者确认消息作业:取MQ完成消息,更新本地消息表完成
定时任务:定时取生产者消息过期任务,重新发送消息;
2、消费者:
消费者消费MQ作业:轮训MQ消息,如果本地判重表不存在,插入本地判重表和本地线程池
线程池定时任务根据不同的请求事件类型,不断调用消费者不同业务服务并行消费;
消费完发送消费完成消息给生产者