为了处理微服务体系结构,它通常与反向代理(如 nginx 或 apache httpd)一起使用,并用于横切关注点实现 使用 API 网关模式。有时反向代理完成 API 网关的工作。
很高兴看到这两种方法之间的明显差异。 看起来使用 API 网关的潜在好处是调用多个微服务并聚合结果。API 网关的所有其他 责任都可以使用反向代理实现。例如:
因此,在此基础上有几个问题:
我相信,API 网关是一个反向代理,可以通过 API 动态配置,也可以通过 UI 进行配置,而传统的反向代理(如 Nginx、 HAProxy 或 Apache)是通过配置文件进行配置的,当配置发生变化时必须重新启动。因此,当路由规则或其他配置经常更改时,应该使用 API 网关。回答你的问题:
此外,API 网关通常以 SAAS 的形式提供,例如 阿皮吉或 泰克。
另外,这里是我的教程,介绍如何用 Node.js https://memz.co/api-gateway-microservices-docker-node-js/创建一个简单的 API 网关
希望能有帮助。
如果你意识到它们并不是相互排斥的,你就会更容易去考虑它们。可以将 API 网关看作是特定类型的反向代理实现。
关于您的问题,我们经常看到两者结合使用,其中 API 网关被视为位于负载平衡和健康检查的反向代理之后的应用程序层。一个例子就像 WAF 三明治架构,你的 Web 应用层防火墙/API 网关被反向代理层包围着,一个是 WAF 本身,另一个是与它交谈的单个微服务。
关于差异,他们是非常相似的。只是个术语。当您使用一个基本的反向代理设置,并开始安装更多的部件,如身份验证、速率限制、动态配置更新和服务发现,人们更可能称之为 API 网关。
API 网关通常作为 L7构造运行。
与普通的反向代理相比,API 网关提供了额外的功能。如果你考虑一下其中的一些门户网站,它们可以提供:
然而,随着像 Istio 这样的服务网格的出现,领事 API 网关的许多功能将被网格所包含。
API 网关充当 反向代理服务器,接受所有应用程序编程接口(API)调用,聚合实现这些调用所需的各种服务,并返回适当的结果。
与 API 代理相比,API 网关具有一系列更强大的特性,特别是在安全和监控方面。我认为 API 网关模式也被称为 前端后端(BFF),在 Microservices 的开发中得到了广泛的应用。查看微服务世界中的 API 网关模式的优点和特性文章。
另一方面 API 代理基本上是一个轻量级的 API 网关。它包括一些基本的安全和监视功能。因此,如果您已经有了一个 API,并且您的需求很简单,那么一个 API 代理就可以很好地工作。
下图将为您提供 API 网关和反向代理之间的差异的清晰图片。
来自 HTTP: 最终指南:
严格地说,代理连接两个或多个说话的应用程序 相同的协议,而网关连接两个或多个方 说不同的协议一个入口就像一个“通讯协定转换器” 允许客户端完成与服务器的交易,即使 客户端和服务器使用不同的协议。 在实践中,代理和网关之间的区别是模糊的。 因为浏览器和服务器实现了不同版本的 HTTP, 代理通常做一些协议转换。和商业 代理服务器实现网关功能以支持 SSL 安全性 协议、 SOCKS 防火墙、 FTP 访问和基于 Web 的应用程序。
严格地说,代理连接两个或多个说话的应用程序 相同的协议,而网关连接两个或多个方 说不同的协议一个入口就像一个“通讯协定转换器” 允许客户端完成与服务器的交易,即使 客户端和服务器使用不同的协议。
在实践中,代理和网关之间的区别是模糊的。 因为浏览器和服务器实现了不同版本的 HTTP, 代理通常做一些协议转换。和商业 代理服务器实现网关功能以支持 SSL 安全性 协议、 SOCKS 防火墙、 FTP 访问和基于 Web 的应用程序。
反向代理,如 Nginx 和 Apache,不处理可观察性、身份验证、授权、服务编排等,而只处理负载平衡和向上游转发流量。
API 网关接近用户的业务场景,并帮助用户解决各种 API 和微服务的安全性和可观察性问题。
不同的定位导致了反向代理和 API 网关技术方面的不同。API 网关,如 阿帕奇 APISIX,有近100个插件,并支持多种编程语言的插件开发。
如果您已经有一个很好的 API 网关,那么就不需要使用反向代理。
关于 Andrey Chausenko 的回答
我相信,API 网关是一个反向代理,可以通过 API 动态配置,也可以通过 UI 进行配置,而传统的反向代理(如 Nginx、 HAProxy 或 Apache)是通过配置文件进行配置的,当配置发生变化时必须重新启动。
我认为这是不正确的,因为现代反向代理像使者可以动态配置控制平面通过 xDS。