分布式事务
所属分类 architecture
浏览量 1470
分布式系统基础理论
CAP,Consistency Availability Partition tolerance
三者不能同时满足
CP 架构
AP 架构
BASE,Basically Available Soft State Eventual Consistency
基本可用 软状态 最终一致性
分布式事务协议
X/Open XA 协议
事务管理器(Transaction Manager)
资源管理器(Resource Manager)
2PC 二阶段提交协议 Two-phase Commit
投票阶段 提交阶段
二阶段提交优点:尽量保证了数据的强一致,但不是 100% 一致。
二阶段提交缺点:
单点故障,由于协调者的重要性,一旦协调者发生故障,参与者会一直阻塞,尤其是在第二阶段,协调者发生故障,所有的参与者都处于锁定事务资源的状态中,无法继续完成事务操作。
同步阻塞
数据不一致,在第二阶段中,当协调者向参与者发送提交事务请求之后,发生了局部网络异常或者在发送提交事务请求过程中协调者发生了故障,这会导致只有一部分参与者接收到了提交事务请求。
3PC:三阶段提交协议 Three-phase commit
三阶段提交的三个阶段:
CanCommit
PreCommit
DoCommit
基于 2PC/XA 协议实现的 JTA
JTA(Java Transaction Manager)
Transaction Manager: 开启,回滚,获取事务。begin(),rollback()
XAResouce 资源管理,通过 Session 来进行事务管理,commit(xid)
XID 每一个事务都分配一个特定的 XID。
基于 JTA 实现的 Atomikos
最终一致性分布式事务方案
本地消息表 分布式事务 拆分成本地事务 本地消息表 定时 幂等操作
MQ 消息事务
最大努力通知 业务系统调用支付系统,支付系统通知结果, 最大通知次数 , 务系统可查询支付操作是否成功
补偿事务 TCC Try-Confirm-Cancel
TCC三阶段
Try 阶段:对业务系统做检测及资源预留。
Confirm 阶段:对业务系统做确认提交,Try 阶段执行成功并开始执行 Confirm 阶段时,默认 Confirm 阶段是不会出错的。只要 Try 成功,Confirm 一定成功。
Cancel 阶段:在业务执行错误,需要回滚的状态下执行的业务取消,预留资源释放。
基于 TCC 实现的分布式事务框架
ByteTCC github.com/liuyangming
tcc-transaction github.com/changmingxi
上一篇
下一篇
j2ee容器类加载机制实例演示
tomcat类加载器
java类卸载机制
jmeter长连接配置
java内存溢出
java restful 框架