为了处理微服务架构,它通常与反向代理(例如nginx或apache httpd)一起使用,并且用于横切关注实现API gateway pattern is used。有时反向代理执行API网关的工作。
很高兴看到这两种方法之间存在明显的差异。
看起来API网关使用的潜在好处是调用多个微服务并聚合结果。 API网关的所有其他responsibilities可以使用反向代理实现。例如:
基于此,有几个问题:
答案 0 :(得分:57)
如果您意识到它们并非相互排斥,那么更容易思考它们。将API网关视为特定类型的反向代理实现。
关于您的问题,通常会将API网关视为位于反向代理后面的应用程序层以进行负载平衡和运行状况检查,这一点并不少见。一个例子就像是WAF三明治体系结构,因为你的Web应用程序防火墙/ API网关被反向代理层夹在中间,一个用于WAF本身,另一个用于与之交谈的各个微服务。
关于差异,它们非常相似。这只是命名法。当您采用基本的反向代理设置并开始抽取诸如身份验证,速率限制,动态配置更新和服务发现等更多部分时,人们更有可能将其称为API网关。
答案 1 :(得分:21)
我相信,API Gateway是一个反向代理,可以通过API动态配置,也可以通过UI动态配置,而传统的反向代理(如Nginx,HAProxy或Apache)是通过配置文件配置的,必须在配置更改时重新启动。因此,当路由规则或其他配置经常更改时,应使用API网关。对你的问题:
此外,API网关通常以SAAS的形式提供,例如Apigee或Tyk。
另外,这里有关于如何使用Node.js创建简单API网关的教程https://memz.co/api-gateway-microservices-docker-node-js/
希望它有所帮助。
答案 2 :(得分:1)
API网关通常用作L7构造。
与纯反向代理相比,API网关提供了其他功能。如果您考虑其中的某些门户网站,它们可以提供:
然而,随着Istio之类的服务网格的出现,Consul的许多API网关功能将被网格所包含。