如何选择合适的 API 网关

news2024/11/25 13:15:50

如今,API 网关是设计具有多个 API 服务或微服务的分布式系统架构的重要组成部分。这篇文章帮助您了解什么是 API 网关、何时以及为何使用它,并指导您如何为您的应用程序选择最佳的 API 网关解决方案。

什么是 API 网关?

API 网关是一种服务,它是从外部世界进入应用程序的入口点。它负责请求路由、API 组合和其他功能,例如身份验证。与外观一样,API 网关封装了应用程序的内部架构并向其客户端提供 API。来自外部客户端的所有 API 请求首先进入 API 网关,API 网关将一些请求路由到适当的服务,无论是上游 API 服务器、第三方应用程序、数据库,甚至是无服务器。

API 网关的主要用例之一是它们引入了 API 即服务抽象,以允许 API 提供者抽象 API 实现并在不影响 API 消费者的情况下发展后端架构。

为什么要使用 API 网关?

在当今世界,我们通常为特定产品创建多个微服务,而客户端应用程序通常需要使用多个微服务的功能。对于这些服务中的每一个,我们将有不同的端点从外部世界访问这些服务暴露多个 URL 没有意义我们应该有一个单一的入口点到我们所有的服务,并且基于我们应该的不同路径正在做路由。

如上图所示,客户端可以通过单个请求从整体式在线示例购物 Web 应用程序中检索订单详细信息。但在微服务架构中,客户端必须发出多个请求来检索相同的信息。在此设计中,移动应用程序扮演着 API 编写器的角色。它调用多个服务并组合结果。尽管这种方法看起来很合理,但它存在几个严重的问题。

第一个问题是糟糕的用户体验,因为客户端发出多个请求来检索它想要显示给用户的数据。第二个问题是它要求移动开发人员编写可能很复杂的 API 组合代码。这项工作分散了他们创造出色用户体验的主要任务。直接调用服务的移动应用程序更具挑战性的是,某些服务可能使用客户端不容易使用的协议。还有一个缺点直接访问服务的移动应用程序的最大缺点是缺乏封装。随着应用程序的发展,服务的开发人员有时会以破坏现有客户端的方式更改 API。您还可以将其他类型客户端的 API 设计问题添加到此列表中。

如您所知,服务直接访问服务有很多缺点。客户端通过 Internet 执行 API 组合通常是不切实际的。因此,更好的方法是使用API 网关

为什么不开发自己的 API 网关

如果您有足够的资源和无限的时间(这将花费比您预期更长的时间),那么您自己开发一个 API 网关并不是特别困难。它基本上是一个代理对其他服务的请求的网络应用程序。您可以使用您最喜欢的 Web 框架构建一个具有最重要功能的框架,例如实现一种定义路由规则的机制,以最大程度地减少复杂的编码或正确实现 HTTP 代理行为,包括如何处理 HTTP 标头等。但是,您需要解决许多设计、安全和维护问题。

您需要应用适当的安全问题(除非您手头有安全专家团队)、测试每个新功能、监控 API 网关性能、记录每个更改、扩展、维护和升级内部库作为开发的一部分工作量。

如果您没有特殊的定制需求,使用市场上可用的产品可能更容易(特别是如果您需要快速使用网关)。因此,开发 API 网关的更好起点是使用为此目的设计的现成解决方案。它的内置功能显着减少了您需要编写的代码量。

10 个顶级 API 网关和管理工具

由于有多种类型的网关可用,并且每种网关都提供了许多功能。

下面,我分享了10 个顶级 API 网关和 API 管理解决方案(包括开源和 SaaS),并注意它们没有按流行或使用的特定顺序排列。

  1. 孔网关。
  2. 阿帕奇 APISIX。
  3. 泰克。
  4. 克拉肯_
  5. Gravitee.io。
  6. 艾皮吉。
  7. 亚马逊 API 网关。
  8. Azure API 管理。
  9. 大使。
  10. 格鲁。

让我们在下一节中看看如何根据最佳实践选择合适的 API 网关。

如何选择您的 API 网关

