链式事务出错情况处理

来源:6-5 实例1-DB-DB.链式事务管理器

慕无忌918605

2018-12-09

老师,以DB-DB为例,链式事务让两个事务连续提交可以降低出现不一致的概率。但是仍然有可能出现最后一步出错,倒数第二步已提交无法回滚的情况。那么如果出现这种情况一般怎么处理?如何补偿?


写回答

1回答

大漠风

2018-12-10

像这种情况,是不会有自动补偿或重试机制的,只能自己处理。然后,我们现在都是用spring data或mybatis,hibernate之类的框架,帮我们隐藏很多数据库操作的细节,所以要想在出错的时候自己再实现一些补偿或回滚的话,又会破坏很多地方,又会非常复杂。
所以,可能最容易的方式就是在全局处理错误的地方,把错误记下来,如果能从异常信息里获得更多信息,如出错的数据库和表,知道是什么方法导致出错,就能通过另外的程序、或人工进行回滚或补偿。
这需要注意的是,触发这个错误是比较麻烦的,想通过异常信息就定位错误也需要简洁良好的设计。还有,异常处理方法一定要做好冥等性。

2
1
慕无忌918605
非常感谢!
2019-01-13
共1条回复

分布式事务实践,从原理到实例,解决数据一致性

掌握分布式事务实现技术,是架构师必备技能。

1149 学习 · 153 问题

查看课程