Nocas灰度搭建
前言
大家好,好久不见,几个月没写文章了,昨天上了一下看着自己的浏览量也快破万了,想着我写的文章对大家还是有一点小用,于是决定继续写写,希望大家能点点关注。
背景
开发人员在日常的开发中百分之百都会在本地调试代码,从而保证接口的可行性。微服务是目前主流的开发方式,那么就需要将自己的服务注册到注册中心,为了不影响dev环境的程序正常流转,这时候有两种处理方式:
- 开发人员本地搭建专属自己的注册中心(较为麻烦)
- 使用配置文件灰度将自己的服务注册到注册中心,同时不影响其他人的使用。
目前主流的配置文件中心有:
Apollo:
Nocas:
问题描述
目前我们单位用的是Nocas做配置中心 + 注册中心,这应该也是未来的一个趋势,在Eureka不再维护后,相信会有越来越多的人使用Nocas。
问题是之前遗留就有的,同一个微服务存在多个开发人员同事都没有做灰度的情况下直接注册到指定环境的注册中心就会导致多实例注册,这时候如果访问到开发人员A注册的实例,同时该开发人员本地有断点或者该人员的实例上没有该接口就会出现问题。
处理方式
处理方式非常简单:就是在配置中心搭建灰度。
什么是灰度?
灰度配置指的是指定部分客户端IP进行新配置的下发,其余客户端配置保持不变,用以验证新配置对客户端的影响,保证配置的平稳发布。灰度配置是生产环境中一个比较重要的功能,对于保证生产环境的稳定性非常重要。在1.1.0中,Nacos支持了以IP为粒度的灰度配置。
Nocas灰度配置
编辑现有配置,创建灰度配置
在配置列表页面,点击某个配置的“编辑配置”按钮:
选择灰度版本
勾选“Beta发布”,在文本框里填入要下发配置的IP,多个IP用逗号分隔,需要注意的是application:nmae 需要和正式的作区分:
灰度发布
点击由下角帆布Beta即可发布灰度:
启动本地服务验证灰度是否生效
- 启动本地服务
- 查看注册中心
正式服务:
灰度服务:
这样一个灰度注册就搞定了,你就库随便玩儿了,随便断点,因为灰度只对指定IP生效,其他IP是没法访问这个IP的
停止灰度
停止灰度就是一键式操作,右下角停止就完事儿了。但是如果你对这个微服务的开发比较频繁建议不要这样操作,因为Nocas目前还没有记忆灰度功能,这意味着你下一次害的重新配置。
总结
多版本切换问题一直是个大问题,不仅仅是注册中心的灰度,更涉及到线上服务升级,既要考虑到服务升级的兼容性,同时也必须做到之前版本的灰度部署,总不可能上线失败每次都回滚代码吧?
说来惭愧,目前我司确实有这个问题,希望未来可以一起着手搭建所有产品的灰度!
今天是520,祝天下所有程序员都能找到自己喜欢的另一半!!!