在选择完全符合您需求的 API 网关或 API 管理解决方案时,需要考虑以下一些特征。请注意,以下属性列表未按优先级顺序组织:

  1. 主要边缘功能。
  2. 安全。
  3. 配置简单。
  4. 安装和部署选项。
  5. 自托管与云托管。
  6. 定制。
  7. 一体化。
  8. 表现。
  9. 特征。
  10. 社区。
  11. 价格。

现在我们可以分解每个属性并理解​​为什么我们应该考虑每个属性。

主要边缘功能。

尽管 API 网关的主要职责是 API 路由和组合,但它还应该实现所谓的边缘功能。顾名思义,边缘功能是在应用程序边缘实现的请求处理功能。应用程序可能实现的边缘功能示例包括:

  • 身份验证——验证发出请求的客户端的身份。
  • 授权——验证客户端是否有权执行该特定操作。
  • 速率限制——限制每秒来自特定客户端和/或所有客户端的请求数。
  • 缓存——缓存响应以减少对服务的请求数量。
  • 指标收集——收集有关 API 使用情况的指标,用于计费分析。
  • 请求记录——记录请求。
  • 负载转换——API 网关应该能够提供修改请求/响应负载的能力。API 网关也可能执行协议转换。它可能会向外部客户端提供 RESTful API,即使应用程序服务在内部使用混合协议,包括 REST 和 gRPC。

您需要确保所选 API 网关开箱即用地支持上述基本横切关注点。

安全

API 网关是另一个必须开发、部署和管理的高可用组件。API 网关也有成为安全瓶颈的风险。在选择它之前,您需要确定它的安全性。它应该制定强制使用SSL(安全套接字层)并符合某些数据保护法规的政策。此外,您需要验证该工具在与管理配置交互时是否启用了强身份验证。

由于配置是一项非常关键的功能,我们需要通过 API 密钥或其他身份验证方法进行身份验证。例如,大多数 API 网关提供商(如Apache APISIX)启用了对Admin API的基于令牌的访问,他们强烈建议生成您自己的令牌并定期更改它。或者Azure API 管理依赖于Azure Active Directory (Azure AD),其中包括可选功能,例如多因素身份验证(MFA) 和Azure RBAC,以实现对 API 管理服务及其实体(包括 API 和策略)的细粒度访问。

配置简单

重要的是配置 API 网关的过程尽可能轻量级。否则,开发人员将被迫排队等候以配置网关。当微服务数量及其 API 范围增加时,路由所需的配置可能会变得复杂。当您添加/删除路由和上游服务时,请确保 API 网关配置的更新速度受到影响而不会造成任何停机。例如,APISIX 插件支持热重载,这意味着您不必通过调用特殊的 HTTP 接口来重启正在运行的服务。

检查选择的 API 网关支持的配置语言 ( JSON/Yaml) 和样式 ( )。Declarative/Imperative它不是那么重要,但有时您可能会问:它是否具有用户友好的 GUI 和易于拖放的配置选项?一些开源项目,如Tyk、Krakend.io和Apache APISIX ,具有内置的无代码可视化编辑仪表板。您甚至可以从JSON.

安装和部署选项

另一点需要考虑的是,在进行更改时安装 API 网关或重新部署网关有多困难。检查提供了哪些安装选项。大多数现代 API 网关都可以在任何环境(Linux、Windows、macOS)中以多种不同的方式(基于包、Docker、Helm、RPM)安装。例如,Kong的最大优势之一是其广泛的安装选择,带有 Docker 和Vagrant等预制容器,因此您可以快速部署。

接下来,查看部署复杂性,例如无数据库与数据库支持的部署。例如,Kong确实需要运行Cassandra或Postgres。 Apigee需要 Cassandra、Zookeeper和 Postgres 才能运行,而Express Gateway和Tyk等其他解决方案只需要Redis。Apache APISIX使用etcd作为它的数据存储,它在Data Plane的 etcd 中存储和管理路由相关和插件相关的配置。

自托管与云托管

