当前位置 : 主页 > 大数据 > 区块链 >

体系结构 – SOA中的循环依赖

来源:互联网 收集:自由互联 发布时间:2021-06-22
我猜,这是一个常见问题,但我会尝试描述我目前的问题. 我有一个基本服务,让我们把它命名为’CoreService’,它提供我会说“主要”功能:处理数据库中的数据(我们的应用程序中有一个集
我猜,这是一个常见问题,但我会尝试描述我目前的问题.

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

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

今天我看到有必要从’CoreService’调用’NotificationService’.

我关注的是我引入了一个循环依赖:NotificationService需要知道如何向每个服务发送消息(包括’CoreService’,因此它需要知道’CoreService’接口,因此它需要引用’CoreService’并且’CoreService’需要向’NotificationService发送消息(所以它也需要引用它)…循环依赖…

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

非常感谢!

您必须从点对点切换到中介. Mediator现在负责将源绑定到目的地并适当地路由/发布消息(ESB在我脑海中响起).

说明

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

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

网友评论