API 网关与反向代理
API gateway vs. reverse proxy
为了处理微服务架构,它经常与反向代理(例如 nginx 或 apache httpd)一起使用,并用于横切关注点实现 API gateway pattern is used。有时反向代理会完成 API 网关的工作。
很高兴看到这两种方法之间的明显区别。
看起来 API 网关使用的潜在好处是调用多个微服务并聚合结果。 API 网关的所有其他 responsibilities 都可以使用反向代理来实现。如:
- 身份验证(可以使用 nginx LUA 脚本完成);
- 交通安全。它本身的反向代理任务;
- 负载均衡
- ...
所以基于此有几个问题:
- 同时使用 API 网关和反向代理是否有意义(例如请求 -> API 网关 -> 反向代理(nginx) -> 具体微服务)?在什么情况下?
- 可以使用 API 网关实现而不能由反向代理实现,反之亦然的其他区别是什么?
我相信,API 网关是一个反向代理,可以通过 API 动态配置,也可能通过 UI,而传统的反向代理(如 Nginx、HAProxy 或 Apache)通过配置文件配置,当配置更改时必须重新启动。因此,当路由规则或其他配置经常更改时,应使用 API 网关。针对您的问题:
- 只要此序列中的每个组件都能发挥其作用,它就有意义。
- 不同之处不在于功能列表,而在于应用配置更改的方式。
此外,API网关通常以SAAS的形式提供,例如Apigee or Tyk。
此外,这是我关于如何使用 Node.js https://memz.co/api-gateway-microservices-docker-node-js/
创建简单 API 网关的教程
希望对您有所帮助。
如果您意识到它们并不相互排斥,就会更容易考虑它们。将 API 网关视为特定类型的反向代理实现。
关于您的问题,经常会看到两者结合使用,其中 API 网关被视为位于反向代理后面的应用层,用于负载平衡和健康检查。一个例子类似于 WAF 三明治架构,因为您的 Web 应用程序 Firewall/API 网关被反向代理层夹在中间,一个用于 WAF 本身,另一个用于与之通信的各个微服务。
关于差异,它们非常相似。这只是命名法。当您进行基本的反向代理设置并开始添加更多内容(例如身份验证、速率限制、动态配置更新和服务发现)时,人们更有可能将其称为 API 网关。
API 网关通常作为 L7 结构运行。
API 与普通反向代理相比,网关提供了额外的功能。如果您考虑一些门户网站,他们可以提供:
- 完整 API 生命周期管理,包括文档
- 一个门户,可用作各种客户端应用程序的真实来源,您可以在其中提供客户端管理、速率限制等。
- 路由到 API 的不同版本,包括 canary/beta 版本
- 检测使用模式、注册应用程序、检索客户端凭据等
然而,随着 Istio、Consul 等服务网格的出现,API 网关的许多功能将被网格包含。
API网关充当反向代理接受所有应用程序编程接口(API)调用,聚合实现它们所需的各种服务,和 return 适当的结果。
API 网关 比 API 代理具有更强大的功能集——尤其是在安全和监控方面。我会说 API 网关模式也称为 前端后端 (BFF) 在微服务开发中被广泛使用。查看微服务世界中 benefits and features of API Gateway pattern 的文章。
另一方面API代理基本上是一个轻量级的API网关。它包括一些基本的安全和监控功能。因此,如果您已经有一个 API 并且您的需求很简单,那么 API 代理就可以正常工作。
下图将为您提供 API 网关和反向代理之间区别的清晰图片。
为了处理微服务架构,它经常与反向代理(例如 nginx 或 apache httpd)一起使用,并用于横切关注点实现 API gateway pattern is used。有时反向代理会完成 API 网关的工作。
很高兴看到这两种方法之间的明显区别。 看起来 API 网关使用的潜在好处是调用多个微服务并聚合结果。 API 网关的所有其他 responsibilities 都可以使用反向代理来实现。如:
- 身份验证(可以使用 nginx LUA 脚本完成);
- 交通安全。它本身的反向代理任务;
- 负载均衡
- ...
所以基于此有几个问题:
- 同时使用 API 网关和反向代理是否有意义(例如请求 -> API 网关 -> 反向代理(nginx) -> 具体微服务)?在什么情况下?
- 可以使用 API 网关实现而不能由反向代理实现,反之亦然的其他区别是什么?
我相信,API 网关是一个反向代理,可以通过 API 动态配置,也可能通过 UI,而传统的反向代理(如 Nginx、HAProxy 或 Apache)通过配置文件配置,当配置更改时必须重新启动。因此,当路由规则或其他配置经常更改时,应使用 API 网关。针对您的问题:
- 只要此序列中的每个组件都能发挥其作用,它就有意义。
- 不同之处不在于功能列表,而在于应用配置更改的方式。
此外,API网关通常以SAAS的形式提供,例如Apigee or Tyk。
此外,这是我关于如何使用 Node.js https://memz.co/api-gateway-microservices-docker-node-js/
创建简单 API 网关的教程希望对您有所帮助。
如果您意识到它们并不相互排斥,就会更容易考虑它们。将 API 网关视为特定类型的反向代理实现。
关于您的问题,经常会看到两者结合使用,其中 API 网关被视为位于反向代理后面的应用层,用于负载平衡和健康检查。一个例子类似于 WAF 三明治架构,因为您的 Web 应用程序 Firewall/API 网关被反向代理层夹在中间,一个用于 WAF 本身,另一个用于与之通信的各个微服务。
关于差异,它们非常相似。这只是命名法。当您进行基本的反向代理设置并开始添加更多内容(例如身份验证、速率限制、动态配置更新和服务发现)时,人们更有可能将其称为 API 网关。
API 网关通常作为 L7 结构运行。
API 与普通反向代理相比,网关提供了额外的功能。如果您考虑一些门户网站,他们可以提供:
- 完整 API 生命周期管理,包括文档
- 一个门户,可用作各种客户端应用程序的真实来源,您可以在其中提供客户端管理、速率限制等。
- 路由到 API 的不同版本,包括 canary/beta 版本
- 检测使用模式、注册应用程序、检索客户端凭据等
然而,随着 Istio、Consul 等服务网格的出现,API 网关的许多功能将被网格包含。
API网关充当反向代理接受所有应用程序编程接口(API)调用,聚合实现它们所需的各种服务,和 return 适当的结果。
API 网关 比 API 代理具有更强大的功能集——尤其是在安全和监控方面。我会说 API 网关模式也称为 前端后端 (BFF) 在微服务开发中被广泛使用。查看微服务世界中 benefits and features of API Gateway pattern 的文章。
另一方面API代理基本上是一个轻量级的API网关。它包括一些基本的安全和监控功能。因此,如果您已经有一个 API 并且您的需求很简单,那么 API 代理就可以正常工作。
下图将为您提供 API 网关和反向代理之间区别的清晰图片。