1.定义

灰度发布是指在黑与白之间,能够平滑过渡的一种发布方式。在其上可以进行A/B testing,即让一部分用户继续用产品特性A,一部分用户开始用产品特性B,如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面来。

2.Apollo实现的功能

1)对于一些对程序有比较大影响的配置,可以先在一个或者多个实例生效,观察一段时间没问题后再全量发布配置。

2)对于一些需要调优的配置参数,可以通过灰度发布功能来实现A/B测试。可以在不同的机器上应用不同的配置,不断调整、测评一段时间后找出较优的配置再全量发布配置。

3.场景介绍

我们将上一篇博客中SpringBoot集成Apollo的项目部署在两台服务器上,用来演示。

灰度发布 云原生 灰度发布实现_灰度

 

灰度目标

我们希望my.test这个配置,对一台服务器灰度发布一个my.test=java,而另一台服务器仍保持不变。

灰度发布 云原生 灰度发布实现_java_02

 

4.创建灰度

1)点击application namespace右上角的 创建灰度 按钮

灰度发布 云原生 灰度发布实现_灰度发布 云原生_03

 

2)点击确定后,灰度版本就创建成功了,页面会自动切换到 灰度版本 Tab

灰度发布 云原生 灰度发布实现_服务器_04

 

5.灰度配置

1)点击 主版本的配置 中,要修改的配置最右侧的 对此配置灰度 按钮

灰度发布 云原生 灰度发布实现_灰度_05

 

2)修改灰度值

灰度发布 云原生 灰度发布实现_灰度发布 云原生_06

 

6.配置灰度规则

1)切换到 灰度规则 Tab,点击 新增规则 按钮

灰度发布 云原生 灰度发布实现_灰度发布 云原生_07

 

2)在弹出框中 灰度的IP 下拉框会默认展示当前使用配置的机器列表,选择我们要灰度的IP,点击完成

灰度发布 云原生 灰度发布实现_灰度发布 云原生_08

 

3)灰度发布

4)发布后,切换到 灰度实例列表 Tab,就能看到某一个服务器已经使用了灰度发布的值

灰度发布 云原生 灰度发布实现_服务器_09

 

7.全量发布

如果灰度的配置测试下来比较理想,符合预期,那么就可以操作 全量发布 。

全量发布的效果是:

1)灰度版本的配置会合并回主版本,在这个例子中,就是主版本的my.test会变成java 2)主版本的配置会自动进行一次发布 3)在全量发布页面,可以选择是否保留当前灰度版本,默认为不保留

灰度发布 云原生 灰度发布实现_灰度发布 云原生_10

 

8.放弃发布

如果灰度版本不理想或者不需要了,可以点击 放弃灰度

9.发布历史

点击主版本的 发布历史 按钮,可以看到当前namespace的主版本以及灰度版本的发布历史

 

灰度发布 云原生 灰度发布实现_java_11