工程系统之分布式事务

Posted by BX on Mon, May 5, 2025

本地消息表实现跨库事务的链式一致性范式总结

核心观点

1. 本地消息表方案的本质是“链路分层 + 层间消息传递 + 每层自闭环”

  • 每个服务或节点:
    • 保证本地业务数据入库 + 消息入库事务成功;
    • 然后异步负责将消息可靠投递到下一层;
  • 投递完成即视为当前层处理完毕,不追踪下一层结果。

2. 每层都遵循“我做完 + 我通知”的局部一致性协议

  • 接收到消息的一方:
    • 只需要保证“我能处理成功”;
    • 并确保“我也能向下游继续发消息”;
  • 不要求同步知道整条链路都成功 —— 所以能抗高并发、松耦合。

3. 全局一致性靠最终审计补偿 / 重放机制

  • 系统中需存在一个独立的“状态检查服务”:
    • 定期巡检“哪些子任务没完成”;
    • 如果超时未达一致,则触发告警、自动补偿或人工介入。

理论总结

本地消息表解决跨库事务的方式不是“一锤子原子提交”,而是通过每一层只对自己的业务 + 消息投递负责,再通过可靠链路 + 幂等消费 + 最终审计实现全链路的最终一致。

高质量面试表达模板

“我们使用本地消息表的方式实现跨库事务,本质上是链式架构。每一层只负责本地数据入库和可靠消息发送,不同步等待下游执行。消息表与业务写入同库同事务,确保当前逻辑和消息状态一致。链路下游接收后继续按相同模式处理,通过全链路幂等、补偿任务或状态巡检,最终保证整个链条的最终一致。这种方式牺牲了原子性,但极大提升了系统的解耦性、扩展性和可用性。”