繁体   English   中英

微服务架构 数据库回滚

[英]Microservice architecture Database rollback

我有一个带有多个服务的微服务架构,每个服务都包含自己的数据库和一个被视为业务逻辑的网关。

网关:

  • 处理逻辑
  • 调用服务

服务一:

  • 存储服务相关数据
  • 有自己的数据库

服务二:

  • 存储服务相关数据
  • 有自己的数据库

因此,例如网关调用服务 1 来插入一些数据。 然后它调用服务 2 来插入一些数据。

现在的问题是:如果对服务 2 的调用失败了,我该如何撤销对服务 1 的插入? 我知道我可以调用http://.../delete方法,但这不是最好的解决方案。 那么撤消更改的最佳方法是什么?

考虑到您架构的非常具体的细节,一个直接的答案是分布式事务管理。 但这不是在实施方面而是在维护、性能等方面会有点困难。


但是我的问题是,我是否觉得架构存在一些缺陷,因为如果由于服务 2 中的某些故障而不得不回滚服务 1 中的数据,那么这两个服务之间存在紧密耦合,这不是微服务的方式应该表现得像它应该是独立的。 因此,您可能需要稍微更改架构

  • 您可以在微服务之间共享数据库,这将使事务处理更容易。
  • 您可以在微服务之间引入一种通信机制,例如 Apache kafka(RabbitMQ 或 Hazelcast 具有成本效益)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM