3. API 网关基础概念
在平台工程与容量压测作业平台的架构中,API 网关是所有微服务流量的统一入口与策略执行点。理解网关的核心概念、功能与产品选型,是后续进行权限集成与压测流量治理的前提。
3.1 什么是 API 网关
API 网关是一个位于客户端与后端服务集群之间的中间层,负责处理所有 API 请求的接入、路由、过滤与响应。它封装了内部系统的复杂架构,为客户端提供统一的访问端点,同时集中执行横切关注点(如认证、限流、监控)。
平台工程视角: 在压测作业平台中,API 网关不仅是流量入口,更是压测流量与生产流量的隔离边界,以及权限策略的强制执行点。
3.2 网关的核心功能
现代 API 网关通常包含以下四大核心功能,这些功能在压测平台中各有关键作用:
| 核心功能 | 说明 | 压测平台中的价值 |
|---|---|---|
| 路由 | 根据请求路径、方法、Header 等条件,将请求转发到对应的后端服务 | 将压测请求路由到压测环境或影子库,避免影响生产服务 |
| 限流 | 控制单位时间内的请求数量,防止后端被突发流量击垮 | 压测时保护下游服务不被压测流量过度冲击,支持按租户/接口粒度限流 |
| 鉴权 | 验证请求的合法性,包括身份认证与权限校验 | 确保只有授权的压测任务才能调用目标接口,防止越权操作 |
| 监控 | 收集请求的延迟、错误率、吞吐量等指标,并上报到监控系统 | 实时观察压测流量状态,为容量评估提供数据支撑 |
关键设计原则: 在压测作业平台中,网关的鉴权与限流功能必须优先于路由执行,确保非法或超限请求在进入内部网络前即被拒绝。
3.3 常见网关产品对比
当前业界主流的 API 网关产品包括 Kong、APISIX 和 Zuul。下表从平台工程关注的维度进行对比:
| 对比维度 | Kong | APISIX | Zuul (Netflix) |
|---|---|---|---|
| 开发语言 | Lua (基于 OpenResty) | Lua (基于 OpenResty) | Java (基于 Servlet) |
| 性能 | 高(Nginx 内核) | 高(Nginx 内核,优化更好) | 中等(同步阻塞模型) |
| 插件生态 | 丰富(官方 + 社区) | 丰富(动态加载,热更新) | 有限(需自定义开发) |
| 动态配置 | 支持(通过 Admin API) | 支持(热更新,无需重启) | 需配合配置中心 |
| 鉴权插件 | Key-Auth、JWT、OAuth2、ACL | Key-Auth、JWT、OAuth2、Casbin、ACL | 需自行实现 Filter |
| 限流能力 | 计数器、滑动窗口、Redis 限流 | 计数器、滑动窗口、并发限流、Redis 限流 | 需自行实现 |
| 适用场景 | 通用微服务网关、API 管理 | 高性能场景、动态路由、压测平台 | Spring Cloud 生态、Java 技术栈 |
选型建议: 对于容量压测作业平台,推荐优先评估 APISIX。其动态热更新能力允许在压测过程中实时调整限流阈值与路由规则,无需重启网关;同时其内置的 Casbin 插件可无缝对接后续的权限集成设计。
3.4 网关在压测平台中的架构位置
下图展示了 API 网关在容量压测作业平台中的核心位置与流量流转关系:
3.5 网关核心流程:请求处理生命周期
一个 API 请求在网关内部的处理顺序,决定了压测平台的流量治理效果。下图展示了标准网关的请求处理生命周期:
平台工程最佳实践: 在压测作业平台中,建议在网关的鉴权阶段增加“压测任务状态校验”——只有处于“运行中”状态的压测任务所发出的请求才允许通过,避免误操作或残留任务造成流量泄露。