Nacos 1.1.0发布,支持灰度配置和地址服务器模式

本文涉及的产品
性能测试 PTS,5000VUM额度
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
云原生网关 MSE Higress,422元/月
简介: Nacos 是阿里巴巴开源的配置中心和服务发现产品,开源距今已经超过一年的时间。本次1.1.0的发布,带来了许多重量级的特性更新,包括灰度配置等社区呼声很高的特性,下面会介绍1.1.0版本发布的新特性和每个特性的使用方式。

Nacos 是阿里巴巴开源的配置中心和服务发现产品,开源距今已经超过一年的时间。本次1.1.0的发布,带来了许多重量级的特性更新,包括灰度配置等社区呼声很高的特性,下面会介绍1.1.0版本发布的新特性和每个特性的使用方式。

升级指南

Server端

0.8.0及以上版本:

  1. 解压安装包后替换{nacos.home}/target/nacos-server.jar
  2. 删除{nacos.home}/plugins/cmdb/及{nacos.home}/plugins/health/下的所有文件
  3. 逐台重启Nacos Server即可

0.8.0以下版本,先升级到1.0.0版本。

Client端

请使用最新的1.1.1版本,修复了1.1.0版本的一个客户端版本显示问题。

新增特性

  • 灰度配置
  • 配置导入导出及配置同步
  • 地址服务器模块
  • 服务订阅者列表
  • 自定义实例心跳周期
  • Config监听器优化
  • Nacos Go SDK发布

灰度配置

@yanlinly @loadchange

灰度配置指的是指定部分客户端IP进行新配置的下发,其余客户端配置保持不变,用以验证新配置对客户端的影响,保证配置的平稳发布。灰度配置是生产环境中一个比较重要的功能,对于保证生产环境的稳定性非常重要。在1.1.0中,Nacos 支持了以IP为粒度的灰度配置,具体使用步骤如下:

1、 在配置列表页面,点击某个配置的“编辑配置”按钮:

2、勾选“Beta发布”,在文本框里填入要下发配置的IP,多个IP用逗号分隔:

3、 修改配置内容,点击“发布Beta”按钮,即可完成灰度配置的发布:

4、 点击“发布Beta”后,“发布Beta”按钮变灰,此时可以选择“停止Beta”或者“发布”。“停止Beta”表示取消停止灰度发布,当前灰度发布配置的IP列表和配置内容都会删除,页面回到正常发布的样式。“发布”表示将灰度配置在所有客户端生效,之前的配置也会被覆盖,同时页面回到正常发布的样式:

配置导入导出及配置同步

@KeRan213539

配置管理的另一个常见需求是能够将一个集群的配置同步到另外一个集群,或者从一个命名空间同步到另外一个命名空间。来自社区的贡献者KeRan213539贡献这个非常实用的功能,具体使用步骤如下:

1、 导出查询结果。可以根据查询条件,将当期查询出的所有结果打包为一个文件:

2、 导出选中的配置:

3、 导入配置,可以选择相同配置的处理策略。

当发现有相同的配置时,会有相应的提示:

同时如果导入的配置文件格式不符合要求,也会有相应的提示:

4、 配置同步,选取想要同步的配置,点击“克隆”,然后再选择要同步的目标命名空间,就可以将配置同步到对应的命名空间:

5、 导入导出文件格式说明。均为zip压缩包,压缩包内有多个目录,目录名为配置的 group,目录下有具体的文件,文件名为配置的 dataId ,每个文件的内容为配置具体的内容:

地址服务器模块

@pbting

1.1.0的安装包列表里多了一个nacos-address-server-1.1.0。这个安装包的作用是作为地址服务器模块,单独部署。关于地址服务器的介绍可以参考Nacos官网地址服务器文章,这里只做一个简单的说明。

一般中间件产品,客户端寻址服务端的方式都是在客户端配置服务端的地址列表,这样有一个缺点是当服务端的地址发生变动时,客户端无法实时的感知到,也无法动态调整访问的服务端集群。而在阿里巴巴的一种比较常见的客户端寻址服务端的方式是地址服务器。简单的说就是部署单独的地址服务器,地址服务器提供接口,获取相关中间件产品服务端集群的地址。由于地址服务器功能比较单一,因此稳定性比较容易保证。客户端只需要配置地址服务器的域名,通过地址服务器获取想要访问的中间件的集群地址,这样既保证能够感知中间件集群的动态变化,也能够为客户端配置更灵活的集群访问策略。

