Skip to content

如何执行全链路高级蓝绿灰度混合发布

HaojunRen edited this page Oct 8, 2022 · 1 revision

网关控制的蓝绿发布策略

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

           

Total visits

讲义篇

集成篇

概念篇

实践篇

功能篇

配置篇

扩展篇

测试篇

升级篇

贡献篇

Clone this wiki locally