我正在用 Java 开发 Web 服务。现在假设我有 10 个服务,我希望我的所有服务都只能通过 Apigateway 访问。
现在假设我有一个 API 调用,它需要调用 4 个服务,例如 A、B、C、D,因为首先需要调用 A 服务,然后使用 o/p B 和 C 可以并行调用,最后使用B & C 的 o/p 调用服务 D。
然后结合 o/p 并返回响应。
现在这个串联和并联组合可以是任何东西。是否有任何开源实现可以做到这一点。我的意思是我提供了场景,它会自动发送请求,还是我必须开发这个网关?
我正在用 Java 开发 Web 服务。现在假设我有 10 个服务,我希望我的所有服务都只能通过 Apigateway 访问。
现在假设我有一个 API 调用,它需要调用 4 个服务,例如 A、B、C、D,因为首先需要调用 A 服务,然后使用 o/p B 和 C 可以并行调用,最后使用B & C 的 o/p 调用服务 D。
然后结合 o/p 并返回响应。
现在这个串联和并联组合可以是任何东西。是否有任何开源实现可以做到这一点。我的意思是我提供了场景,它会自动发送请求,还是我必须开发这个网关?
这个 ...
首先需要调用 A 服务,然后使用 o/p B 和 C 可以并行调用,最后使用 B 和 C 的 o/p 调用服务 D。
...听起来像是一种企业集成模式。Spring Integration和Camel都支持组合/编排服务调用。
在您的示例中,可以将调用组合成“消息流”(在 XML 或这些库的内部 DSL 中定义),并且该消息流可以使用库对路由调用、多路转换调用、聚合响应的内置支持等路由A到B,C可能使用多路转换,使用来自B和C调用的输出D可能使用聚合和路由。
此外,这些库支持:
在您的情况下可以使用两个流行的项目:
camel:通过定义 XML 规则,您可以在服务甚至 bean 之间创建流。我使用 Camel 来完成类似的任务。
zuul:这就像一个路由器,你可以立即将请求重定向到其他服务或编写一些逻辑来控制流量。