gpt4 book ai didi

architecture - SOA 中的循环依赖

转载 作者:行者123 更新时间:2023-12-01 01:31:18 28 4
gpt4 key购买 nike

我猜,这是一个常见的问题,但我会尝试描述我当前的问题。

我有一个基础服务,我们将其命名为“CoreService”,它提供了我会说的“主要”功能:处理 DB 中的数据(我们的应用程序中有一个集中式 DB)。还有许多其他应用程序,其中一些具有用于本地目的的自己的数据库。还有一个简单的“NotificationService”。其目的是将消息广播给不同的订阅者。

通常,此 NotificationService 从“ExternalWorld”调用并将通知发送到不同的服务(其中包括“CoreService”)。

今天我看到有必要从“CoreService”调用“NotificationService”。

我在这里担心的是我引入了循环依赖: NotificationService 需要知道如何向每个服务发送消息(包括“CoreService”,因此它需要了解“CoreService”接口(interface),因此它需要引用“CoreService” )和“CoreService”需要向“NotificationService”发送消息(所以它也需要引用它)......循环依赖......

问题:我们应该如何构建我们的架构来处理这样的问题?

非常感谢!

最佳答案

您必须从点对点切换到调解器。 Mediator 现在将负责将源绑定(bind)到目标并适本地路由/发布消息(ESB 在我脑海中响起)。

解释

您不会直接从 NotificationService 引用 CoreService,反之亦然。两者都会订阅 话题 他们的兴趣。例如,CoreService 将事件发布到 NotificationService 将订阅的主题(CoreService 还将订阅 NotificationService 发布 事件的主题)。然后,主题处理程序(消息系统或 ESB 等)负责将事件转发给给定主题的所有订阅者。这样,服务彼此松散耦合,甚至不需要知道它们的存在。

目前,您正在使用 NotificationService 作为中介/ESB,因此如果您愿意,可以将其作为基础设施服务,因此会出现循环依赖等问题。它不再是业务服务。

关于architecture - SOA 中的循环依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4787897/

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