API网关
API网关接收来自客户端的API请求,根据已定义的策略进行处理,将请求转发至相应的服务,并整合响应,从而简化用户体验。通常,它会通过调用多个微服务并汇总结果来处理请求。在传统部署中,它还可以在不同协议之间进行转换。
什么是API网关?
API网关接收来自客户端的API请求,根据已定义的策略进行处理,将请求转发到相应的服务,并整合响应,从而简化用户体验。通常,它会调用多个微服务来处理请求,并汇总处理结果。在旧式部署中,它还可以转换不同协议。
API网关功能
API网关通常实现的功能包括:
- 安全策略:身份验证、授权、访问控制和加密
- 路由策略:路由、速率限制、请求和响应处理、熔断器、蓝绿部署和金丝雀部署、A/B测试、负载均衡、运行状况检查以及自定义错误处理
- 可观测性策略:实时和历史指标、日志记录及追踪
为进一步增强应用和API层面的安全性,可为API网关增配Web应用防火墙(WAF)和拒绝服务(DoS)防护。
API网关的优势
部署API网关进行应用交付有助于:
- 通过封装内部应用架构,并为每种客户端类型提供量身定制的API,降低复杂性并加快应用发布
- 通过集中控制点并将非功能性需求卸载到基础设施层,简化请求处理和策略执行流程
- 借助精细的实时和历史指标及仪表板,简化故障排除
API网关和微服务架构
对于基于微服务的应用,API网关是进入系统的统一入口。它位于微服务前端,通过将应用的复杂性与客户端解耦,简化客户端实现和微服务应用。
在微服务架构中,API网关负责请求路由、组合和策略执行。对于部分请求,它只需将其路由到适当的后端服务;对于其他请求,则会调用多个后端服务并聚合结果。
API网关还可能为微服务提供身份验证、授权、监控、负载均衡和响应处理等功能,将非功能性需求的实现转移到基础设施层,帮助开发人员专注于核心业务逻辑,从而加快应用发布。
在我们的博客中详细了解使用API网关构建微服务。
适用于Kubernetes的API网关
容器是运行微服务的高效方式,而Kubernetes已成为部署和管理容器化应用及工作负载的事实标准。
根据系统架构和应用交付要求,API网关可以部署在Kubernetes集群前端,充当负载均衡器(多集群级别);也可以部署在集群边缘,充当Ingress控制器(集群级别);还可以部署在集群内部,充当服务网格(服务级别)。
在边缘和Kubernetes集群内部署API网关时,建议使用Kubernetes原生工具作为API网关。此类工具与Kubernetes API紧密集成,支持YAML,并可通过标准Kubernetes CLI进行配置,例如NGINX Ingress Controller和NGINX Service Mesh。
欢迎阅读我们的博客文章《API网关、Ingress Controller与服务网格对比》,详细了解API网关和Kubernetes。
API网关与Ingress网关或Ingress控制器
Ingress网关和Ingress控制器是用于实现Ingress对象的工具。Ingress对象是Kubernetes Ingress API的一部分,用于向外部客户端公开在Kubernetes中运行的应用。这些工具负责管理用户与应用之间的通信(用户到服务或南北向连接)。不过,Ingress对象本身的功能非常有限。例如,它不支持定义与其关联的安全策略。因此,许多供应商会创建自定义资源定义(CRD),以扩展其Ingress控制器的功能,满足不断变化的客户需求和要求,包括将Ingress控制器用作API网关。
例如,NGINX Ingress Controller可通过其VirtualServer和VirtualServerRoute、TransportServer及Policy自定义资源,在Kubernetes集群边缘用作功能完备的API网关。
API网关与Gateway API并不相同
虽然名称相似,但API网关与Kubernetes Gateway API并不相同。Kubernetes Gateway API是由Kubernetes社区管理的开源项目,旨在改进和标准化Kubernetes中的服务网络。Gateway API规范由Kubernetes Ingress API演进而来,旨在解决通过部署Ingress资源向生产环境公开Kubernetes应用时面临的各种挑战,包括为请求处理定义精细策略,以及将配置控制权委派给多个团队和角色。
基于Gateway API规范构建的工具,例如NGINX Kubernetes Gateway,可用作API网关,适用于将请求路由到特定微服务、实施流量策略以及启用金丝雀部署和蓝绿部署等用例。
观看这段短视频,了解NGINX的Jenn Gile如何讲解API网关与Kubernetes Gateway API之间的区别。
服务网格与API网关对比
A 服务网格是一种基础设施层,用于控制Kubernetes集群中各服务之间的通信(服务到服务通信或东西向连接)。服务网格为在Kubernetes中运行的服务提供核心功能,包括负载均衡、身份验证、授权、访问控制、加密、可观测性,以及用于管理连接的高级模式(熔断器、A/B测试、蓝绿部署和金丝雀部署),确保通信快速、可靠且安全。
服务网格部署在更靠近应用和服务的位置,可作为轻量而功能全面的分布式API网关,用于处理Kubernetes中的服务间通信。
如需深入了解服务网格,请阅读博客文章《如何选择服务网格》。
API网关和API管理
术语API网关和API管理经常被用来描述相同的功能,但这种用法并不准确。
API网关是API调用的数据平面入口,这些调用代表客户端向目标应用和服务发出的请求。API网关通常根据已定义的策略处理请求,包括身份验证、授权、访问控制、SSL/TLS卸载、路由和负载均衡。
API管理是部署、记录、运行和监控各个API的过程。通常使用管理平面软件(例如API管理器)来完成,该软件可为API网关和开发者门户定义并应用策略。
根据业务和功能需求,API网关可以作为独立组件部署在数据平面中,也可以作为集成式API管理解决方案的一部分,例如F5 NGINX Management Suite API Connectivity Manager。
选择API网关时的注意事项
确定API网关需求时,需要考虑以下几个关键因素:
- 架构:API网关的部署位置会影响工具选择,是否使用云服务提供商的内置选项也会产生影响。是否需要不受平台和运行时限制的灵活API网关?
- 性能:性能对于高流量网站和应用至关重要。您的API网关能否提供所需的高吞吐量和低延迟?
- 可扩展性:API网关需要能够轻松扩展,以满足不断增长的流量需求。您的API网关是否支持纵向扩展(高吞吐量)和横向扩展(高可用性),确保API始终快速响应且可用?
- 安全性:API网关是零信任架构的重要组成部分。您的API网关是否提供访问控制(AuthN/AuthZ)、mTLS,以及集成式WAF和用于正向安全的OpenAPI架构验证等其他高级安全功能?
- 成本:了解API网关的总体拥有成本。构建和维护定制解决方案与购买企业级API网关相比,各自有哪些成本和取舍?
NGINX如何提供帮助
NGINX可根据您的用例和部署模式,提供多种API网关部署和运维方案。
Kubernetes原生工具:
- NGINX Ingress Controller,通过API网关、身份管理和可观测性功能,管理Kubernetes集群边缘的应用连接
- NGINX Service Mesh,面向开发者的服务间连接、安全、编排和可观测性解决方案
立即申请30天免费试用,体验集成NGINX App Protect WAF和DoS的NGINX Ingress Controller,并下载永久免费使用的NGINX Service Mesh。
通用工具:
- NGINX Plus作为API网关:轻量级高性能API网关,可部署在云、本地和边缘环境中
- F5 NGINX Management Suite API Connectivity Manager,使用对开发者友好的API管理、治理和安全工具部署并运营API网关
要进一步了解如何将NGINX Plus用作API网关,请申请30天免费试用,并阅读我们博客上的《将NGINX部署为API网关》。要试用NGINX Management Suite,请申请30天免费试用。

