【问题标题】:API gateway vs. reverse proxyAPI 网关与反向代理
【发布时间】:2016-06-15 20:43:09
【问题描述】:

为了处理微服务架构,它通常与反向代理(如 nginx 或 apache httpd)一起使用,并用于横切关注点实现API gateway pattern is used。有时反向代理会做 API 网关的工作。

很高兴看到这两种方法之间的明显差异。 看起来 API 网关使用的潜在好处是调用多个微服务并聚合结果。 API 网关的所有其他responsibilities 都可以使用反向代理来实现。如:

  • 身份验证(可以使用nginx LUA脚本完成);
  • 运输安全。它本身就是反向代理任务;
  • 负载平衡
  • ...

所以基于此有几个问题:

  1. 同时使用 API 网关和反向代理是否有意义(例如请求 -> API 网关 -> 反向代理 (nginx) -> 具体微服务)?在什么情况下?
  2. 还有哪些其他区别可以使用 API 网关实现,而反向代理无法实现,反之亦然?

【问题讨论】:

    标签: nginx reverse-proxy microservices aws-api-gateway tyk


    【解决方案1】:

    如果您意识到它们不是相互排斥的,那么考虑它们会更容易。将 API 网关视为特定类型的反向代理实现。

    关于您的问题,在 API 网关被视为位于反向代理后面用于负载平衡和运行状况检查的应用层时,经常会看到两者结合使用。一个示例类似于 WAF 三明治架构,其中您的 Web 应用程序防火墙/API 网关被反向代理层夹在中间,一个用于 WAF 本身,另一个用于与之通信的各个微服务。

    关于差异,它们非常相似。这只是命名法。当您进行基本的反向代理设置并开始使用更多部分(如身份验证、速率限制、动态配置更新和服务发现)时,人们更有可能将其称为 API 网关。

    【讨论】:

    • 如果我错了,请纠正我,但我可以在同一个生态系统中使用两者。使用 API 网关更多地是为了协调添加到仪表板监控和安全约束的动态和持续更改,使用像 nginx 这样的反向代理可以更有效地为静态和固定子域提供负载平衡。
    • 可能是最好的解释!我观看了许多教程并在 Google 上搜索了大量信息。
    • 所以如果我理解正确的话,API网关是建立在反向代理之上的,并且支持更多的功能,那么我们可以不只使用API​​网关并移除代理吗?
    【解决方案2】:

    我相信,API Gateway 是一个反向代理,可以通过 API 和可能通过 UI 动态配置,而传统的反向代理(如 Nginx、HAProxy 或 Apache)是通过配置文件配置的,并且必须在配置更改时重新启动。因此,当路由规则或其他配置经常发生变化时,应该使用 API Gateway。对于您的问题:

    1. 只要此序列中的每个组件都能发挥作用,它就有意义。
    2. 差异不在功能列表中,而是在应用配置更改的方式上。

    此外,API 网关通常以 SAAS 的形式提供,例如 ApigeeTyk

    另外,这是我关于如何使用 Node.js https://memz.co/api-gateway-microservices-docker-node-js/创建简单 API 网关的教程

    希望对你有帮助。

    【讨论】:

    • 感谢 SAAS 的建议
    • 你有没有机会知道其他地方可以获取 memz.co 链接中的信息?它已经死了。
    • “API Gateway with Node.js”的链接已失效。
    【解决方案3】:

    API 网关通常作为 L7 构造运行。

    与普通反向代理相比,API 网关提供了额外的功能。如果您考虑他们可以提供的一些门户网站:

    • 完整的 API 生命周期管理,包括文档
    • 一个门户,可用作各种客户端应用程序的真实来源,您可以在其中提供客户端治理、速率限制等。
    • 路由到不同版本的 API,包括金丝雀/测试版
    • 检测使用模式、注册应用、检索客户端凭据等

    然而,随着 Istio 等服务网格的出现,Consul 的许多 API 网关功能将被网格所包含。

    【讨论】:

      【解决方案4】:

      API 网关充当反向代理,以接受所有应用程序编程接口 (API) 调用,聚合实现它们所需的各种服务,并返回适当的结果。

      API 网关 具有比 API 代理更强大的功能集(尤其是在安全和监控方面)。我想说 API 网关模式也称为 Backend for frontend (BFF),广泛用于微服务开发。查看微服务世界中benefits and features of API Gateway pattern 的文章。

      另一方面,API 代理基本上是一个轻量级的 API 网关。它包括一些基本的安全和监控功能。因此,如果您已经有 API 并且您的需求很简单,那么 API 代理就可以正常工作。

      下图将让您清楚地了解 API 网关和反向代理之间的区别。

      【讨论】:

      • 根据其他答案,您可以使用反向代理进行负载平衡
      猜你喜欢
      • 1970-01-01
      • 2018-10-24
      • 2022-01-20
      • 2020-06-04
      • 2021-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-01
      相关资源
      最近更新 更多