1.事务的性质和分类
1.1事务的性质
**1.原子性:**事务是一个不可分割的工作单位,事务中包括的诸操作,要么不做,要么都做
**2.一致性:**事务从一个状态变更到另外一个状态,事务的中间状态不被观察到
**3.隔离性:**每个事故之间互不影响
**4.持久性:**一个事务的执行不被起亚事务干扰,一个事务内部的操作和使用的数据对并发的其他事务是隔离的。并发执行的两个事务之间互不干扰
1.2事务的分类
本地事务:
操作单一的数据库,事务单元由 开始事务到结束事务,
**弊端:**当一个事务处理海量数据,高并发压力,需要对项目拆分
分布式事务:
事务分布在不同的服务器中,要求不同的服务薇要么都成功,要么都失败,叫做分布式事务。
2.分布式事务
2.1使用场景
1.多数据源:数据分布在多个数据库,
2.多服务场景:多个服务,订单服务,库存服务,积分服务
2.1分布式事务模型(-X/OPEN)
DTP事务模型:
应用程序(AP 定义事务边界,事务开始和结束);资源管理器(RM 任何用来存储服务的数据库);事务管理器(TM监控事务进度,负责事务提交,回滚);通信资源管理器协议(CRM负责事务模型之间的通信协议);通信协议
**XA规范:**定义TM和RM交互接口的规范(事务注册,开始,回滚,事务结束)
**二阶段提交协议(2PC):**将提交分为两个阶段,,AP先发送请求给TM,TM在询问RM数据库是否准备好接受数据,当TM接受RM数据库反馈准备之后,在发送信息给RM。XA规范对其进行了优化。
**三阶段提交(3PC) :**第二节点(2PC)的改进版本,引入两个改动点,防止阻塞,但是不能完全解决阻塞问题:
1.超时机制,在协调者和参与者之间引入
2.在第一阶段和第二阶段插入一个准备阶段,保证在最后提交的阶段之前各参与节点的状态一致,3PC 把2PC 再次一分为二,三阶段提交就有 CanCommit,PreCommit,DoCommit