【问题标题】:How to isolate services in choreography service composition如何在编排服务组合中隔离服务
【发布时间】:2018-08-19 22:18:04
【问题描述】:

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

几天前,我正在阅读有关编排在微服务架构中编排的优缺点,我遇到了这个话题, 假设我们有一个由 3 项服务组成的系统:订购、付款、发货。如果我使用编排器,编排器知道何时以及如何调用每个服务。事实上,它的职责是知道如何以及何时调用什么服务,但在编排中,我不知道支付服务何时不知道订购服务存在它如何订阅其事件(至少订购系统需要付款模型)?

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

【问题讨论】:

  • 如果不够清楚,请告诉我以编辑我的问题...

标签: architecture microservices distributed-computing service-composition


【解决方案1】:

当支付服务不知道订购服务存在时,它会如何订阅其事件(确定至少订购系统需要有支付模型)?

如果业务目的需要,一个服务知道另一个服务是可以的。只要确保您不混淆目的并确保任一服务的独立开发过程,例如正确版本您的 API 并制定过时政策。 Google 甚至对团队之间的服务使用征收内部费用。

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

它将如何返回付款和运输数据?

根据聚合过程的复杂性,您可以拥有第三个服务来负责依赖支付和运输服务的业务范围,或者您拥有一个允许合并/拆分请求的专用聚合器组件从前端(有时作为API Gateway 的一部分实现)。如果你的聚合逻辑比较复杂,创建一个专门的服务,否则你可以使用通用的aggregator

【讨论】:

  • 所以您不认为聚合器充当协调器吗?
  • 是的,我只是使用“聚合器”作为组件的术语,其目的只是以一种通用的方式组合/拆分服务调用(有些人也可能称之为编排)。与更复杂的编排服务相反,它在调用其他服务时应用某些领域逻辑(业务目的绑定,服务层次结构清晰)。
猜你喜欢
  • 2021-02-20
  • 2018-08-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-10
  • 2023-02-10
  • 2012-09-11
  • 2010-10-02
相关资源
最近更新 更多