首页 > 解决方案 > 微服务之间的循环依赖是一种反模式吗?

问题描述

说我有user-accounts服务和profiles服务。如果profiles服务需要来自user-accounts服务的数据进行某些计算,这意味着profiles服务依赖于user-accounts服务。

现在,假设正在为user-accounts服务实现附加功能。此功能需要来自profiles服务的数据。

这将创建一个循环依赖,因为每个服务都依赖于另一个。这被认为是有害的吗?

在微服务之间引入循环依赖有哪些替代方法?最好添加一项额外的服务来充当经纪人吗?

标签: microservices

解决方案


我会尽量避免这种情况。就我个人而言,我尽量避免完全耦合微服务,而更多地依赖编排和/或事件编排。

以下是您可能能够避免的一些方法:

  1. 组合user-accountsprofiles作为单个微服务。如果它们密切相关,那么您的服务粒度可能略有错误。
  2. 创建一个更高级别的编排层,用于编排 和 之间的user-accounts调用profiles
  3. 根据您的具体情况,您可能能够编排 和 之间的user-accounts事件profiles。一个服务可能会发布事件,而另一个服务订阅这些事件。您可以在这种类型的架构中使用像 RabbitMQ 这样的消息代理。

IMO 没有绝对正确的答案 - 这些只是一些一般指导方针 - 这实际上取决于您的具体情况......


推荐阅读