分布式事务简单处理

版权声明:欢迎分享技术,转载请声明。更多技术见 blog.hongxi.org https://blog.csdn.net/javahongxi/article/details/79501289

解决分布式事务最简单的方案就是向前或向后,即补充或回滚。

业务逻辑有如下三步:

  1. 调用A服务冻结金额

  2. 调用B服务增加额度

  3. 记录数据库

进行到第2步失败 -> 写task,回滚第1步(通知A服务方去回滚)

进行到第3步失败 -> 写task,从A/B服务处同步数据至数据库

还有一种方案就是写task,转化为本地事务,由task去执行上述三步,失败则重试task,当然,A/B服务都有幂等性处理。这种方案的缺点之一,是假定了参数合理的情况下,服务最终一定会执行成功,缺点之二是看起来不自然。

复杂的方案就是TCC方案,参见蚂蚁金服的DTS

阅读更多

扫码向博主提问

javahongxi

非学,无以致疑;非问,无以广识
  • 擅长领域:
  • Java
  • Dubbo
  • Redis
  • Spring
去开通我的Chat快问
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页