下面介绍地址服务器模块的使用。

  1. 部署地址服务器

    1. 将安装包列表里的 nacos-address-server.tar.gz 或者 nacos-address-server.zip 解压。
    2. 单机模式启动:执行 sh bin/startup.sh -m standalone -s nacos-address 以 standalone 的方式启动 address server。
    3. 集群模式启动:在 conf 目录下 将 cluster.conf.example 重名名为 cluster.conf,然后加入其它 server 的节点。加完后,执行 sh bin/startup.sh -s nacos-address 即可。
  2. 配置地址服务器域名:将部署好的地址服务器集群IP挂载到一个域名下,我们假设为address.nacos.com
  3. 在地址服务器上配置 Nacos 集群的地址列表:
# Add IP to nacos cluster:
curl -X POST '$ADDRESS_SERVER:8080/nacos/v1/as/nodes?ips=1.1.1.1:8848,2.2.2.2:8848,3.3.3.3:8848'

# Remove IP from nacos cluster:
curl -X DELETE '$ADDRESS_SERVER:8080/nacos/v1/as/nodes?ips=1.1.1.1:8848,2.2.2.2:8848,3.3.3.3:8848'
  1. 客户端配置 endpoint 为该地址服务器集群域名:在构造 Nacos 客户端时,除了可以通过指定 serverAddr 来访问 Nacos 集群外,还可以配置 endpoint 属性,将这个属性的值设为 address.nacos.com ,这样就可以达到和配置 serverAddr 相同的效果。
  2. 通过源码构建地址服务器安装包,在 Nacos 工程根目录下执行:
mvn -Prelease-address clean install -Dmaven.test.skip=true

安装包会生成在distribution/target目录下。

服务订阅者列表

@nicholas2015

服务订阅者列表是1.1.0增加的另外一个功能,就是可以在控制台上查看一个服务的消费者,执行步骤如下:

  1. 在服务列表页面,找到想要查询订阅者的服务:

  1. 进入订阅者列表页面,在“服务名称”输入框输入想要查询的服务名,在“分组名称”输入框输入服务的分组名(默认为DEFAULAT_GROUP),点击“查询”后,得到订阅者的信息,包括IP和端口、客户端版本和应用名。

服务自定义心跳周期

@lanCao

之前的版本中,客户端注册服务时,不能自定义上报心跳的周期以及客户端下线时自动删除实例的间隔。在1.1.0中,我们支持了这个特性,应用可以在注册时,通过设置实例的metadata,来指定心跳周期、健康检查过期时间及删除实例时间。具体举例如下:

String serviceName = randomDomainName();

Instance instance = new Instance();
instance.setIp("1.1.1.1");
instance.setPort(9999);
Map<String, String> metadata = new HashMap<String, String>();
// 设置心跳的周期,单位为秒,这里将心跳间隔设置为3秒:
metadata.put(PreservedMetadataKeys.HEART_BEAT_INTERVAL, "3");
// 设置心跳超时时间,单位为秒,这里将心跳超时时间设为6秒,
// 即服务端6秒收不到客户端心跳,会将该客户端注册的实例设为不健康:
metadata.put(PreservedMetadataKeys.HEART_BEAT_TIMEOUT, "6");
// 设置实例删除的超时时间,单位为秒,这里将实例删除超时时间设为9秒,
// 即服务端9秒收不到客户端心跳,会将该客户端注册的实例删除:
metadata.put(PreservedMetadataKeys.IP_DELETE_TIMEOUT, "9");
instance.setMetadata(metadata);

naming.registerInstance(serviceName, instance);

Config 监听器的优化

@chuntaojun
当存在程序启动之初,如果用户通过ConfigService.getConfig获取配置的同时,又注册了监听器,那么会存在监听器再次通知用户刚刚获取的配置信息。因此在version 1.1.0版本中,增加了新的接口以及一个系统参数(使用户无需修改现有代码)

