标准答案

  1. 跨库强一致事务需要协调者、参与者、超时与恢复协议,任何网络或节点故障都可能放大等待和不可用。
  2. 先检查业务是否真的需要多个库在同一瞬间提交,许多流程只需要状态可追踪、最终收敛和可补偿。
  3. 常见方案是在本地事务中写业务数据和外发事件,再可靠发布给下游,消费者通过幂等记录处理重复。
  4. 状态机应区分已受理、处理中、成功、失败和待补偿,避免把异步过程伪装成同步成功。
  5. 对无法补偿的资金、合规或库存边界,应重新划分数据所有权或把关键操作收敛到同一事务资源。

题目解析

两阶段提交在理论上能提供强协调,但实际系统还要面对锁住的资源、协调者故障、参与方超时和运维诊断。把它作为默认方案会让每个服务依赖其他服务的可用性。

最终一致性不是“以后再说”。它要求事件有唯一标识、投递可重试、消费者幂等、失败可观测、补偿有业务语义,并能对账发现遗漏。

常见误区

  • 为了避免设计补偿,直接用跨库事务把外部 RPC、消息和数据库绑在一起。
  • 宣称最终一致,却没有状态查询、重试、死信和人工处理路径。

作者信息