funky-eyes / easy-tx

一款简单易用的无侵入,无需依赖数据库和服务协调者的分布式事务中间件(大量借鉴Seata以及LCN,在此特别感谢)
Apache License 2.0
38 stars 10 forks source link

请教一个来自钉钉的讨论:一次分布式事务,a事务成功,b事务失败,a事务如何处理的问题 #6

Open hx78 opened 2 years ago

hx78 commented 2 years ago

我理解分布式事务,就是一个事务里涉及到多个数据源,每个数据源有自己的事务,假设a,b两个服务,分别访问了数据源1和数据源2,并都开启了事务。对XA来说,XA两阶段提交过程如下

2pc

第一阶段,并没有真正commit,真正commit在第二阶段。 假设a在第二阶段commit成功,b有可能commit失败的,比如下面的场景 1 协调者挂了 2 数据源2挂了或者b服务到数据源2的网络不可达 3 服务b挂了

funky-eyes commented 1 year ago

1.协调方启动进行重试就行了 2.重试,最终一致 3.重启