分布式事务实战方案汇总
1. 最终一致性
1.1 本地事务表 + 轮询补偿
交互流程
- ① commit DB事务提交阶段 本地客户端向DB进行事务提交,此时需要将业务数据和记录消息事务状态的信息表同时实现本地事务,此时标记消息事务状态为UN_SEND未发送或未完成状态,此时MQ未发送
- ② ack DB确认阶段 返回DB事务提交成功或失败状态
- ③ commit MQ事务提交阶段 客户端发起MQ发送请求
- ④ update 本地事务表更新阶段 根据MQ发送结果进行本地消息事务表状态更新,成功则更新为SEND发送成功或发送完毕
- ⑤ MQ补偿 本地消息事务表定时轮询 对未发送成功消息事务进行补偿发送,实现分布式事务的最终一致
场景:重构业务新老系统双写库同步