-
Notifications
You must be signed in to change notification settings - Fork 1.4k
如何在不同的部署模式下实施全链路蓝绿灰度发布
HaojunRen edited this page May 31, 2024
·
2 revisions
① 场景
- 所有部门共享一个大网关
② 思路
- 参数化动态的简单蓝绿灰度发布方式
③ 方案
- 按原生的蓝绿灰度发布来实施
① 场景
- 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
- 如何对接Foundation基础平台实施收敛集成
- 如何对接DevOps运维平台实施流量管控
- 如何部署对接DevOps运维平台的控制台
- 如何对接DevOps运维平台执行半自动化蓝绿灰度发布
- 如何使用DevOps运维平台对接的公共接口
- 如何设计全链路智能编排高级蓝绿灰度发布界面
- 如何实现Windows10下GraalVM本地镜像化
- 蓝绿灰度发布
- 流量染色
- 隔离路由
- 故障转移
- 多活单元化
- 限流熔断降级权限
- 网关动态路由
- 可观测监控
- 如何操作配置中心
- 如何理解框架开关配置
- 如何理解规则策略里内容格式配置
- 如何操作网关和服务的蓝绿灰度发布规则策略配置
- 如何操作网关动态路由规则策略配置
- 如何操作Sentinel规则策略配置
- 如何实施规则策略配置和业务配置在配置中心的合并和分离
- 如何理解自动扫描目录
- 如何自定义流量管控
- 如何自定义实现组合式的防护
- 如何自定义高级配置订阅功能
- 如何自定义订阅框架事件
- 如何自定义解决业务自身跨线程上下文切换的问题
- 如何自定义重用框架内置的Swagger模块
- 如何自定义Header全链路传递
- 如何遵循Nepxion Discovery网关标准实现对其它网关全链路流量管控的二次开发
- 如何遵循Nepxion Discovery服务标准实现对消息队列等其它中间件全链路流量管控的二次开发