分享

阿里巴巴开源配置中心和服务发现产品Nacos1.1.0发布支持灰度发布

 新用户0175WbuX 2022-02-09

阿里巴巴开源配置中心和服务发现产品Nacos1.1.0发布支持灰度发布

  消息来源:官方博客

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

  升级指南

  Server端

  0.8.0及以上版本:

  解压安装包后替换{nacos.home}/target/nacos-server.jar删除{nacos.home}/plugins/cmdb/及{nacos.home}/plugins/health/下的所有文件逐台重启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为粒度的灰度配置,具体使用步骤如下:

  在配置列表页面,点击某个配置的“编辑配置”按钮:阿里巴巴开源配置中心和服务发现产品Nacos1.1.0发布支持灰度发布

  勾选“Beta发布”,在文本框里填入要下发配置配置的IP,多个IP用逗号分隔:阿里巴巴开源配置中心和服务发现产品Nacos1.1.0发布支持灰度发布

  修改配置内容,点击“发布Beta”按钮,即可完成灰度配置的发布:阿里巴巴开源配置中心和服务发现产品Nacos1.1.0发布支持灰度发布

  点击“发布Beta”后,“发布Beta”按钮变灰,此时可以选择“停止Beta”或者“发布”。“停止Beta”表示取消停止灰度发布,当前灰度发布配置的IP列表和配置内容都会删除,页面回到正常发布的样式。“发布”表示将灰度配置在所有客户端生效,之前的配置也会被覆盖,同时页面回到正常发布的样式:阿里巴巴开源配置中心和服务发现产品Nacos1.1.0发布支持灰度发布

  配置导入导出及配置同步

  @KeRan213539

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

  导出查询结果。可以根据查询条件,将当期查询出的所有结果打包为一个文件:阿里巴巴开源配置中心和服务发现产品Nacos1.1.0发布支持灰度发布

  导出选中的配置:阿里巴巴开源配置中心和服务发现产品Nacos1.1.0发布支持灰度发布

  导入配置,可以选择相同配置的处理策略。阿里巴巴开源配置中心和服务发现产品Nacos1.1.0发布支持灰度发布

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

  阿里巴巴开源配置中心和服务发现产品Nacos1.1.0发布支持灰度发布

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

  阿里巴巴开源配置中心和服务发现产品Nacos1.1.0发布支持灰度发布

  配置同步,选取想要同步的配置,点击“克隆”,然后再选择要同步的目标命名空间,就可以将配置同步到对应的命名空间:阿里巴巴开源配置中心和服务发现产品Nacos1.1.0发布支持灰度发布

  阿里巴巴开源配置中心和服务发现产品Nacos1.1.0发布支持灰度发布

  导入导出文件格式说明。均为zip压缩包,压缩包内有多个目录,目录名为配置的group,目录下有具体的文件,文件名为配置的dataId,每个文件的内容为学历配置具体的内容:阿里巴巴开源配置中心和服务发现产品Nacos1.1.0发布支持灰度发布

  地址服务器模块

  @pbting

  1.1.0的安装包列表里多了一个

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

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

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

  部署地址服务器将安装包列表里的nacos-address-server.tar.gz或者nacos-address-server.zip解压。单机模式启动:执行 sh bin/startup.sh -m standalone -s nacos-address 以 standalone 的方式启动 address server。集群模式启动:在 conf 目录下 将 cluster.conf.example 重名名为 cluster.conf,然后加入其它 server 的节点。加完后,执行 sh bin/startup.sh -s nacos-address 即可。配置地址服务器域名:将部署好的地址服务器集群IP挂载到一个域名下,我们假设为address.nacos在地址服务器上配置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'

  客户端配置endpoint为该地址服务器集群域名:在构造Nacos客户端时,除了可以通过指定serverAddr来访问Nacos集群外,还可以配置endpoint属性,将这个属性的值设为address.nacos,这样就可以达到和配置serverAddr相同的效果。通过源码构建地址服务器安装包,在Nacos工程根目录下执行:

  mvn -Prelease-address clean install -Dmaven.test.skip=true

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

  服务订阅者列表

  @nicholas2015

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

  在服务列表页面,找到想要查询订阅者的服务:阿里巴巴开源配置中心和服务发现产品Nacos1.1.0发布支持灰度发布

  进入订阅者列表页面,在“服务名称”输入框输入想要查询的服务名,在“分组名称”输入框输入服务的分组名(默认为DEFAULAT_GROUP),点击“查询”后,得到订阅者的信息,包括IP和端口、客户端版本和应用名。阿里巴巴开源配置中心和服务发现产品Nacos1.1.0发布支持灰度发布

  服务自定义心跳周期

  @lanCao

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

  String serviceName=randomDomainName();

  Instance instance=new Instance();

  instance.setIp("1.1.1.1");

  instance.setPort(9999);

  Map metadata=new HashMap();

  // 设置心跳的周期,单位为秒,这里将心跳间隔设置为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

  设置该系统参数,将在监听器注册时主动去向远端拉取当前最新的配置信息,但是存在一定的网络开销,因此建议用户采取接口的方式。

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多