如何编排微服务

Posted

技术标签:

【中文标题】如何编排微服务【英文标题】:how Orchestrate microservices 【发布时间】:2018-08-05 08:41:41 【问题描述】:

我一直在尝试将我们的部分 soa 架构(Mule ESB)迁移到微服务(Spring Boot 堆栈),但我面临一个与我们有多个编排的大型流相关的问题。 基本上,我们有一个以用户 ID 作为输入的流程,响应由用户帐户、信用卡数据、股票和贷款组成。 在这个流程中,我们一开始有一个拆分器(允许发送并发请求),我们将请求发送到账户后端、3 个不同的信用卡合作伙伴、股票合作伙伴和贷款合作伙伴,最后有一个聚合器(等待所有响应并合并所有这些),最后是一个用于准备响应的节点(应用业务逻辑)。

在迁移过程中,我们开发了账户微服务、贷款微服务、股票微服务和信用卡微服务(每个合作伙伴 1 个)。这里的问题是编排,我们不能使用事件模型方法,因为我们需要在某个时间点获得所有响应。我们也考虑了编排方法,但我们不想添加与调用相关的逻辑,因为这将是对重耦合服务(N*N 连接)的退步。

我们正在考虑制作一个新的微服务,用作编排器,但我们不知道这是否是微服务概念的一个很好的解决方案。

注意:前端无法编排,因为它是一个封闭的产品,我们无法触摸它。

提前致谢。

【问题讨论】:

【参考方案1】:

我们正在考虑制作一个新的微服务,用作编排器,但我们不知道这是否是微服务概念的一个很好的解决方案。

从你所描述的所有情况来看,这听起来是最合理的做法。您将此服务描述为具有自己的业务目的,这向我表明了对专门服务的潜在需求。而且它需要来自其他(更基本的)服务的输入这一事实对于复杂的域服务来说并不罕见。此外,您已经将前端聚合的替代方法列为在您的域中不起作用的东西。

需要考虑的只是确保基础服务的开发团队将他们的 API 视为面向客户(客户是您的其他服务)。这意味着他们必须在版本控制/弃用/等方面做干净的工作。 下游服务需要像对待第 3 方 API 一样对待使用的 API。例如,Google 到目前为止允许向内部服务消费收取真金白银,以激励优化相关服务的实施。

【讨论】:

以上是关于如何编排微服务的主要内容,如果未能解决你的问题,请参考以下文章

微服务核心研究之--编排

单独的微服务只是为了微服务编排?

从容器化编排到代理,一个完整的微服务架构总共分几步?

Docker-compose编排微服务顺序启动

服务编排

微服务架构中的编排与编排[关闭]