从Google线上故障,谈灰度发布的重要性3

简介: 基于IP和标签的灰度发布可有效降低配置风险。IP灰度适用于小型系统,标签灰度支持自定义键值,实现多环境、多分支精准配置,提升系统稳定性和发布灵活性,助力业务安全迭代。

基于 IP 的灰度发布

基于 IP 的灰度发布是一种基础的灰度方式,可以通过选择 IP 地址列表来确定需要灰度的机器,在一些小型业务系统中,这种方式可以满足灰度的需求,能够大大降低配置推送的风险,减少因配置出错导致的故障。

  1. 登录 MSE 注册配置中心管理控制台,并在顶部菜单栏选择地域,选择目标 Nacos 实例;
    https://mse.console.aliyun.com/
  2. 在目标配置的操作列单击编辑。在编辑配置面板,发布方式选择基于 IP 灰度发布。

  3. 单击应用节点 IP 输入框,在 IP 地址列表中选择待灰度推送的 IP 地址。您也可以选择手动输入 IP 地址,手动输入支持 IP 地址补全。

  4. 修改完配置后,单击发布灰度。在配置内容对比对话框中确认当前正式版本内容和本次发布内容,然后单击发布。

基于标签的灰度发布
为了解决基于 IP 灰度的局限性,MSE Nacos 对灰度发布进行了功能升级,支持了自定义标签灰度的能力,结合原先的 IP 灰度,可以给业务提供更加灵活更加易用的灰度发布能力,为业务稳定性保驾护航。

自定义标签灰度允许应用侧根据其实际场景给不同的节点设置不同的标签,比如给节点设置应用,机房,环境等标签,比如在阿里集团内部,同一个应用在线下环境中有不同的项目开发分支,就给对应的开发分支部署的节点打上项目分支的标签,借助标签灰度的能力实现不同的项目环境下发不同的配置内容。

在 MSE Nacos 2.2.3.3 及以上版本中,支持基于应用标签灰度的方式进行灰度发布,您可以在客户端对应用节点进行标签设置并针对标签进行灰度发布。

  1. 客户端设置应用标签
    通过以下方式设置应用的标签,应用标签为 key-value 格式。可以通过 properties,JVM 参数和环境变量三种方式指定。相同 key 的情况下,默认优先级:properties > JVM 参数 > env 环境变量,nacos.config.gray.label 是 Nacos 内置的默认配置灰度标签。
    //1.properties形式传入
    Properties properties = new Properties();
    properties.put(PropertyKeyConst.SERVER_ADDR, "your endpoint");
    properties.put("project.name", "your app name");
    properties.put("nacos.config.gray.label","yourgrayname");

//2.JVM参数设置设置启动参数
-Dnacos.config.gray.label=yourgrayname
nacos_config_gray_label=yourgrayname

//3.env环境变量指定设置环境变量
String dataId = "gray_test_dataid";
String group = "test-group";
configService.addListener(dataId, group, new Listener() {
@Override
public Executor getExecutor() {
return null;
}
@Override
public void receiveConfigInfo(String configInfo) {
System.out.println("receiveConfig:" + configInfo);
}
});

  1. 服务端发布标签灰度
    ● 查看监听者标签
    客户端完成应用标签注入后,可以通过服务端查看配置的监听者列表,查看每个监听者携带的标签。

● 发布灰度标签配置

单击编辑配置,选择基于标签灰度发布,然后选择应用节点当前存在的标签键值对,可以看到选择的键值对所匹配到的节点数。

发布灰度标签版本后,在监听查询可以看到当前客户端所匹配的配置版本。在配置详情可以看到当前灰度版本的详情。

在进行第一批灰度观察后,可以通过扩大编辑标签的值范围来逐步扩大灰度,直到进行全量发布,单击全量发布后,将停止对应的灰度版本。如果在灰度过程中发现业务异常,可以单击停止灰度进行一键自动回滚。

Nacos 标签灰度除了提供基本灰度能力外,还可以衍生出更高阶的用法,如设置多值标签、自定义应用标签 SPI、多版本并行灰度等。

总结

Google Cloud 在 2025 年 6 月 12 日的全球性故障事件为我们提供了宝贵的教训。一个简单的空指针异常,由于缺乏适当的错误处理和灰度发布策略,导致了全球范围的服务中断,影响了数百万用户和企业。这一事件再次证明,即使是技术巨头也不能忽视配置灰度发布的重要性。

通过本文的分析,我们可以清晰地看到,如果 Google Cloud 采用了类似 Nacos 的配置灰度发布策略,可能会避免全球性服务中断,通过小范围验证发现问题,控制影响范围,并能快速回滚配置。

相关文章
|
12天前
|
数据采集 人工智能 安全
|
7天前
|
机器学习/深度学习 人工智能 前端开发
构建AI智能体:七十、小树成林,聚沙成塔:随机森林与大模型的协同进化
随机森林是一种基于决策树的集成学习算法,通过构建多棵决策树并结合它们的预测结果来提高准确性和稳定性。其核心思想包括两个随机性:Bootstrap采样(每棵树使用不同的训练子集)和特征随机选择(每棵树分裂时只考虑部分特征)。这种方法能有效处理大规模高维数据,避免过拟合,并评估特征重要性。随机森林的超参数如树的数量、最大深度等可通过网格搜索优化。该算法兼具强大预测能力和工程化优势,是机器学习中的常用基础模型。
344 164
|
6天前
|
机器学习/深度学习 自然语言处理 机器人
阿里云百炼大模型赋能|打造企业级电话智能体与智能呼叫中心完整方案
畅信达基于阿里云百炼大模型推出MVB2000V5智能呼叫中心方案,融合LLM与MRCP+WebSocket技术,实现语音识别率超95%、低延迟交互。通过电话智能体与座席助手协同,自动化处理80%咨询,降本增效显著,适配金融、电商、医疗等多行业场景。
345 155
|
7天前
|
编解码 人工智能 自然语言处理
⚽阿里云百炼通义万相 2.6 视频生成玩法手册
通义万相Wan 2.6是全球首个支持角色扮演的AI视频生成模型,可基于参考视频形象与音色生成多角色合拍、多镜头叙事的15秒长视频,实现声画同步、智能分镜,适用于影视创作、营销展示等场景。
573 4
|
15天前
|
SQL 自然语言处理 调度
Agent Skills 的一次工程实践
**本文采用 Agent Skills 实现整体智能体**,开发框架采用 AgentScope,模型使用 **qwen3-max**。Agent Skills 是 Anthropic 新推出的一种有别于mcp server的一种开发方式,用于为 AI **引入可共享的专业技能**。经验封装到**可发现、可复用的能力单元**中,每个技能以文件夹形式存在,包含特定任务的指导性说明(SKILL.md 文件)、脚本代码和资源等 。大模型可以根据需要动态加载这些技能,从而扩展自身的功能。目前不少国内外的一些框架也开始支持此种的开发方式,详细介绍如下。
1013 7