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