1

我们目前正在研究将现有的单体应用程序转换为沿 API 网关运行以进行协调的细粒度微服务的可能性。

我有这种情况,其中有三个微服务:

1- 产品微服务:产品的 REST API 服务。2- 类别微服务:类别的 REST API 服务。3- 聚合微服务:一种 REST API 服务,它连接类别列表及其产品,然后将它们返回到一个模型中。

根据附图,除了 HTTP 方法和请求正文等所有请求选项外,任何客户端都可以向 API 网关发送请求,指定他想从哪个微服务检索信息。

API 网关将接收客户端的请求并使用服务发现将其重新路由到指定的微服务。

我的问题是,如果客户端尝试联系聚合微服务怎么办?这将导致对 API 网关的请求,然后 API 网关将重新路由到聚合服务。但是,聚合服务需要联系类别服务和产品服务,以便以统一的模型回复客户端。这要求聚合微服务也再次联系 API 网关,以便它可以将其请求重新路由到类别和产品微服务。

这里似乎发生了很多通信流量,我是否在这里遗漏了什么,或者这是实现这种场景的正确方法。

API 网关示例

4

1 回答 1

0

在您的情况下,最简单的方法是进行服务编排。域服务不会相互通信,聚合服务将是调用两个域服务、组合结果并将它们返回给客户端的编排器。网关应该只联系编排器,编排器也是一个门面,可以向客户端隐藏内部服务的复杂性。

另一种选择是服务编排,其中通信是分散的,每个服务决定它应该联系哪些其他服务。然而,它要复杂得多,只有当你拥有大量微服务时才值得。例如,您必须防止循环,单独部署更加困难,因为您必须考虑依赖关系......

于 2018-05-15T10:31:09.393 回答