NOTE

2.8 可靠消息最终一致性实现之本地消息表

1. 本地消息表是什么 我们以下单后增加积分两个事务为例。 下单服务为服务A,积分服务为服务B 1. 服务A执行下单逻辑 2. 服务A下单成功后,发送消息到MQ中 3. 服务B消费消息处理本地事务 4. 服务B执行成功,则更新本地消息表的状态 5. 服务B消息表的状态【可以使用zookeeper解耦

分布式系统更新于 historical

这是历史学习笔记,可能存在过时或不完整的理解。

1. 本地消息表是什么

我们以下单后增加积分两个事务为例。

下单服务为服务A,积分服务为服务B

  1. 服务A执行下单逻辑
begin transaction;

1.下单
2.插入日志到本地消息表

commit transaction;
  1. 服务A下单成功后,发送消息到MQ中
  2. 服务B消费消息处理本地事务
begin transaction;

1.往本地消息表插入消息
2.增加积分

commit transaction;
  1. 服务B执行成功,则更新本地消息表的状态
  2. 服务B消息表的状态【可以使用zookeeper解耦】
  3. 服务A定时扫描消息表,把未处理的消息发送到MQ。

2. 特点

依赖于MQ和数据库。对于失败的消息,发起方可以写个定时调度器轮询再次发送

2PC vs 本地消息表

本地消息表引入了MQ,异步执行分布式事务提高了吞吐量

本地消息表实现

RockerMQ事务消息

RocketMQ事务消息.md

3. 参考