• API Gateway 在云原生应用程序中的作用
  • 发布于 2个月前
  • 206 热度
    0 评论
云原生应用程序体积更小、分布更广、并为高度动态的环境设计,它们的快速增长使得 API 网关变成了推动数字化计划不可或缺的中间部分。同时,Kubernetes Gateway API 的出现,得到了 Envoy Gateway 项目的支持,正推动着向标准化和互操作性的转变。最终,这将使组织能够利用标准 API 网关的优势,即使 API 网关供应商有动力投资于持续的创新。

本文将探讨 API 网关如何适应现代云原生应用的需求,包括 API 网关作为云操作系统的一部分的概念,新兴的 Kubernetes Gateway API 和 Envoy Gateway 项目的角色,以及可能的未来发展。

一.API Gateway 在云原生应用程序中的作用
现代云原生应用程序专为利用云基础设施和服务而设计和开发。它遵循可扩展性、弹性和灵活性的原则,使组织能够构建健壮且敏捷的软件系统。典型的云原生应用由多种组件组成,包括前端、Backend For Frontend(BFF)服务、后端服务和数据库。让我们看下每个组件以及 API 网关在协调和管理它们之间的通信中发挥的关键作用。

云原生应用程序组件

前端:前端是负责渲染用户界面和与最终用户交互的用户面部分。它由通过 API 网关暴露的 API 与后端服务通信的 Web 或移动应用程序组成。前端组件可以使用 React、Angular 或 Vue.js 等框架构建,并设计为轻量级、高响应性且可扩展的,以有效处理用户请求。


Backend For Frontend (BFF)服务:云原生应用的重要组成部分,BFF 服务是充当中间人的专用组件,汇聚和转换来自各种后端服务的数据,以满足特定的前端需求。他们封装业务逻辑,处理身份验证和授权,并优化数据交付,以提高性能和用户体验。API 网关根据请求的功能将前端的请求路由到适当的 BFF 服务。


后端服务:云原生应用程序通常包含多个后端服务,每个服务负责一组特定的功能或微服务。这些服务被设计为松散耦合、独立部署且可扩展的。后端服务通过 API 相互通信,API 网关在路由和负载平衡这些服务的请求方面起着关键作用。他们通常使用 Node.js、Java、Python、Ballerina 或 Go 等技术构建,并利用容器进行部署和扩展。


数据库:可以使用传统的关系型数据库或 NoSQL 数据库来存储和管理应用程序的数据,具体取决于应用程序的特定要求。

API 网关的作用
如我们所见,云原生应用程序的 API 网关充当外部请求的中央入口点,并提供访问其各个组件的统一接口。它处理诸如请求路由、身份验证、授权、速率限制和 API 分析的任务。通过将这些关注点从单个组件中卸载,API 网关简化了开发,提高了性能,并增强了应用程序的整体安全性。

具有多个服务的组织通常将它们分组到业务领域。一种方法是使用领域驱动设计(DDD)原则。当一个域中的服务与其他域的服务通信时,这些调用通常会通过 API 网关。在这种情况下,组织通常会有两个 API 网关:一个用于内部 API,另一个用于外部 API。


二.Kubernetes:云操作系统
技术的进步 —— 从大型机和小型计算机到个人计算机、移动设备和云原生计算 —— 以及现代应用程序的不断变化的需求,多年来已经推动软件架构有了显著发展。这个演变的一个重要方面是,就像 Linux 在二十年前成为了企业应用程序的操作系统一样,Kubernetes 现在已经成为了云原生应用程序的操作系统。

Kubernetes 抽象了底层基础设施,并提供了在机器集群上部署和管理容器化应用程序的统一 API。它还提供了核心功能,如自动缩放、负载均衡、服务发现和滚动部署,使得更容易以云原生方式构建和运营具有弹性的、可扩展的应用程序。此外,Kubernetes 与其他云原生组件(如服务网格,当然还有 API 网关)集成,以创建一个全面的应用程序交付基础设施。

通过利用 Kubernetes,组织可以实现云的可移植性,轻松地将应用程序部署到多个云提供商和现场环境中。凭借其可扩展的架构和强大的工具和扩展的生态系统,Kubernetes 现在是管理复杂的云原生架构的首选。

API Gateway 正在成为云操作系统的一部分
随着 Kubernetes 成为云的操作系统,API 网关也正在成为该操作系统的一部分。随着云原生应用的崛起,API 网关已经演变成构建和管理这些应用所需的基础架构的关键组成部分。它不再仅仅是一个独立的服务,而是云操作系统不可分割的一部分。这种转变受到管理 API 的标准化和集中化方式的需求推动,就像云原生生态系统中的 Service 和 Job 一样。

