API 网关如何工作?

Posted

技术标签:

【中文标题】API 网关如何工作?【英文标题】:How do API Gateways work? 【发布时间】:2012-07-05 02:14:36 【问题描述】:

API 网关的典型组件有哪些?是否有关于他们如何管理安全性、通话记录和治理的通用标准?

【问题讨论】:

【参考方案1】:

这是一个范围很广的问题,因为有很多不同类型的网关(和管理解决方案)。从最广泛的意义上讲,网关是您的 Web 堆栈(由您或第三方托管)中某处的过滤器,它以某种方式过滤您的 API 流量。可能会发生一些过滤:

在 CDN 中,如果您在 CDN 到达您的服务器之前使用它。 在您重定向流量的第三方托管的代理中。 在您自己的云或本地基础架构中运行代理软件(第三方、开源或内部)的专用机器中。 在将流量用于主要处理之前,在应用程序堆栈的特定部分内。

通常网关可以提供的功能类型可能包括:访问控制(过滤流量,以便只有经过身份验证/授权的流量通过)、速率限制(限制 API 的每个客户端可以发送多少流量)、分析/指标捕获和日志记录(跟踪 API 上发生的事情)、安全过滤(检查传入消息的内容是否存在攻击、重定向/流量路由(根据发送者或请求将流量发送到您自己的基础设施中的不同端点)。

网关通常作为一组模块和过滤器来处理高速流经的流量,您通常可以启用您需要的那些模块/过滤器并控制它们的参数。显然有很多不同的方法可以实际执行 + 各种供应商和开源系统可供选择。

我会尽量保持中立,因为我为 3scale 工作,它提供商业和开源解决方案,但我鼓励您查看各种选项并得出自己的结论!您的主要选择是:

本地专有网关,来自供应商,例如 Apigee 和 Layer7 - 这些通常是您的硬或软设备 在您的数据中心本地安装。 云托管网关,来自 Mashery、Apigee 和 WSO2 API Cloud 等供应商,它们有效地将 API 流量通过其服务器重定向以运行。 插件/代理架构,如3scale(我工作的),它提供的软件模块可以在应用程序内部部署,在Varnish 等开源代理网关内部部署,也可以连接到CDN . 开源解决方案,例如 APIAXLE 和 WSO2,可以部署在本地或云端。

不同的方法有不同的作用,这取决于您的目标。在 3scale,我们显然对我们的方法有偏见,因为它允许您在堆栈中的几乎任何位置插入过滤代理 - 但毫无疑问,每个供应商都会有自己的看法!

【讨论】:

所以3Scale没有自己的代理网关!! 3scale 可以——它基于 nginx API 消费者是否使用 API 网关? - 例如,我们调用各种第三方 api,并且拥有网关层将帮助我们获得您在上面详述的好处。任何现实世界的例子也会有所帮助 AWS 和 Azure 等主要云厂商也将在其堆栈中内置 API 网关。 请参阅有关 API 网关为何重要的一般信息 - sanganakauthority.blogspot.com/2019/05/…【参考方案2】:

API 网关的概念(对我而言)通过类比更容易理解。如果您考虑办公楼前面的接待台,它基本上可以路由电话、阻止不速之客并确保包裹到达正确的地方。

这正是 API 网关在分布式应用程序中的作用。它接受请求并将它们重定向到正确的服务。放入图片中,这就是它的外观。

基本上,它是您的微服务和不同客户端请求(浏览器、应用程序等)之间的前台。至于它们是如何工作的,有哪些组件等等,这完全取决于实现和需求。一些 API 网关处理身份验证和授权,其他处理和验证输入数据,或转换响应。有些提供监控信息,有些提供全部。

如果您正在寻找更多技术回复,Steve 提供了有关构成此类层的不同组件的详细信息。

【讨论】:

喜欢简单的解释,有时我们需要这些而不是太深入杂草

以上是关于API 网关如何工作?的主要内容,如果未能解决你的问题,请参考以下文章

搞定NGINX Plus API网关部署,1小时就够了

工作几年了,API 网关还不懂?

如何允许API网关代理与POST请求的Cognito Authorizer集成?

GraphQL 和 Zuul:Graphql 将作为一个休息端点工作,zuul 作为 api 网关

架构师如何选型分布式业务网关

如何使用 AWS API 网关和 Lambda 通过 CORS?