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