外观
一句话答案
强一致用 2PC/XA(性能差),最终一致用事务消息/TCC/SAGA/本地消息表,根据业务场景权衡一致性和性能。
核心要点
| 方案 | 一致性 | 性能 | 侵入性 |
|---|---|---|---|
| 2PC/XA | 强 | 低 | 低 |
| TCC | 最终 | 高 | 高 |
| SAGA | 最终 | 高 | 中 |
| 消息表 | 最终 | 中 | 中 |
| 事务消息 | 最终 | 高 | 低(推荐) |
追问与易错
追问方向:
- 最终一致能接受多久延迟?
- 怎么选强一致还是最终一致?
- 对账机制怎么设计?
易错点:
- ❌ 分布式一定不能强一致——小范围可以
- ❌ 最终一致就是慢慢一致——需有明确补偿机制
💡 记忆锚点
一致性光谱:左端强一致(2PC/XA,像银行柜台当面转账,慢但绝对准确),右端最终一致(事务消息/TCC/SAGA,像银行转账到账有延迟但最终正确)。大部分业务站右边就够,只有资金类核心数据才需要站左边,别忘了最终兜底都靠对账。