企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持知识库和私有化部署方案 广告
## 一、灰度发布简介 灰度发布的概念我们在apollo及spring cloud config章节都已经介绍过。对于概念模糊的朋友再把下面的这段话看一遍,高手略过。 **灰度发布**是指**在黑与白之间,能够平滑过渡**的一种发布方式。AB test就是一种灰度发布方式,让一部分用户继续用A,一部分用户开始用B,如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面来。灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题。 > 灰度发布就是让配置先在部分实例生效,如果效果理想全量发布到所有实例,如果效果不理想就可以放弃当前的“灰度发布配置”。 ## 二、nacos与灰度发布 在nacos配置管理里面,与灰度发布有相同效果的发布方式被称为beta发布。其实二者的核心内涵并没有什么实质上的差别,下文取自百度百科: ![](https://img.kancloud.cn/56/73/5673f10501186e4344e10aa0a83e66d6_848x167.png) beta发布就是发布一个公测版本,公测结果较好,就全量发布。公测结果不理想,就放弃Beta发布的版本。 ## 三、在nacos配置中心实现Beta发布 ### 3.1.实验场景 aservice-rbac服务在192.168.161.3,192.168.161.4,192.168.161.5启动了三个实例。我们想把其中192.168.161.3,192.168.161.4实例的配置项"user.init.password"的值改为xxxxyyyy(即:Beta发布),192.168.161.5的配置不做更改。 ### 3.2.配置实现步骤 * 在配置列表页面,选择要进行配置变更灰度发布的配置文件进行"编辑"修改 ![](https://img.kancloud.cn/3c/b7/3cb79f036deff50096b684f23f2c2939_1320x201.png) * 在配置编辑界面,修改配置项"user.init.password"的值改为xxxxyyyy。并勾选Beta发布,填写需要Beta发布的微服务实例运行的主机的ip,多个ip用逗号分隔。 ![](https://img.kancloud.cn/e0/48/e048346a042c240ed666140ba4c87903_661x310.png) * 点击“发布beta”按钮们进行配置发布 ![](https://img.kancloud.cn/52/a3/52a3d19bfe431f1bf2b4071216575586_1607x552.png) * beta配置发布之后,正常情况下,192.168.161.3,192.168.161.4上运行的实例的配置项会立刻动态刷新。 * 配置编辑界面分Tab展示,一个Tab是正式版的配置,也就是192.168.161.5实例正采用的配置。一个Tab是Beta版的配置,也就是192.168.161.3,192.168.161.4实例动态刷新之后的配置。 ![](https://img.kancloud.cn/32/a2/32a28b5d2fc233259ab678aeee1653c1_379x226.png) ## 四、Beta配置的测试 因为这种测试方法我们之前的章节已经多次用过,这里就不截图详细说明了,测试方法如下: * 用postman发送请求到192.168.161.3,192.168.161.4的“/sysuser/pwd/reset”接口,在SysuserService的defaultPassword的默认密码值是xxxxyyyy * 用postman发送请求到192.168.161.5的“/sysuser/pwd/reset”接口,在SysuserService的defaultPassword的默认密码值是Abcd234 出现以上结果,证明我们的Beta发布结果是正确的。测试代码位置及下断点的位置可以参考:《nacos客户端配置刷新》 ## 五、Beta配置回退与全量发布 beta发布的配置可以进行回退,也可以全量发布 ![](https://img.kancloud.cn/2a/56/2a566c6ab0d5f354c5c5050963f3ba2d_448x106.png) * 点击“停止beta”,192.168.161.3,192.168.161.4的配置就回退到正式版的配置。 * 点击“发布”实际就是全量发布,将Beta配置在所有微服务实例(包括192.168.161.5)上生效。当前的“BETA配置”转成新的“正式版”配置。