沃卡logo

理解API网关:优点和缺点

2023-01-30来源:

然而今天,托管堆栈变得更加复杂。随着越来越多的应用程序迁移到分布式,微服务基于的架构和托管环境,一种新型的工具API网关——正在成为许多堆栈的基本层。在过去,托管栈由应用程序和运行它们的服务器组成。

这里有101条关于API网关的功能,以及你什么时候想使用或者不想使用。

理解API网关:优点和缺点

什么是API网关?

API网关是一种工具或服务,它接受来自客户端的API请求,将它们转发给应用程序,并将结果发送回客户端。

换句话说,API网关是位于客户端和应用程序之间的一个层,用于管理传入的API调用。

API网关的主要优势

您不一定需要API网关来接受应用程序的API请求。您可以简单地直接向应用程序发送请求,让它们做出响应。

然而,将API网关添加到您的托管堆栈中有几个重要的好处:

API请求管理: 通过拦截API请求,API网关可以组合、重新格式化或操纵请求和结果响应。如果客户端在调用API时“说”了一件事,但您的微服务需要“听到”不同的东西才能做出响应,这将非常有用。在这种情况下,API网关本质上充当API调用的转换层.

速率限制: API网关可以“节流”或限制传入请求的速率,这意味着限制客户端在给定时间范围内可以发出的请求数量。速率限制有助于减少安全滥用。它还可以防止错误的或管理不善的客户端通过发出大量重复的、不必要的请求而淹没应用程序的风险。

负载平衡: 虽然API网关不仅仅做负载平衡,通过在多个应用实例或微服务之间分配流量来平衡负载的能力也是其特性之一。

监控和可观察性: API网关可以监控和记录API请求,提供驱动可观察性所必需的数据。

安全性: API网关也可以实施安全规则。例如,他们可以阻止恶意请求,以防止DDoS攻击.

使用其他类型的工具可以实现这些功能中的许多功能,至少是部分功能。例如,您可以尝试直接在应用程序中监控和记录API请求。但是通过将这些任务外包给API网关,您可以获得一种集中的方式来处理API管理的所有关键方面,而不必直接在应用程序逻辑中实现这些功能。

API网关与负载平衡器、编排器和服务网格

API网关并不是你在现代主机栈中可能找到的唯一新颖的层。它们通常与其他类型的解决方案一起运行,包括负载平衡器、编排器和服务网格,企业也开始部署这些解决方案来帮助管理分布式的、基于微服务的应用。

API网关功能补充了这些其他类型服务的功能,并且在某些情况下与它们重叠。但是API网关在几个基本方面是不同的:

API网关与负载平衡器: 负载平衡器的唯一工作是分配应用程序负载。API网关可以做到这一点,但是正如上面解释的,它们还可以做许多其他的事情。

API网关与编排器: 协调器管理微服务的部署。它们通常还提供一些可观察性和安全性特性,这些特性可能与API网关的特性重叠。然而,除此之外,API网关和编排器是根本不同类型的工具。

API网关与服务网格: 服务网格管理微服务之间的内部API调用。相反,API网关管理来自应用程序外部的外部API调用。

API网关的利与弊

API网关是强大的工具,但是它们并不是每个应用程序部署所必需的。

API网关的主要用例是当您部署一个接受外部API请求的应用程序时,这些请求涉及任何复杂程度,并且/或者您需要对它们实施流量或安全控制。

也就是说,API网关的缺点包括:

潜在的较低性能: API网关创建了流量需要通过的另一层,这可能会降低应用程序的性能——尤其是当网关配置不良时。

可靠性挑战: 如果您只实现一个API网关实例,网关就会成为应用程序的单点故障,从而带来可靠性风险。

冗余: 如上所述,API网关的许多功能可以使用其他工具来实现。如果你已经在用其他方式处理流量管理、监控、可观察性和安全性,那么API网关就是多余的,会给你的主机栈增加不必要的复杂性。

结论

综上所述,API网关已经成为很多托管栈的重要组成部分。如果您需要一种集中的方式来管理外部API调用的所有方面,API网关是最直接的方式。

也就是说,API网关并不是对每个用例都是必要的或者有益的。在将API网关添加到您的堆栈之前,请认真考虑使用API网关的潜在缺点,以及实现您所寻求的功能的替代方法。

  图片使用申明:原创文章图片源自‘Canva可画’平台免费版权图片素材;引用文章源自引用平台文章中所使用的原图。