String getConfigAndSignListener(String dataId, String group, long timeoutMs, Listener listener) throws NacosException;

该方法在获取配置后,随即注册一个监听器,避免监听器通知用户刚刚才拉取的配置信息
nacos.enableRemoteSyncConfig=true | false
设置该系统参数,将在监听器注册时主动去向远端拉取当前最新的配置信息,但是存在一定的网络开销,因此建议用户采取接口的方式

Nacos Go SDK

@lzp0412 @peggypig @atlanssia

Nacos 上周还发布了Go语言的 SDK ,目前发布了0.1.0-beta版本,仓库地址是:https://github.com/nacos-group/nacos-sdk-go。Nacos Go SDK是单独的仓库,由Nacos Committer参与维护,在代码上不属于Nacos 1.1.0。在此也非常欢迎社区的Go语言高手,参与Nacos Go SDK的演进。

如何共建

为了实现这一目标,你需要积极参与 Nacos 社区。如果您在文档中发现拼写错误,在代码中发现错误,或想要新功能或想要提供建议,您可以在GitHub上创建一个issues

如果您想开始着手,可以选择github仓库中有以下标签的issues。

  • good first issue:对于新手来说是非常好的入门issues。
  • contribution welcome:非常需要解决的问题和非常重要的模块,但目前缺少贡献者,欢迎贡献者来贡献。

蓬勃发展的 Nacos 社区

DISS is cheap, show me your hand
比吐槽更重要的是搭把手,参与社区一起发展 Nacos

  • 作为用户关注和加入 Nacos 社区

Nacos 社区正在蓬勃发展,截止到发文为止,Nacos 已经有 9 个微信群,其中 7 个已满员,1个QQ群,1个钉钉群,关注 Nacos 的社区人数已经近5000人,在 Nacos 群里跟 “道(基)友” 切磋技术,交流经验,招聘交友,抢抢红包...不亦乐乎。

  • 作为代码贡献者加入 Nacos 社区

为了能够与代码贡献者更方便的交流,我们组建了钉钉群“Nacos社区核心贡献小组(23335652)”,这个群里都是都是对Nacos贡献非常感兴趣的小伙伴,如果你也想成为Nacos贡献者,甚至成为Committer,欢迎加入这个群和群里的小伙伴一起切磋!

在 Nacos 官网 nacos.io 中,已经添加团队介绍页,里面包括Nacos的开发者角色定义及职责划分,同时包含了Naocs的开发者们介绍和靓照哦,欢迎大家加入Nacos社区,贡献社区。用Apache的话说,“社区高于代码”!

新人时刻 - "什么是Nacos?"

还不知道什么是 Nacos ? 没关系,在github上star一下跟程序猿兄弟打个招呼吧!!

Nacos 是阿里巴巴于2018年7月份新开源的项目,Nacos的主要愿景是期望通过提供易用的 动态服务发现服务配置管理服务共享与管理 的基础设施,帮助用户在云原生时代更好的构建、交付、管理自己的微服务平台。

github项目地址在 这里

更多与 Nacos 相关的开源项目信息

本文作者:朱鹏飞
作者简介:朱鹏飞(花名:敦谷),Github ID: nkorange,阿里巴巴中间件高级开发工程师,Nacos 开源项目负责人,Nacos 注册中心等模块主要贡献者。

