网关是系统的统一入口,负责接收客户端请求,进行路由转发、负载均衡、安全控制、流量管理、监控等操作,最终将请求分发到后端服务。在测试工作中,通过网关日志和监控,可以在事务失败时帮助区分是网关层还是服务端的问题。本文主要对API网关进行介绍,并围绕流量控制和负载均衡场景进行测试用例的梳理。
API网关的能力
路由与请求转发
根据请求路径、方法将客户端请求路由到对应的后端服务。
可基于正则表达式、前缀匹配或精确路径匹配的路由规则进行请求转发。
作用:可实现服务解耦,隐藏后端服务的物理位置和部署细节,保障一定的安全性。
负载均衡
将请求分发到多个后端实例,提高服务处理能力,避免单节点故障。
规则:轮询、加权轮询、最少连接、IP哈希算法。
安全认证与授权
可以进行通用的客户端身份验证,控制客户端对API资源的访问权限。
IP 白名单:限制特定 IP 或 IP 段的访问权限。
流量管理
限流:限制单位时间内的请求量,防止后端服务过载。
熔断:当后端服务不可用时,快速返回错误响应以避免级联故障。
重试:对暂时失败的请求自动重试,提升系统容错性。
缓存机制
缓存高频访问的API响应结果,减少后端负载并提升性能
监控与日志
指标采集:可以采集被代理的接口数据,记录请求量、响应时间、错误率等关键指标。
日志记录:存储请求详细信息(如 IP、路径、时间戳),用于审计和问题排查。
可视化:通过仪表盘实时展示系统状态(如 Prometheus + Grafana 集成)。
API流量控制测试策略(100并发限制)
正常流量下的请求处理
JMeter 模拟每秒80个线程请求订单创建接口
预期:所有请求成功,返回 200 状态码
超限流量出发拒绝:
JMeter 模拟每秒120个线程请求订单创建接口
预期:超出部分,返回 429(Too Many Requests)
限流规则动态生效
运行时修改限流规则为每秒50次,验证新规则是否立即生效
预期:超出50次请求被拒绝。
API负载均衡测试策略
轮询策略验证
启动两个订单服务实例,发送10次请求到网关,检查请求分发均匀性。
预期:请求按轮询策略分配到两个实例
实例故障自动剔除
停止一个订单服务实例,发送请求到网关,检查是否仅访问存活实例。
预期:所有请求路由到存活实例
权重分配策略验证
配置实例A权重为70%,实例B为30%,发送100次请求,统计分发比例。
预期:实例A处理约70次,实例B处理。
评论区