Skip to content

如何在不同的部署模式下实施全链路蓝绿灰度发布

HaojunRen edited this page Oct 8, 2022 · 1 revision

全链路单网关部署

① 场景

  • 所有部门共享一个大网关

② 思路

  • 参数化动态的简单蓝绿灰度发布方式

③ 方案

  • 按原生的蓝绿灰度发布来实施

全链路域网关部署

① 场景

  • A部门和B部门都有各自的网关
  • A部门服务访问B部门服务,必须通过B部门网关

② 思路

  • 当本部门服务和其它部门服务在同一时刻实施蓝绿灰度发布的时候,会产生混乱
  • 本部门服务的蓝绿灰度发布只由本部门的网关来实施,其它部门无权对本部门服务实施

③ 方案

  • 域网关拒绝接受外部传入的蓝绿灰度策略。需要控制网关上header.priority的开关
  • 域网关配置兜底策略

全链路非域网关部署

① 场景

  • A部门和B部门都有各自的网关
  • A部门服务直接访问B部门服务

② 思路

  • 当本部门服务和其它部门服务在同一时刻实施蓝绿灰度发布的时候,会产生混乱
  • 本部门服务的蓝绿灰度发布只由本部门的网关来实施,其它部门无权对本部门服务实施

③ 方案

  • 本部门的网关不得配置其它部门服务的蓝绿灰度策略
  • 所有服务开启全链路版本偏好路由的稳定版本开关

全局订阅式部署

① 场景

  • A部门和B部门是否有各自的网关,服务之间如何调用都不做要求

② 思路

  • 非参数化动态的简单蓝绿灰度发布方式,无法动态参数化驱动
  • 无需Header和外部参数传递,可以规避异步下丢失Header上下文的问题

③ 方案

  • 不同部门的网关和服务订阅同一个配置
  • 订阅的Group和Data Id必须配置为所有网关和服务的元数据Group值

基于性能考虑,可以考虑关闭下面的开关

# 启动和关闭核心策略Header传递,缺失则默认为true。当全局订阅启动时,可以关闭核心策略Header传递,这样可以节省传递数据的大小,一定程度上可以提升性能
# 核心策略Header指n-d-开头的Header(不包括n-d-env,因为环境路由隔离,必须传递该Header),不包括n-d-service开头的Header
spring.application.strategy.gateway.core.header.transmission.enabled=true
spring.application.strategy.zuul.core.header.transmission.enabled=true
spring.application.strategy.feign.core.header.transmission.enabled=true
spring.application.strategy.rest.template.core.header.transmission.enabled=true
spring.application.strategy.web.client.core.header.transmission.enabled=true




2017-2050 ©Nepxion Studio Apache License

           

Total visits

讲义篇

集成篇

概念篇

实践篇

功能篇

配置篇

扩展篇

测试篇

升级篇

贡献篇

Clone this wiki locally