谷歌云API 网关深度解析:从传统功能到云原生新范式
目录
1. API 网关的作用与传统功能
1.1 什么是 API 网关
以 Kong 为例,API 网关的作用就是把后端服务共同需要的、与业务逻辑无关的公共功能抽取出来,做成一个中间层。
-
无网关架构:如果没有 API 网关,每个后端服务(如认证、统计、安全校验)都需要重复实现,导致大量重复工作。
-
网关架构:引入 API 网关后,后端服务只需关注自身业务逻辑,所有公共服务(如统计、安全、限流、缓存)都由 API 网关统一处理。
1.2 传统的 API 网关功
API 网关的原始目的是让 API 请求更安全、更高效地得到处理。其传统功能包括:
-
全面覆盖 Nginx 功能:包括反向代理、负载均衡、基本的缓存、安全认证、限流限速等。
-
支持动态能力:提供传统 Web 服务器(如 Nginx、Apache)实现不了的功能,例如动态上游配置、动态 SSL 证书、动态限流限速,以及主动/被动健康检查、服务熔断等。
-
API 全生命周期管理:以谷歌收购的 Apigee 为代表,API 网关的功能范畴扩展到 API 的设计、文档编写、测试,直到最终上线,覆盖了 API 的完整生命周期。

2. 云原生下的新功能与架构新变化
在云原生和微服务体系下,谷歌云API 网关必须做出升级以适应新的技术架构和流量需求:
-
集成可观测性组件:需要对接云原生中的重要组件,如 Prometheus、Zipkin、Skywalking 等。
-
gRPC 代理和协议转换:支持 gRPC 协议代理,并提供 REST 与 gRPC 之间的协议转换功能,以适应微服务内部越来越多地采用 gRPC 的趋势。
-
身份认证方式改变:传统的网关较少对客户端身份做严格认证,但在云原生环境下,网关需要支持更严格的身份认证方式,如加密、OpenID 等。
-
Serverless/FaaS 集成:网关具备了 FaaS(Function as a Service)功能,允许用户将 API 网关部署在边缘节点上,动态地运行或停止函数,增强边缘节点的灵活性。
-
高性能与弹性伸缩:由于 4G/5G、手机和 IoT 设备带来的巨大流量压力,网关需要具备更高的性能,同时必须无状态,并对 Kubernetes 友好,支持随意扩容和缩容。
-
多云和混合云支持:提供与特定云厂商无关的 API 网关,作为统一的分发层,帮助企业在腾讯云、谷歌云、阿里云和私有云之间根据安全和价格策略进行流量动态切换。

3. 应用范例:Nginx 替换与零信任网关
3.1 替换 Nginx 处理南北向流量
新的 API 网关(如 Kong 或 APISIX)的核心优势在于其完全动态的配置能力,可以替换 Nginx 处理南北向流量。
-
动态性优势:在 Nginx 中修改配置需要
reload,而在 API 网关中,可以通过 API 轻松地实时修改上游服务器、动态证书等配置。 -
场景效益:在突发流量场景下,无需频繁修改配置文件和
reload,极大地降低了运维成本和风险,虽然性能略低于 Nginx,但换来的灵活性是巨大的。
3.2 零信任网关的实践
零信任 (Zero Trust) 是近年安全领域的热点。传统的安全基于边界防护(非黑即白),一旦突破边界,内网畅通无阻。
零信任网关则彻底改变了这一模式,其核心理念是“所有流量都是不安全的”(非白即黑):
-
基于身份认证:API 请求到达后,必须先经过 Auth0、OKTA 等第三方身份认证厂商的服务器认证身份。只有身份认证通过,请求才会被允许通过。
-
解决痛点:彻底解决了传统边界防护因规则更新不及时而被穿透的问题,是安全领域的一个重要趋势。

4. 企业需求与网关选型原则
4.1 企业用户的核心需求
-
不锁定,可回退:API 网关是流量入口,企业要求不能被特定厂商锁定(如云厂商),并能轻松回退到旧系统(如 Nginx)。
-
保持核心稳定:即使功能迭代快速(如 APISIX),也要保持核心代码的稳定性和可靠性。
-
支持个性化开发:通过插件机制满足企业个性化需求,避免产品过于臃肿,同时保证底层核心的稳定。
4.2 API 网关的选型要素
选型原则应是:做云原生友好的、高性能的、开源的 API 网关,且对开发者友好。
| 核心组件 | 关键技术考量 | APISIX 的选择 |
| 路由 | 选择遍历还是树结构?如何加载插件? | 最初选择 lua-resty-r3,最近新增路由 FFI。 |
| 插件 | 是否支持热加载?是否方便定制开发? | 灵感来自 Kong,但架构完全不同,支持插件热更新。 |
| Schema 校验 | 是否支持对请求参数进行合法性校验? | 借用腾讯开源的 rapidjson 实现 json schema 标准校验。 |
| 存储 | 选择关系型数据库、键值数据库还是 Etcd? | 选用 etcd,基于其高可用和可扩展性。 |
APISIX 的独特优势:
-
超强性能:内部测试显示性能可达 Kong 的 10 倍。
-
插件热更新:修改或增加插件无需重启服务。
-
零信任支持:新功能可支持外部身份认证,轻松实现基于身份的零信任安全。
-
二次开发难度低:二次开发难度远小于 Kong(例如限流限速功能只需增加六七十行代码)。
更多推荐
所有评论(0)