将事务拆分为三个阶段:
plaintext
业务服务A 协调者 业务服务B
+-----+ +-----+ +-----+
| Try |-------->| | | |-------->| Try |
+-----+ | | | | +-----+
| | | |
| | | |
+-----+ | | | | +-----+
|Confirm|<- - -| | | |- - ->|Confirm|
+-----+ | | | | +-----+
| | | |
| | | |
+-----+ | | | | +-----+
|Cancel|<- - - | | | |- - ->|Cancel|
+-----+ | | | | +-----+
维度 | 2PC | 3PC | TCC |
---|---|---|---|
一致性级别 | 强一致性 | 最终一致性(弱一致) | 最终一致性 |
阻塞程度 | 全程同步阻塞 | 减少阻塞 | 无长时间阻塞 |
实现层面 | 数据库 / 中间件层面 | 协议层面 | 应用服务层面 |
性能 | 低(锁资源时间长) | 中 | 高(无数据库锁) |
复杂度 | 低 | 高 | 高(需编写补偿逻辑) |
典型应用 | MySQL XA、Seata AT | 理论研究 | 支付宝分布式事务、Seata TCC |
场景 | 最优协议 |
---|---|
强一致性、低并发 | 2PC |
高可用、弱一致性 | 3PC(慎用) |
高性能、跨服务事务 | TCC |
最终一致性、高吞吐量 | MQ + 本地事务 |
分布式一致性协议的选择需在一致性、可用性、性能之间权衡。现代分布式系统更倾向于通过业务层设计(如 TCC)和异步补偿机制(如 Saga)来平衡这三者的关系。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。