选择 API 网关时,您需要考虑 API 网关服务的托管选项,例如内部部署、SaaS(软件即服务)或混合网关部署。API 平台的所有 SaaS 产品都包含嵌入式 API 网关功能,大多数人只是那样使用它。因为他们获得了 SaaS 环境的好处(提供可用性保证、自动扩展和操作安全性)并且很容易与云提供商的其他服务集成。

以下是云中一些流行的 API 管理解决方案的列表:

  • AWS API 网关
  • 谷歌云 API 网关
  • Azure API 管理
  • IBM API 连接

但是,如果第三方服务在您使用的云提供商中运行,并且在本地运行 API Gateway 带来更好的控制,或者还有另一种选择部署特定的开放式服务,则与第三方服务集成可能会更加困难。源或企业 API 网关到运行其他应用程序(Web 或 API 服务)的云提供商。

例如,将 Kong 或 Apache APISIX 实例部署到您选择的任何云非常简单,因为您仍然可以托管它,比方说在Microsoft Azure或AWS上,并使用免费开源项目的功能,而不是花费额外的费用他们的内置 API 管理工具。另一方面,Tyk、APIGee或API7提供云托管 SaaS 和本地部署解决方案。

客制化

API网关除了部署需求外,还有定制需求。因此,另一个需要考虑的因素是,当您不能直接使用 API 网关来满足您的需求时,选择的 API 网关如何使定制开发变得更容易。如果内置插件当前不支持系统的技术要求,有时您需要实施新的自定义插件以使用附加功能扩展网关。

Kong 提供多种语言的开源插件开发工具包(或“PDK”)。您可以使用Go、Javascript、Python和Lua构建 Kong 插件。在 Apache APISIX 中,您可以使用不同的Plugin Runners来使用您熟悉的编程语言开发插件。他们还将Wasm嵌入到 APISIX 中,您可以利用 Wasm 编译 Wasm 字节码以在 APISIX 中运行。

一体化

一个好的 API 网关的下一个特征是与更多生态系统的轻松集成。您需要检查它是否与其他产品、工具、平台和服务集成。例如,您可以调查是否支持多种应用程序协议,是否与用于身份验证的第三方身份提供者兼容,以及它是否提供可以轻松与大多数可观察性平台(如Prometheus、Skywalking、ElasticSearch、Opentelemetry、等等)。

表现

速度——这是当今数字环境的关键,如果您的应用程序性能太慢,消费者可以轻松地转向竞争对手。API 网关是应用程序的前门,所有外部请求都必须首先通过网关,这意味着它应该足够快以快速响应来自外部世界的这些请求。但并非所有 API 网关都在同一级别执行。如果您的应用程序需要快速和实时响应,您需要查看每个 API 网关提供商的性能基准。

尽管大多数公司的运营规模不是每天处理数十亿个请求,但 API 网关的性能和可扩展性通常非常重要。例如,Apache APISIX Gateway 在底层使用基数树路由匹配和 etcd 来为您提供创建高速同步系统的能力。

除了可扩展性,API 网关还必须可靠。实现可靠性的一种方法是在负载均衡器后面运行多个网关实例。如果一个实例失败,负载均衡器会将请求路由到其他实例。云供应商的一些 API 管理解决方案提供开箱即用的自动缩放功能,无需与提供此功能的服务集成。

特征

每个 API 网关都有各种不同的功能,有时彼此不同。该功能可能会受到限制,具体取决于您选择的开源或企业版,并且一些插件/扩展是免费提供的。在调查过程中,你可能知道一些来自企业的付费插件或功能可以在最广泛的开源项目中免费找到。

IBM API Connect提供自动化的、模型驱动的工具来创建 API 和分析 API 使用情况,API 提供者和消费者都可以使用这些工具。Kong 开箱即用地提供了 API 管理的许多预期功能,包括企业插件、开发人员门户、分析平台、安全功能、增强性能、GUI、24/7 支持等。

社区

如果选择的 API 网关扩展了开源网关,你需要仔细分析它是否有许可证文件,他们是否有一个活跃的社区,寻找贡献者的数量,谁是社区用户,人们提交的频率以及他们发布新版本、编写良好的文档并在论坛上回答问题。

