跨服务事务应该怎样选择方案?
先说出你的答案
定义边界、关键机制、一个反例;P8题再补容量、失败与验证。
查看完整题解
参考回答
直接回答
先定义必须保持的不变量,再评估资源支持的原子提交、Saga补偿或本地事务加Outbox等方案。普通Transactional通常只覆盖选定资源边界,不会天然包住两个数据库与任意HTTP调用。分布式事务方案各有失败、延迟和可用性代价,不能把“最终一致”理解成无需记录和恢复。
讲清原理
Outbox把业务修改和待发送事件写入同一本地事务,再由投递器发送;发送成功与确认记录之间仍可能重复,所以消费者要幂等。Saga把多个本地步骤组织成可补偿流程,补偿不总是数学意义上的完全撤销。
JTA/XA需要参与资源与协调器支持,也有锁持有和故障恢复成本。选型应考虑第三方接口能力,而不是给所有方法换成同一个注解名称。
例子与易错点
订单、扣款与通知要分别说明成功定义、重复处理、超时和人工补偿入口。断网后最终恢复才是关键验证,不能仅看一条全部成功的链路就宣布分布式一致性已保证。
相关题:第 31 题、第 35 题、第 37 题、第 50 题。
和评分标准对照,你能独立回答到哪一步?
自评会安排下一次复习,不保存你的口述内容。
这道题,你掌握得怎么样?
掌握程度由你主动标记,阅读和收藏不会自动改变状态。