API网关除了路由和鉴权,还承担着流量管控的重要职责。流量管控包括限流、流量整形、协议转换、请求响应转换等能力。这些功能让网关不仅是流量入口,更是流量治理的中心。本文介绍网关流量管控的实战方案。
流量整形策略
流量整形平滑突发流量,保护后端服务。令牌桶算法允许一定程度的突发但限制平均速率。排队算法将超过阈值的请求排队等待处理,避免直接拒绝。优先级队列:VIP用户的请求优先处理,普通用户排队。流量整形配合限流使用,限流拒绝超额请求,整形平滑流量波动。合理的流量整形能显著提升系统在突发流量下的稳定性。
协议转换能力
网关可以承担协议转换职责,对外暴露HTTP协议,对内转发gRPC或Dubbo协议。HTTP转gRPC:网关将HTTP请求转换为gRPC调用,将JSON请求体转换为Protobuf格式。协议转换让客户端无需感知后端的技术栈。网关还可以实现WebSocket和HTTP之间的转换。协议转换的性能开销需要关注,通常比直接转发高10%-20%。
请求响应转换
网关可以修改请求路径、添加或删除请求头、改写请求体。常见场景:统一添加认证头、转换日期格式、字段名映射。响应转换:统一错误码格式、添加跨域头、压缩响应体。转换规则支持条件判断,不同路径不同转换策略。转换功能避免了在每个微服务中重复实现同样的逻辑。转换规则需要谨慎配置,不当的转换可能导致业务逻辑错误。
流量镜像与会话保持
流量镜像将请求复制一份发送到测试环境,用于新版本验证而不影响线上流量。镜像流量不返回响应,只用于观察。会话保持(粘性会话):同一用户的请求始终路由到同一后端实例。实现方式有源IP哈希和Cookie注入。会话保持对于有本地缓存的场景特别重要。但会话保持可能影响负载均衡的均匀性,需要权衡使用。