灰度发布(金丝雀发布)是降低发布风险的关键技术。新版本先在小范围用户中验证,确认稳定后再全量推送到所有用户。API网关在灰度发布中扮演流量路由的核心角色。本文分享基于网关的灰度发布实施方案。
灰度策略定义
灰度策略决定哪些用户访问新版本。常见策略:按用户ID取模(如userId取模100小于5的5%用户走新版本)、按地域灰度(仅灰度华东地区用户)、按用户标签灰度(仅VIP用户走新版本)、按请求比例灰度(随机5%的请求走新版本)。灰度策略需要支持组合,如:VIP用户且地域在上海的两个条件同时满足。策略配置在网关路由规则中,支持动态修改。
灰度流量路由
网关识别灰度流量后路由到新版本服务。识别方式可以从请求头、Cookie或JWT中获取用户信息。新版本服务与旧版本服务同时部署,但新版本只接收灰度流量。灰度流量和稳定流量在网关处分流,对客户端透明。灰度实例的负载较低,方便观察新版本的运行状态。如果灰度过程中发现问题,立即调整策略将流量切回旧版本。
灰度验证方法
灰度发布不只是流量切换,还需要验证新版本的正确性。业务验证:灰度用户的功能正常,数据正确。性能验证:新版本的响应时间和错误率与旧版本持平或更优。兼容性验证:新旧版本之间的数据格式兼容。日志和监控重点观察灰度流量的表现。自动化测试用例针对灰度流量运行。灰度期建议至少持续30分钟到数小时,充分验证功能。
全量发布流程
灰度验证通过后进行全量发布。全量发布步骤:第一步,逐步增加灰度比例,从5%到50%再到100%。每一步间有观察期。第二步,全量切换到新版本后,旧版本保留一段时间作为回滚选项。第三步,确认全量稳定后,清理旧版本服务。第四步,更新网关的默认路由指向新版本。完善的灰度流程让发布风险可控,出现问题及时回滚。