【奈学教育】| 公开课RocketMq学习笔记五 、事务消息实现原理剖析
一、业务场景
1、用户下单
1)创建订单+减库存
2、发布或更新商品信息
1)写商品库+更新外置索引
二、分布式事务
1、强一致
1)一致性协议
2、两阶段提交2PC
3、三阶段提交3PC
4、落地方案 => XA规范
1)资源管理器=> 事务参与者
2)事务管理器=> 事务协调者
5、柔性事务
1)最终一致性方案
2)TCC(Try-Confirm-Cancel)
a:尝试执行业务,预留资源
b: 确认执行业务,使用Try阶段资源
c:取消执行业务,释放Try阶段预留的资源
a:尝试执行业务,预留资源
b:确认执行业务,使用Try阶段资源
c:取消执行业务,释放Try阶段预留的资源
3)SAGA 模型
a:一个分布式事务拆分为多个本地事务
b:本地事务都有相应的执行模块和补偿模块
c:事务管理器负责在事务失败时调度执行补偿逻辑
6、事务消息
1)简化了分布式事务模型
2)对业务友好
三、事务消息机制
两阶段提交
a: 发送半消息
b:执行本地事务
c:发送Commit/Rollback
d:提供回查接口
四、事务消息原理
1、半消息主题
1)HALF 消息:RMQ_SYS_TRANS_HALF_TOPIC(临时存放消息信息)
a: 事务消息替换主题,保存原主题和队列信息
b:半消息对Consumer不可见,不会被投递
2)OP 消息:RMQ_SYS_TRANS_OP_HALF_TOPIC(记录二阶段操作)
a:Rollback:只做记录
b:Commit:根据备份信息重新构造消息并投递
3)回查
a:对比HALF消息和OP消息进行回查
4) 缺点
需要业务方提供回查接口,对业务侵入较大。