价格

最后但同样重要的是,重要的方面之一可能是 API 管理解决方案的使用成本。如果它是许多公司已经实践的 100% 生产就绪的开源版本,您可以选择它。如果是企业版,请在付款前检查他们是否有合适的免费套餐来试验功能,以及公司是否提供您需要的全面支持。一些开源 API 网关提供商(例如Tyk或构建在 Apache APISIX之上的 API7.ai)提供相同的功能集,无论您是社区版用户还是企业用户,您都可以获得相同的 API 网关。

结论

API 网关是现代云原生微服务 API 架构的重要组成部分。然而,选择合适的 API 网关解决方案并不是那么简单。您可以在市场上找到许多开源和企业工具,包括内部部署和 SaaS。没有万能的解决方案,正确的选择取决于上面列出的许多方面,以及每个组织的独特需求。

相关资源

➔ 14 适用于现代应用程序的开源和托管 API 网关。

推荐内容💁

➔ 观看视频版本:

  • API 网关的 10 个最常见用例(视频)。

➔ 阅读博文:

  • API 网关的 10 个最常见的用例。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/42929.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【项目_02】隐藏tabbar、对城市数据进行获取、处理、渲染到页面上、城市回显 | 基于Vue3全家桶

💭💭 ✨:隐藏tabbar、对城市数据进行获取、处理、渲染到页面上 | 旅途拾景   💟:东非不开森的主页   💜: 怎么会没有遗憾呢,一直向前就对了💜💜   🌸: 如有…

考 PMP 证书真有用吗?

有用还是有用的,但是毕竟是一纸证书,本身的作用有限,还是要看就业环境看行业对 PMP 证书的重视程度,目前来说,pmp 在行业还是吃香的。 ​ 一、PMP 证书的市场需求 1、行业认可度高,市场需求大 PMP 是由…

【附源码】计算机毕业设计JAVA郑工社团交流服务信息平台

【附源码】计算机毕业设计JAVA郑工社团交流服务信息平台 目运行 环境项配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: …

2009(408)数据结构有关链表代码题

算法思想 第一种(普通算法):遍历链表,输出链表的长度,比较链表长度与k的关系,若长度小于k则失败,返回数值0。如果长度大于k,将指针移动到第倒数第k个位置,输出data的值,…

个性化邮箱:wodMailbox ActiveX 组件-PJ

wodMailbox ActiveX 组件 邮箱 ActiveX 组件(MIME BASE64、BINHEX、UUDECODE、QUOTED-PRINTABLE 解码) ...提供对邮箱和消息解析的完整 MIME 管理。您可以轻松地访问邮箱、计数消息、检查消息、计数部分、保存附件、查看标题、删除消息等。当wodMailBox打…

iOS证书和描述文件申请详情步骤

因为之前在iOS开发这条道路上吃了很多不必要的亏,特此想把自己的经验分享给大家,对于初学者来讲不是上架App Store购买一个黑苹果是不划算的,简单的内测或者玩玩完全是浪费钱啊(有钱可忽略),特此介绍一个小…

重读经典论文: Mean Value Coordinates for Closed Triangular Meshes

Mean Value Coordinates for Closed Triangular Meshes 发表于ACM SIGGRAPH 2003, 是图形学领域的经典论文,作者是之前组里毕业的居涛,论文只有6页,这在SIGGRAPH会议中并不多见,目前引用超过700次,在插值,参…

基于模糊RBF神经网络轨迹跟踪matlab程序

基于模糊RBF神经网络轨迹跟踪matlab程序 1 模糊RBF网络 在模糊系统中,模糊集、隶属函数和模糊规则的设计是建立在经验知识基础上的。这种设计方法存在很大的主观性。将学习机制引入到模糊系统中,使模糊系统能够通过不断学习来修改与完善隶属函数和模糊规…

天宇优配|前10月工业企业利润结构优化 稳增长望再发力

