gpt4 book ai didi

java - 微服务系统中服务间的分布式事务,使用spring-cloud

转载 作者:行者123 更新时间:2023-12-03 23:11:17 26 4
gpt4 key购买 nike


现状

有一个项目使用:spring-bootspring-cloudpostgresql,作为微服务系统。

有2个服务,比如SASB,它们分别运行在2个RDBMS数据库上,比如DADB.

现在,有一个操作包含 2 个子步骤:

  1. Http 客户端向服务SA 发出请求,将记录RA 保存到DA
  2. 然后,SA向服务SB发送请求,将记录RB保存到DB中。

作为一个整体,2 个子步骤应该都提交,或者都回滚。


分析

  • 如果将两个操作移动到一个服务中,则可以使用 Spring 的分布式事务通过 JTA (基于 2PC 协议(protocol))解决它
  • 但在这里,2 个操作在 2 个服务中,它们通过 http REST 协议(protocol)进行通信。也许可以使用mq + 补偿 来解决这个问题,但我不确定是否有更好的方法。

问题是

  • 在这种情况下,JTA (基于 2PC 协议(protocol)) 是否仍然有效?
  • 如果不是,首选解决方案是什么?
    我能猜到的可能解决方案:
    1. 重构代码以将 2 个操作移至一个服务中。
    2. 实现 mq + compensation 架构来支持这一点。

最佳答案

也许这个项目对你有帮助https://github.com/apache/servicecomb-pack

Apache ServiceComb Pack 是微服务应用的最终数据一致性解决方案。 ServiceComb Pack目前以Alpha为事务协调器,Omega为事务代理,提供TCC和Saga分布式事务协调方案

关于java - 微服务系统中服务间的分布式事务,使用spring-cloud,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58373224/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com