-
Notifications
You must be signed in to change notification settings - Fork 1.4k
如何执行全链路高级蓝绿灰度混合发布
HaojunRen edited this page May 31, 2024
·
2 revisions
a为从前端传递到网关的参数,可以为Header、Parameter、Cookie其中一种
- 当a等于1,从网关触发执行的链路为蓝路由,即a服务调用1.1版本,b服务调用1.1版本
- 当a的值不命中,或者未传值
- 灰度路由,即服务a和b 1.1版本被调用到的概率为5%
- 稳定路由,即服务a和b 1.0版本被调用到的概率为95%
- 前端通过改变a的值,达到控制后端全链路调用路径的目的
分别对Spring Cloud Gateway和Zuul增加版本条件匹配蓝绿发布策略。有如下两者使用方式,可以达到相同的效果
① 通过蓝绿灰度混合方式
<?xml version="1.0" encoding="UTF-8"?>
<rule>
<strategy-release>
<conditions type="blue-green">
<condition id="blue-condition" expression="#H['a'] == '1'" version-id="route-2"/>
</conditions>
<conditions type="gray">
<condition id="gray-condition" version-id="route-1=95;route-2=5"/>
</conditions>
<routes>
<route id="route-1" type="version">{"discovery-guide-service-a":"1.0", "discovery-guide-service-b":"1.0"}</route>
<route id="route-2" type="version">{"discovery-guide-service-a":"1.1", "discovery-guide-service-b":"1.1"}</route>
</routes>
</strategy-release>
</rule>
② 通过纯灰度方式
把其中一个链路的流量分配为0%,达到蓝绿发布的效果
<?xml version="1.0" encoding="UTF-8"?>
<rule>
<strategy-release>
<conditions type="gray">
<condition id="gray-condition-1" expression="#H['a'] == '1'" version-id="route-1=0;route-2=100"/>
<condition id="gray-condition-2" version-id="route-1=95;route-2=5"/>
</conditions>
<routes>
<route id="route-1" type="version">{"discovery-guide-service-a":"1.0", "discovery-guide-service-b":"1.0"}</route>
<route id="route-2" type="version">{"discovery-guide-service-a":"1.1", "discovery-guide-service-b":"1.1"}</route>
</routes>
</strategy-release>
</rule>
① 对于Spring Cloud Gateway,它的Group为discovery-guide-group,Data Id为discovery-guide-gateway
② 对于Zuul,它的Group为discovery-guide-group,Data Id为discovery-guide-zuul
从前端(例如,Postman)选择Header、Parameter、Cookie中的其中一种,分别输入a=1或者不输入
执行调用,根据返回值,验证是否如预期设置
上述简单示例以版本条件匹配全链路蓝绿发布为例,更高级的发布功能,请参考http://nepxion.com/discovery的全链路蓝绿灰度发布
2017-2050 ©Nepxion Studio Apache License
- 如何对接Foundation基础平台实施收敛集成
- 如何对接DevOps运维平台实施流量管控
- 如何部署对接DevOps运维平台的控制台
- 如何对接DevOps运维平台执行半自动化蓝绿灰度发布
- 如何使用DevOps运维平台对接的公共接口
- 如何设计全链路智能编排高级蓝绿灰度发布界面
- 如何实现Windows10下GraalVM本地镜像化
- 蓝绿灰度发布
- 流量染色
- 隔离路由
- 故障转移
- 多活单元化
- 限流熔断降级权限
- 网关动态路由
- 可观测监控
- 如何操作配置中心
- 如何理解框架开关配置
- 如何理解规则策略里内容格式配置
- 如何操作网关和服务的蓝绿灰度发布规则策略配置
- 如何操作网关动态路由规则策略配置
- 如何操作Sentinel规则策略配置
- 如何实施规则策略配置和业务配置在配置中心的合并和分离
- 如何理解自动扫描目录
- 如何自定义流量管控
- 如何自定义实现组合式的防护
- 如何自定义高级配置订阅功能
- 如何自定义订阅框架事件
- 如何自定义解决业务自身跨线程上下文切换的问题
- 如何自定义重用框架内置的Swagger模块
- 如何自定义Header全链路传递
- 如何遵循Nepxion Discovery网关标准实现对其它网关全链路流量管控的二次开发
- 如何遵循Nepxion Discovery服务标准实现对消息队列等其它中间件全链路流量管控的二次开发