【问题标题】:Api Gateway for Services服务的 API 网关
【发布时间】:2018-01-21 23:13:45
【问题描述】:

我正在用 Java 开发 Web 服务。现在假设我有 10 个服务,我希望我的所有服务都只能通过 Apigateway 访问。

现在假设我有一个 API 调用,它需要依次调用 4 个服务,例如 A、B、C、D 首先需要调用 A 服务,然后使用 o/p B和C可以并行调用 然后最后使用 B & C 的 o/p 调用 Services D。

然后结合 o/p 并返回响应。

现在这个串联和并联组合可以是任何东西。 是否有任何开源实现可以做到这一点。我的意思是我提供了场景,它会自动发送请求,还是我必须开发这个网关?

【问题讨论】:

    标签: java spring-boot api-gateway


    【解决方案1】:

    这...

    首先需要调用A服务,然后使用o/p B和C可以并行调用,最后使用B&C的o/p调用Services D。

    ... 听起来像是一种企业集成模式。 Spring IntegrationCamel 都支持编写/编排服务调用。

    在您的示例中,调用可以组合成“消息流”(在 XML 或这些库的内部 DSL 中定义),并且该消息流可以使用库对路由调用、多路转换调用的内置支持,聚合响应等。路由 ABC 可能使用多路转换,使用来自 BC 的输出来调用 D 可能使用聚合和路由。

    此外,这些库支持:

    • 进程内调用和远程调用
    • 非函数,例如相关标识符、节流器、延迟器等。

    【讨论】:

      【解决方案2】:

      有两个流行的项目可以用于您的案例:

      1. 骆驼: 通过定义 XML 规则,您可以在服务甚至 bean 之间创建流。我将 Camel 用于类似的任务。

      2. zuul:这就像一个路由器,你可以立即将请求重定向到其他服务或编写一些逻辑来控制流量。

      【讨论】:

      • zuul 我觉得不能用?因为我不能聚合多个请求?它只是路线?那么如何使用 zuul 聚合请求呢?就像我在问题中提到的场景
      • 是的,zuul 只是一个路由器,我在一个 api gatway 项目中将它与骆驼一起使用。有时在网关中,您只想将请求重定向到其他服务。
      猜你喜欢
      • 2020-03-13
      • 2020-07-24
      • 1970-01-01
      • 2020-05-29
      • 2016-01-14
      • 2018-01-25
      • 2018-01-23
      • 2015-10-03
      • 2019-10-17
      相关资源
      最近更新 更多