分布式事务解决方案感想

分布式事务案例:
添加租户的时候需要去调用添加用户的服务
目前的做法是在租户的事务中,先将租户的增删改操作做完,最后再去调用用户服务的添加接口,用户服务进入自己的事务阶段
如果用户服务出错,用户事务回滚,同时返回错误给租户服务,租户服务捕获异常进行租户服务的事务回滚。
如果用户服务未出错且事务提交成功,则因为已经是在租户服务事务的最后阶段了,因此可以保证租户服务也能正常的提交事务
对于一般情景下,比如在租户事务的中间阶段就必须去调用用户服务的新增数据的事务
如果用户服务新增数据的事务提交成功,再返回到租户中,租户继续进行业务操作,如果租户在后面的操作中出现异常进行事务回滚,则需要对原有的用户服务进行事务的补偿机制,即调用用户服务去还原原来的操作,同时需要保证这个还原原来的操作具有幂等性,即调用多次也是一直返回到上一次的出错状态,这种方式保证了最终一致性
其他举例:
A服务的事务中去设置B服务的金额减少5元,B服务事务成功减少了5元,A服务继续运行后发现错误回滚,需要重新通知B服务设置为减5元之前的值。

猜你喜欢

转载自my.oschina.net/ffse54s/blog/1810441