NOTE
2.8 可靠消息最终一致性实现之本地消息表
1. 本地消息表是什么 我们以下单后增加积分两个事务为例。 下单服务为服务A,积分服务为服务B 1. 服务A执行下单逻辑 2. 服务A下单成功后,发送消息到MQ中 3. 服务B消费消息处理本地事务 4. 服务B执行成功,则更新本地消息表的状态 5. 服务B消息表的状态【可以使用zookeeper解耦
这是历史学习笔记,可能存在过时或不完整的理解。
1. 本地消息表是什么

我们以下单后增加积分两个事务为例。
下单服务为服务A,积分服务为服务B
- 服务A执行下单逻辑
begin transaction;
1.下单
2.插入日志到本地消息表
commit transaction;
- 服务A下单成功后,发送消息到MQ中
- 服务B消费消息处理本地事务
begin transaction;
1.往本地消息表插入消息
2.增加积分
commit transaction;
- 服务B执行成功,则更新本地消息表的状态
- 服务B消息表的状态【可以使用zookeeper解耦】
- 服务A定时扫描消息表,把未处理的消息发送到MQ。
2. 特点
依赖于MQ和数据库。对于失败的消息,发起方可以写个定时调度器轮询再次发送
2PC vs 本地消息表
本地消息表引入了MQ,异步执行分布式事务提高了吞吐量