11月27日,国家统计局发布了最新规划以上工业企业效益状况。受国内疫情发出多发、工业出产者出厂价格同比由涨转降等要素影响, 1~10月,规划以上工业企业赢利同比下降3%, 且降幅较上月扩展。不过,部分中下游职…

一文理解Linux的基本指令(下)(三分钟学会Linux基本指令)

前言: 衔接上一篇文章,继续总结一下Linux操作系统的指令,不会有人认为Linux系统指令只有上篇文章那么多了吧,嘿嘿小马告诉你可不止这么多,而我这篇文章总结完,也只是我们所用的比价常用的,而还有…

基于ACO蚁群算法的tsp优化问题matlab仿真

目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 “基本原理 蚁群算法(Ant Colony Optimization,ACO)是一种基于种群寻优的启发式搜索算法,有意大利学者M.Dorigo等人于1991年首先提出。该算 法受到自然界真实蚁群集体在觅食过程中行为的启发,利用…

国密浏览器介绍与下载

国密浏览器介绍与下载密信浏览器介绍支持操作系统下载地址奇安信可信浏览器(国密开发者专版)介绍支持操作系统下载地址红莲花安全浏览器介绍支持操作系统下载地址零信浏览器介绍支持操作系统下载地址360安全浏览器介绍支持操作系统下载地址密信浏览器 介…

DocuWare 文档管理系统Intelligent Indexing(智能索引)、 Forms(表单)和连接到Outlook 功能

一、DocuWare Intelligent Indexing(智能索引)功能 没有什么能像手动输入数据那样减慢流程的速度。键入数据速度慢、容易出错且无法有效扩展。对于生产力至关重要的组织,必须自动从扫描的文档、PDF 和其他文档中捕获关键数据字段。 数据从非…

国家自然科学基金委资助项目简介

国家自然科学基金委员会根据科技发展趋势和国家战略需求设立相应的项目类型,经过不断优化调整,形成了结构合理、功能完备的资助体系。 一、面上项目 简称:面上 面上项目支持从事基础研究的科学技术人员在科学基金资助范围内自主选题&#xf…

女性气虚胃寒怎么办 六招可祛寒补气

当外部环境发生变化时,人体内的血管也会收缩或放松。然而,当血管受到刺激时,会导致过度收缩,导致血液供应不足,人体会感到寒冷。然而,对于一些气虚的女性来说,她们的身体抵抗力相对较弱&#xf…

《谷歌眼镜》新书作者:眼镜需要成为AR的载体吗?

近10年前,谷歌推出了首款AR眼镜Google Glass,尽管这款产品并没有如预期般取得成功,但它为后续AR硬件技术的发展奠定了基础。我们知道,从微软HoloLens开始,AR头显/眼镜产品更侧重于B端应用,面向C端发售的很少…

创作者基金 11 月亮点

一个月又过去了,新一期创造者基金亮点要来了。这一次是平台游戏资产和民俗生物......我们精选了 2022 年 11 月的精华部分,一起来了解下。 这 20 个新资产已在 The Sandbox 市场平台发售。 NFT 系列介绍 一起先睹为快吧! 亚马逊怪物&#xff…

企业如何轻松做好软文推广?

在互联网飞速发展的背景下,信息的传播速度是惊人的。软文营销是数字营销的一部分,涉及在线创建和共享有价值的内容以吸引、吸引和转换客户并增加网站流量。这可以包括文章、视频、图片等。软文营销是推动销售的关键因素,因为它有助于与潜在买…

进程与信号(二)

目录 一、前言 二、Starting New Processes 1、system1.c 2、Front Contents (1)Replacing a Process Image(更换进程镜像) (2)pexec.c (3)Duplicating a Process Image&…

55 - 经典问题解析四(动态内存分配虚函数继承中的强制类型转换)

---- 整理自狄泰软件唐佐林老师课程 1. 关于动态内存分配 new和malloc的区别是什么? delete和free的区别又是什么? 1.1 问题一:new和malloc的区别 1.1.1 new关键字和malloc函数的区别 new关键字是C的一部分malloc是由C库函数提供的函数ne…