分布式事物理解

编程

第二步:JTA执行预提交


第三步: 预提交都成功就执行commit,只要有一个失败就执行rollback。

为什么会有三阶断?

降低失败的概率:因为同时commit,如果因为网络问题,或者tomcat本身挂掉了,那么三阶断的commit就不会执行,当然要会有一个问题,三阶断的commit也失败了怎么办?所以说它的最终一致性不是100%,只能99.999%,对于公司够用了。剩下的可以允许人工处理。

2 TCC

代表 tcc-transaction。

tcc是针对服务,不针对数据库。目的一样,最终D一致性。TCC的try阶断相当于一个软状态。对于库存,相当于冻结状态。TCC的要求是每个要参与分布式的服务都需要实现一个TCC的接口,提供try,confirm,cancel方法。也有一个事物协调器,类似JTA。由它来执行confirm,cancel方法。是不是与JTA很像。

3 AT

典型代表seata。 这种分布式事物对数据库,服务都没有额外要求。但是它要单独部署一个事物协调器。它主要是解决微服务之间的分布式事物。如果涉及到外部应用就要用TCC,因为外部应用无法控制别人的数据库。所以说AT其实与XA类似。

第一步: 执行SQL


第二步: 全部执行完后,通知协调器。协调器发布commit。如果有一个commit失败,那么终步,对失败的服务发布undo指令,进行补偿。

以上是 分布式事物理解 的全部内容, 来源链接: utcz.com/z/513935.html

回到顶部