相关文章
|
8天前
|
存储 网络协议 Nacos
高效搭建Nacos:实现微服务的服务注册与配置中心
Nacos(Dynamic Naming and Configuration Service)是阿里巴巴开源的一款动态服务发现、配置管理和服务管理平台。它旨在帮助开发者更轻松地构建、部署和管理分布式系统,特别是在微服务架构中。
171 81
高效搭建Nacos:实现微服务的服务注册与配置中心
|
25天前
|
JSON Java Nacos
SpringCloud 应用 Nacos 配置中心注解
在 Spring Cloud 应用中可以非常低成本地集成 Nacos 实现配置动态刷新,在应用程序代码中通过 Spring 官方的注解 @Value 和 @ConfigurationProperties,引用 Spring enviroment 上下文中的属性值,这种用法的最大优点是无代码层面侵入性,但也存在诸多限制,为了解决问题,提升应用接入 Nacos 配置中心的易用性,Spring Cloud Alibaba 发布一套全新的 Nacos 配置中心的注解。
146 10
|
2月前
|
Java 网络安全 Nacos
Nacos作为流行的微服务注册与配置中心,其稳定性与易用性广受好评
Nacos作为流行的微服务注册与配置中心,其稳定性与易用性广受好评。然而,“客户端不发送心跳检测”是使用中常见的问题之一。本文详细探讨了该问题的原因及解决方法,包括检查客户端配置、网络连接、日志、版本兼容性、心跳检测策略、服务实例注册状态、重启应用及环境变量等步骤,旨在帮助开发者快速定位并解决问题,确保服务正常运行。
51 5
|
2月前
|
监控 Java 测试技术
Nacos 配置中心变更利器:自定义标签灰度
本文是对 MSE Nacos 应用自定义标签灰度的功能介绍,欢迎大家升级版本进行试用。
|
2月前
|
网络安全 Nacos 开发者
Nacos作为流行的微服务注册与配置中心,“节点提示暂时不可用”是常见的问题之一
Nacos作为流行的微服务注册与配置中心,其稳定性和易用性备受青睐。然而,“节点提示暂时不可用”是常见的问题之一。本文将探讨该问题的原因及解决方案,帮助开发者快速定位并解决问题,确保服务的正常运行。通过检查服务实例状态、网络连接、Nacos配置、调整健康检查策略等步骤,可以有效解决这一问题。
41 4
|
5天前
|
机器学习/深度学习 人工智能 PyTorch
阿里云GPU云服务器怎么样?产品优势、应用场景介绍与最新活动价格参考
阿里云GPU云服务器怎么样?阿里云GPU结合了GPU计算力与CPU计算力,主要应用于于深度学习、科学计算、图形可视化、视频处理多种应用场景,本文为您详细介绍阿里云GPU云服务器产品优势、应用场景以及最新活动价格。
阿里云GPU云服务器怎么样?产品优势、应用场景介绍与最新活动价格参考
|
4天前
|
存储 运维 安全
阿里云弹性裸金属服务器是什么?产品规格及适用场景介绍
阿里云服务器ECS包括众多产品,其中弹性裸金属服务器(ECS Bare Metal Server)是一种可弹性伸缩的高性能计算服务,计算性能与传统物理机无差别,具有安全物理隔离的特点。分钟级的交付周期将提供给您实时的业务响应能力,助力您的核心业务飞速成长。本文为大家详细介绍弹性裸金属服务器的特点、优势以及与云服务器的对比等内容。
|
12天前
|
人工智能 JSON Linux
利用阿里云GPU加速服务器实现pdf转换为markdown格式
随着AI模型的发展,GPU需求日益增长,尤其是个人学习和研究。直接购置硬件成本高且更新快,建议选择阿里云等提供的GPU加速型服务器。
利用阿里云GPU加速服务器实现pdf转换为markdown格式
|
2天前
|
弹性计算 安全 搜索推荐
阿里云国际站注册教程:阿里云服务器安全设置
阿里云国际站注册教程:阿里云服务器安全设置 在云计算领域,阿里云是一个备受推崇的品牌,因其强大的技术支持和优质的服务而受到众多用户的青睐。本文将为您介绍阿里云国际站的注册过程,并重点讲解如何进行阿里云服务器的安全设置。
|
2天前
|
人工智能 监控 测试技术
阿里云磐久服务器稳定性实践之路
阿里云服务器质量智能管理体系聚焦自研服务器硬件层面的极致优化,应对高并发交付、短稳定性周期、早问题发现和快修复四大挑战。通过“三个重构”(质量标准、开发流程、交付模式)、“六个归一”(架构、硬件、软件、测试、部件、制造)策略,实现芯片、整机和云同步发布,确保快速稳定上量。此外,全场景测试体系与智能预警、分析、修复系统协同工作,保障服务器在萌芽阶段发现问题并及时解决,提升整体质量水平。未来,阿里云将继续深化大数据驱动的质量管理,推动服务器行业硬件质量的持续进步。