分布式事务笔记

事务 ACID 特性

事务具有 4 个特性:原子性、一致性、隔离性、持久性。
1、Atomicity(原子性):一个事务中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被恢复到事务开始前的状态,就像这个事务从来没有执行过一样。
2、Consistency(一致性):在事务开始之前和事务结束以后,数据库的完整性没有被破坏。完整性包括外键约束、应用定义的等约束不会被破坏。
3、Isolation(隔离性):数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。(所谓一致性是数据库处理前后结果应与其所抽象的客观世界中真实状况保持一致。这种一致性是一种需要管理员去定义的规则。管理员如何指定规则,数据库就严格按照这种规则去处理数据。)
4、Durability(持久性):事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。

分布式事务实现方案

数据一致性 容错性 复杂性 性能 维护成本
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
posted @ 2021-12-28 11:30  yingcheng1  阅读(25)  评论(0编辑  收藏  举报