API 的抽象
云原生应用包括许多微服务,每个都提供特定的功能。这些微服务通过 API 相互通信。然而,随着微服务数量的增加,管理和保护 API 变得越来越复杂。这时 API 网关就发挥作用了,它为外部请求提供统一的入口,实施安全策略,并处理流量管理。

与云操作系统中的 Service 和 Job 的抽象相似,API 网关为 API 提供了更高级的抽象。它让开发人员能够专注于构建和部署微服务,同时抽象出 API 管理的复杂性,例如请求路由、认证和速率限制。这种抽象化简化了开发,提高了安全性,并提升了可扩展性。

三.Kubernetes Gateway API
认识到云原生环境中 API 管理的重要性,Kubernetes 社区推出了 Kubernetes Gateway API。Gateway API 的目的是使 API 成为 Kubernetes 上的一等公民,为 Kubernetes 生态系统内定义和管理 API 网关提供标准化的方式。

Gateway API 规范为配置和操作 API 网关提供了一个一致的接口,而不受底层实现的影响。它允许声明性配置,使得能轻松管理和版本化 API 网关配置,成为 Kubernetes manifest 的一部分。Gateway API 规范带来了可移植性和互操作性的优势,允许组织采用不同的 API 网关实现,而无需修改其应用程序。

Envoy Gateway 项目
Envoy Gateway 是 Kubernetes Gateway API 中一个受欢迎的项目。Envoy 是一个开源的、高性能的边缘和服务代理,为云原生环境而设计。它提供了诸如负载均衡、服务发现、速率限制和可观察性等高级功能。通过集成 Envoy 作为网关实现,组织可以利用 Envoy 提供的特性和能力,同时遵守 Gateway API 规范。

Envoy 作为一个强大而灵活的数据平面代理,管理外部客户端和运行在 Kubernetes 上的微服务之间的流量。它的可扩展架构允许集成各种认证机制、服务网格和其他云原生组件。

Envoy Gateway 项目,加上 Kubernetes Gateway API,使得组织能够在 Kubernetes 生态系统内构建一个健壮且标准化的 API 管理基础设施。它提供了一种无缝且可扩展的方法来处理 API 流量,确保可靠的请求传递并执行安全策略。

再见,API Gateway。万岁,Gateway API!

随着 Gateway API 的出现及其对配置和管理 API 网关的标准化方法,实际的 API 网关运行时变得不那么重要了。传统上,组织会选择和配置一个特定的 API 网关实现来处理他们的 API 流量。然而,Gateway API 将特定的实现细节抽象化,允许组织可以互换地采用不同的 API 网关运行时。

焦点从运行时转向了 Gateway API 规范,它提供了一种一致的方法来定义 API 网关配置。组织可以选择一个与其特定要求一致的 API 网关运行时,并可以在不同的实现之间无缝切换,而不会影响应用程序代码或配置。

这种从 Gateway API 规范中解耦运行时使得组织能够在保持选择最适合其需求的运行时的灵活性和选择性的同时,利用标准化 API 网关配置的优势。它也鼓励 API 网关供应商之间竞争与创新,因为他们可以在遵守 Gateway API 规范的同时,通过提供独特的功能和优化来区分自己的产品。

API 配置和管理的变革
Gateway API 对 Kubernetes 中配置和管理 API 的方式带来了显著的改变。过去,配置 API 网关需要手动配置并与特定的 API 网关运行时配置进行交互。但是,有了 Gateway API,开发人员和运维团队可以直接在 Kubernetes 清单中定义 API 网关配置,从而利用 Kubernetes 的声明式特性。

这一转变使得开发人员和运维团队在 API 配置过程中拥有了更多的控制权。他们可以使用熟悉的 Kubernetes 资源定义来定义 API 的路由规则、安全策略和转换。此外,Gateway API 使他们能够将 API 网关配置作为其基础设施即代码实践的一部分,从而提升一致性、版本控制和可扩展性。

通过抽象出 API 网关运行时配置的底层细节,Gateway API 简化了开发人员和 DevOps 团队的 API 管理过程。它减少了分别管理 API 网关配置的复杂性,使他们可以专注于构建和部署应用程序的核心职责。这种简化的方式加强了开发和运营团队之间的协作和敏捷性,最终实现了 API 的更快速、更可靠的交付。一些供应商会提供 API 的扩展,支持组织所需的特殊和区分性功能。但是,核心 API 将保持通用。

四.结语
随着云原生应用不断塑造软件架构的未来,API 网关在使微服务间的通信变得安全且可扩展方面发挥了关键作用。同时,云计算的不断演变使得 API 网关成为了云操作系统的一个不可或缺的组成部分。

随着 Gateway API 的诞生,我们见证了一个朝着标准化和互操作性方向的转变,使得组织能够构建出可移植、灵活且健壮的云原生应用程序。通过采纳这些先进的技术,我们可以期望在未来,Gateway API 将成为云原生生态系统的一个重要组成部分。
用户评论