dromara / raincat

强一致分布式事务框架
https://dromara.org/
GNU Lesser General Public License v3.0
1.91k stars 663 forks source link

提一个边界性的问题 #32

Open zxjpro opened 6 years ago

zxjpro commented 6 years ago

先赞叹一下,作者真大牛。

A调用了S1,S2,S3服务,运行正常进入提交事务的过程。S1提交正常,S2提交正常。但是提交S3的时候,可S3的网络出现问题,或者是S3对应的DB3数据库宕机

这个时候会陷入这样的境地,那就是S1,和S2的事务已经提交,没法回滚,也没有办法让S3提交。这个问题要怎么处理?

还有,本地服务的补偿,是一个什么样的机制呢?因为并没有看到关于补偿的介绍

yu199195 commented 6 years ago

raincat 会记录整个日志,如果是你说的情况,在s3启动的时候,通过定时任务进行一次提交。 如果是一个很小概率的问题,几乎是不可能发生的事情,最好的办法就是不解决它。 但是raincat依然花了大力气去解决了它

zxjpro commented 6 years ago

raincat 会记录整个日志,如果是你说的情况,在s3启动的时候,通过定时任务进行一次提交。 如果是一个很小概率的问题,几乎是不可能发生的事情,最好的办法就是不解决它。 但是raincat依然花了大力气去解决了它

定时任务怎么提交呢?因为S3宕机,这个事务应该是关闭了的,那么在启动的时候,怎么重新打开这个事务。 这个事务是数据库的本地事务吗?

0000005 commented 6 years ago

本地事务