Architecture 如何在编排服务组合中隔离服务

Architecture 如何在编排服务组合中隔离服务,architecture,microservices,distributed-computing,service-composition,Architecture,Microservices,Distributed Computing,Service Composition,我总是鼓励在不知道其他服务存在的情况下设计每个服务 几天前,我在阅读有关微服务体系结构中编舞相对于编排的利弊的文章时,我遇到了这个话题, 假设我们有一个由3项服务组成的系统:订购、付款、发货。如果我使用orchestrator,orchestrator知道何时以及如何调用每个服务。事实上,它的职责是知道如何以及何时调用什么服务,但在编舞中,我不知道支付服务何时不知道订购服务存在,它将如何订阅其活动,至少订购系统需要有支付模型 当我开始思考,如果我们在订购服务中有一种返回订购信息,然后返回付款数据

我总是鼓励在不知道其他服务存在的情况下设计每个服务

几天前,我在阅读有关微服务体系结构中编舞相对于编排的利弊的文章时,我遇到了这个话题, 假设我们有一个由3项服务组成的系统:订购、付款、发货。如果我使用orchestrator,orchestrator知道何时以及如何调用每个服务。事实上,它的职责是知道如何以及何时调用什么服务,但在编舞中,我不知道支付服务何时不知道订购服务存在,它将如何订阅其活动,至少订购系统需要有支付模型

当我开始思考,如果我们在订购服务中有一种返回订购信息,然后返回付款数据和发货数据的方法,我会变得更加困惑。它将如何返回付款和发货数据

当支付服务不知道订购服务存在时,它将如何订阅它的事件以确保至少订购系统需要有支付模型

如果业务需要,一个服务知道另一个服务是可以的。只需确保您不会混淆目的,并确保这两种服务都有独立的开发过程,例如正确版本API,并制定淘汰政策。谷歌甚至对团队之间的服务使用收取内部费用

它还允许有两个服务都使用的代码库,只要您像对待第三方库一样对待这些库依赖项

它将如何返回付款和发货数据


根据聚合过程的复杂性,您可以使用第三种服务,负责依赖于支付和装运服务的业务范围,也可以使用专用聚合器组件,允许合并/拆分来自前端的请求(有时作为应用程序的一部分实现)。如果您的聚合逻辑很复杂,请创建一个专用服务,否则您可以使用通用服务。

如果问题不够清楚,请让我知道如何编辑我的问题……那么您不认为聚合器充当编排器吗?是,我只是使用聚合器作为组件的一个术语,其目的是简单地以一种一般的方式组合/拆分服务调用,有些人可能也会称之为编排。与更复杂的业务流程服务不同,业务流程服务在调用其他服务时应用了特定的域逻辑,而服务的层次结构是明确的。