一 各种方案对比
2PC | TCC | 可靠消息最终一致性 | 最大努力交付 | |
---|---|---|---|---|
一致性 | 强一致性 | 最终一致(偏强) | 最终一致 | 最终一致 |
吞吐量 | 低 | 中 | 高 | 高 |
实现复杂的 | 易 | 难 | 中 | 易 |
二 如何选各种方案
- 需要与其它系统对接的:最大努力交付
- 必须强一致的:2PC、TCC(其实一致性也挺强的)
- 必须强一致但吞吐量要求较高的:TCC
- 必须强一致但要求实现简便又不追求吞吐量的:2PC
- 一致性要求可以是最终一致的:可靠消息最终一致性
- 一致性要求可以是最终一致的但是业务不核心的:最大努力交付
TIPS:
Seata虽然是基于2PC,但又与传统2PC有所不同,特别是分支事务的提交timing。详见:分布式事务(第03篇)分布式事务解决方法-2PC(两阶段提交)