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

转自----------https://my.oschina.net/u/1464083/blog/3074303

NACOS升级操作的更多相关文章

  1. DS4700磁盘阵列的控制器微码升级操作记录(收录百度文库)

    DS4700磁盘阵列的控制器微码升级操作记录   项目介绍: 于10年3月,XX地市区/州XX分公司相继反映生产读取数据速度较之前变得非常慢,表现在:日常报表抽取数据速度明显变慢,客户打开前台页面速度 ...

  2. appium升级操作

    在app自动化测试中经常会碰到,因为appium版本低而导致,appium客户端连接不到appium服务端等一系列错误~ 其实appium升级很简单的哦~ 打开cmd命令行终端,键入npm updat ...

  3. Windows版 PostgreSQL 利用 pg_upgrade 进行大版升级操作

    最近 PostgreSQL 15 版本正式发布了,新版本的各种特性和好处本文就不展开介绍了,主要介绍一下 Windows 环境下 PostgreSQL 大版本升级的方法,我们现在的几个数据库都是运行在 ...

  4. Android数据库表的创建和数据升级操作

    之前的文章有提到,可以在xml文件中配置数据库信息:http://www.cnblogs.com/wenjiang/p/4492303.html,现在就讲如何利用这些信息类构建数据库. xml文件大概 ...

  5. openssl 升级操作 -2

    首先我觉得没事就用绿盟扫漏洞的公司,就是闲的蛋疼,傻逼!不少服务器使用nginx,如果openssl 是静态编译的,直接将openssl 编译到nginx里面去了,这就意味着,单纯升级openssl ...

  6. openssl 升级 操作 -1

    好多公司都会用绿盟扫描系统漏洞,里边就会涉及到ssl 漏洞,原因是openssl 版本低导致,会让你升级到指定版本.下面就介绍一下openssl 版本升级的操作方案. 一. 查看系统版本 [root@ ...

  7. Openssl 升级操作

    转自:http://www.cnblogs.com/lzcys8868/p/9235538.html 首先我觉得没事就用绿盟扫漏洞的公司,就是闲的蛋疼,傻逼!不少服务器使用nginx,如果openss ...

  8. ELK 集群升级操作

    1.配置项变更  2.禁用自动分片 disabled shard allocation curl -XPUT 'localhost:9200/_cluster/settings?pretty' -H ...

  9. centos7 离线升级/在线升级操作系统内核

    目录 一.前言 二.系统环境 三.系统内核下载网址 四.centos7离线升级系统内核 1.先查看系统环境 2.离线升级系统内核 五.在线升级系统内核 一.前言 CentOS(Community EN ...

随机推荐

  1. CF707D Persistent Bookcase

    CF707D Persistent Bookcase 洛谷评测传送门 题目描述 Recently in school Alina has learned what are the persistent ...

  2. 2019 SDN上机第六次作业

    1.实验拓扑 (1)实验拓扑 (2)使用python脚本完成拓扑搭建 from mininet.topo import Topo class Mytopo(Topo): def __init__(se ...

  3. mongodb创建管理员用户

    db.createUser({user: "admin",pwd: "xxx",roles: ["root"]});

  4. 【Java语言特性学习之二】反射

    一.概念java加载class文件分两种情况:(1)类型是编译器已知的,这种文件的.class文件在编译的时候,编译器会把.class文件打开(不加载)检查,称为Run- Time Type Iden ...

  5. Linux下启动SpringBoot打包的jar

    前言 这两天把视力档案后台部署的方式改了一下,由原来打包成war包,部署到一个tomcat里面,转变成直接打包成jar包,然后使用 java -jar命令进行启动 下面讲讲遇到的问题 1)java - ...

  6. LeetCode 557:反转字符串中的单词 III Reverse Words in a String III

    公众号:爱写bug(ID:icodebugs) 给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序. Given a string, you need to reve ...

  7. 什么是IDE(集成开发环境)?

    实际开发中,除了编译器是必须的工具,我们往往还需要很多其他辅助软件,例如: 编辑器:用来编写代码,并且给代码着色,以方便阅读: 代码提示器:输入部分代码,即可提示全部代码,加速代码的编写过程: 调试器 ...

  8. vuex无法获取getters属性this.$store.getters.getCurChildId undefined

    问题描述 this.$store.getters.getCurChildId undefined 这是因为我们设置了命名空间namespaced: true, 在vuex官网中对命名空间的描述如下: ...

  9. 『珂朵莉树 Old Driver Tree』

    珂朵莉树 珂朵莉树其实不是树,只是一个借助平衡树实现的数据结构,主要是对于有区间赋值的数据结构题,可以用很暴力的代码很高效地完成任务,当然这是建立在数据随机的基础上的. 即使数据不是随机的,写一个珂朵 ...

  10. NaN不等于NaN

    目录 原因 表达式计算 类型转换 总结 不知道这个小知识点用得多不多,曾经在书上看到过,所以有一些印象,前段时间顺手写出类似如下的代码 var result; if (parseInt('abc')= ...