分布式事务实现方案
数据一致性 | 容错性 | 复杂性 | 性能 | 维护成本 |
---|---|---|---|---|
2PC | 强 | 低 | 中 | 低 |
3PC | 强 | 低 | 高 | 低 |
TCC | 弱 | 高 | 高 | 中 |
本地消息表 | 弱 | 高 | 低 | 中 |
MQ事务 | 弱 | 高 | 低 | 高 |
2PC: Two-phase Commit
3PC: Tree-phase Commit
TCC: Try Commit Cancel,不能完全保证3个方法的执行顺序,需要允许空回滚(Try 未执行 Cancel 执行),需要进行防悬挂控制(Cancel 比 Try 先执行)和幂等控制
本地消息表:异步确保,CAP框架就是这个方案
MQ 事务:RocketMQ支持,RabbitMQ 和 Kafka 不支持
分布式事务实现模式
模式 | 采用方案 |
---|---|
AT | 2PC |
Saga | TCC |
XA | 2PC |
AT:阿里的 Seata 采用该模式,不是业务入侵的
Saga:需要用户根据业务场景实现正向和逆向操作,因此是业务入侵的