Nacos 1.0.0 GA,架构、功能与 API 设计全面重构

h4cd
 h4cd
发布于 2019年04月12日
收藏 20

Nacos 1.0.0 GA 版本发布了,此版本在架构、功能和 API 设计上进行了全方位的重构和升级。

此版本新特性包括:

注册实例支持 ephemeral 字段

Nacos 1.0.0 版本在 instance 级别上增加了一个 ephemeral 字段,该字段表示注册的实例是临时实例还是持久化实例。如果是临时实例,则不会在 Nacos 服务端持久化存储,需要通过上报心跳的方式进行?;?,如果一段时间内没有上报心跳,则会被 Nacos 服务端摘除。在被摘除后如果又开始上报心跳,则会重新将这个实例注册。持久化实例则会持久化到 Nacos 服务端,此时即使注册实例的客户端进程不在,这个实例也不会从服务端删除,只会将健康状态设为不健康。

同一个服务下可以同时有临时实例和持久化实例,这意味着当这服务的所有实例进程不在时,会有部分实例从服务上摘除,剩下的实例则会保留在服务下。

注册实例支持 groupName 字段

客户端注册实例时,可以在方法级别指定要注册的分组名,这个分组名和服务名是对服务的一个二维的标识,二者共同定位一个服务。一个典型的使用分组的例子如下:

namingService.registerInstance("nacos.test.1", "group1", instance);

不指定分组的接口依然是支持的,此时会在服务端为这个服务分配一个默认的分组:DEFAULT_GROUP。

增加了 Server 状态的设置

Nacos 增加了对 Server 状态的控制,所有的状态都定义在 com.alibaba.nacos.naming.cluster.ServerStatus 类里。

各个状态的含义介绍如下:

  • UP:Server 一切正常,读写请求都会被接受;

  • DOWN:Server 异常,所有请求会返回 HTTP 503 错误;

  • STARTING:Server 还在启动中,所有请求返回 HTTP 503 错误;

  • PAUSED:Server 被人工暂停,区别于 DOWN 可能是系统自己检测到异常然后设置 DOWN 状态,PAUSED 状态表示当前 Server 可能是没问题的,只是人工进行了干预;

  • WRITE_ONLY:只有非 GET 请求会被接受;

  • READ_ONLY:只有 GET 请求会被接受;

用户可以使用如下接口来修改集群所有机器的状态,如果再加上 debug=true 参数,则只修改当前机器的状态。

curl -X PUT '$NACOS_SERVER:8848/nacos/v1/ns/operator/switches?entry=overriddenServerStatus&value=READ_ONLY'

同时这个状态是会自适应进行修改的,比如启动时这个状态为 STARTING,等到数据装载完毕,则会自动将状态置为 UP,在运行过程中,如果检测到系统异常如磁盘满,则又会将状态置为 DOWN。不过自适应的状态值优先级要低于使用接口设置的状态值,因此当你想恢复自适应的状态调节的时候,记得将接口 overriddenServerStatus 设置为空。

增加全局推送开关

支持了全局推送开关,可以打开或者关闭服务变更的推送,调用接口如下:

curl -X PUT '$NACOS_SERVER:8848/nacos/v1/ns/operator/switches?entry=pushEnabled&value=false'

关闭推送后,客户端依然会通过轮询的方式来更新到数据,只是更新的速度没有推送那么快。

支持启动时数据预热

在老版本的 Nacos 中,只要 Server 启动成功就会开始对外提供服务,此时服务的数据并不一定完全加载完成,这样可能会导致客户端接收到的数据并不完整。1.0.0 版本增加了数据预热的逻辑,对于持久化数据,则会等待所有数据从磁盘加载完成;对于临时实例这样的非持久化数据,则会等待从其他Server拉取到完整数据。所有数据都准备好之后,才会将 Server 状态置为 UP。

元数据编辑框优化

此前的元数据编辑框需要用户按照指定格式来编辑,容易出错,如下图所示:

1.0.0 版本对服务页面的元数据编辑框进行了优化,在调整编辑框大小的同时,增加语法高亮,方便用户进行编辑和识别格式问题,编辑框预览图如下:

支持 MySQL 8.0 

Nacos 1.0.0 支持了 MySQL 8.0 驱动。

1.0.0 版本的发布标志着 Nacos 已经可以大规模的在生产环境中使用,新版本不仅针对社区的需求和集群的稳定性相应地增加了一些新特性,而且还发布了服务发现??榈男阅懿馐员ǜ?,以及完整的 API 列表和架构设计文档。

引用自阿里巴巴中间件公众号发布公告,作者朱鹏飞(花名:敦谷),Github ID: nkorange,阿里巴巴中间件高级开发工程师,Nacos 开源项目负责人,Nacos 注册中心等??橹饕毕渍?。

详情查看官方发布公告。

本站文章除注明转载外,均为本站原创或编译?;队魏涡问降淖?,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 OSCHINA 社区 排列5的开奖号码
本文标题:Nacos 1.0.0 GA,架构、功能与 API 设计全面重构
加载中

精彩评论

c
crystalsis

引用来自“路人丁语”的评论

这个也是阿里的,怎么没人喷呢???;刚看了Spring-Cloud-Alibaba 1.0文章,好多人喷。

引用来自“crystalsis”的评论

真正用的人这个也会喷,0.9升级1.0RC的时候,一句轻飘飘的移除部分API,,通常这玩意儿是移除前几个版本标记为过时的玩意儿的,然后不少人升级了,结果是API全变了,系统直接崩了。。。

引用来自“混乱羽翼”的评论

说系统直接崩的,怕不是蠢蛋?难道生产中间件升级不是很谨慎的事情吗?
既然跑着没问题,没事升级干啥?要升级难道不提前评估?
你屁股上的眼睛看到了我说了是生产环境了么?
混乱羽翼
混乱羽翼

引用来自“路人丁语”的评论

这个也是阿里的,怎么没人喷呢???;刚看了Spring-Cloud-Alibaba 1.0文章,好多人喷。

引用来自“crystalsis”的评论

真正用的人这个也会喷,0.9升级1.0RC的时候,一句轻飘飘的移除部分API,,通常这玩意儿是移除前几个版本标记为过时的玩意儿的,然后不少人升级了,结果是API全变了,系统直接崩了。。。
说系统直接崩的,怕不是蠢蛋?难道生产中间件升级不是很谨慎的事情吗?
既然跑着没问题,没事升级干啥?要升级难道不提前评估?

最新评论(24

Skqing
Skqing

引用来自“Skqing”的评论

你们继续喷,反正 我 正在用

引用来自“勇哥0_0”的评论

有没有遇到坑 兄弟
暂时用的还行,没遇到啥大问题,我们项目比较小
Raphael_goh
Raphael_goh

引用来自“路人丁语”的评论

这个也是阿里的,怎么没人喷呢???;刚看了Spring-Cloud-Alibaba 1.0文章,好多人喷。

引用来自“crystalsis”的评论

真正用的人这个也会喷,0.9升级1.0RC的时候,一句轻飘飘的移除部分API,,通常这玩意儿是移除前几个版本标记为过时的玩意儿的,然后不少人升级了,结果是API全变了,系统直接崩了。。。
所以为啥要用1.0之前的版本??
woshixin
woshixin
没有用过,以为之前的版本已经是临时节点和持久节点了,那原来是怎么用的呀
勇哥0_0
勇哥0_0

引用来自“Skqing”的评论

你们继续喷,反正 我 正在用
有没有遇到坑 兄弟
wennan
wennan

引用来自“路人丁语”的评论

这个也是阿里的,怎么没人喷呢???;刚看了Spring-Cloud-Alibaba 1.0文章,好多人喷。

引用来自“crystalsis”的评论

真正用的人这个也会喷,0.9升级1.0RC的时候,一句轻飘飘的移除部分API,,通常这玩意儿是移除前几个版本标记为过时的玩意儿的,然后不少人升级了,结果是API全变了,系统直接崩了。。。

引用来自“混乱羽翼”的评论

说系统直接崩的,怕不是蠢蛋?难道生产中间件升级不是很谨慎的事情吗?
既然跑着没问题,没事升级干啥?要升级难道不提前评估?

引用来自“crystalsis”的评论

你屁股上的眼睛看到了我说了是生产环境了么?
蛤蛤蛤 我们测试环境也生了一下RC,赶紧回退了
xiongchun
xiongchun
consul 了解一下
FogMoon
FogMoon

引用来自“FogMoon”的评论

Mysql8.0那段代码太假了吧,驱动都是mysql5.0的,try catch肯定会切换到5.0,阿里也有自欺欺人的程序员

引用来自“勇哥0_0”的评论

在哪里的代码
官方下载的只有mysql5.0的包,要支持mysql8只有修改总pom.xml的
<!-- JDBC libs -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.34</version>
</dependency>
为8.0.x以上,并重新打包。驱动判断代码如下 BasicDataSourceServiceImpl.java:
private static final String DEFAULT_MYSQL_DRIVER = "com.mysql.jdbc.Driver";
private static final String MYSQL_HIGH_LEVEL_DRIVER = "com.mysql.cj.jdbc.Driver";
private static String JDBC_DRIVER_NAME;

static {
try {
Class.forName(MYSQL_HIGH_LEVEL_DRIVER);
JDBC_DRIVER_NAME = MYSQL_HIGH_LEVEL_DRIVER;
log.info("Use Mysql 8 as the driver");
} catch (ClassNotFoundException e) {
log.info("Use Mysql as the driver");
JDBC_DRIVER_NAME = DEFAULT_MYSQL_DRIVER;
}
}
c
crystalsis

引用来自“路人丁语”的评论

这个也是阿里的,怎么没人喷呢???;刚看了Spring-Cloud-Alibaba 1.0文章,好多人喷。

引用来自“crystalsis”的评论

真正用的人这个也会喷,0.9升级1.0RC的时候,一句轻飘飘的移除部分API,,通常这玩意儿是移除前几个版本标记为过时的玩意儿的,然后不少人升级了,结果是API全变了,系统直接崩了。。。

引用来自“混乱羽翼”的评论

说系统直接崩的,怕不是蠢蛋?难道生产中间件升级不是很谨慎的事情吗?
既然跑着没问题,没事升级干啥?要升级难道不提前评估?
你屁股上的眼睛看到了我说了是生产环境了么?
勇哥0_0
勇哥0_0

引用来自“FogMoon”的评论

Mysql8.0那段代码太假了吧,驱动都是mysql5.0的,try catch肯定会切换到5.0,阿里也有自欺欺人的程序员
在哪里的代码
FogMoon
FogMoon
Mysql8.0那段代码太假了吧,驱动都是mysql5.0的,try catch肯定会切换到5.0,阿里也有自欺欺人的程序员
返回顶部
顶部
  • 那片海文章中国国家地理网 2019-05-19
  • 盐背夫—巴盐古道上的精神化石文章中国国家地理网 2019-05-19
  • 北京市北京盈之宝4S店【在线咨询】 2019-05-19
  • 一批重磅项目今天签约落子浙江 军民融合发力数字经济 2019-05-18
  • 广西壮族自治区党委政研室一行到访杭州城研中心 2019-05-18
  • 患了类风湿关节炎,要不要忌口? 2019-05-18
  • 陕西守艺人丨被《舌尖上的中国》忽略的洛南空心挂面 2019-05-17
  • 铜梁区旧县街道:全面提升执行力 推动工作落地见效 2019-05-17
  • 专家:便血是结直肠癌常见症状 应高度重视及时检查 2019-05-17
  • 崔永元炮轰范冰冰主要是出于嫉妒——艺人要提高警惕以防被“名利”离间了(原创首发) 2019-05-16
  • 与欧盟“共斗”特朗普?日本要求参加WTO对美磋商 2019-05-16
  • 世界杯期间夜猫子吃什么好 这是有讲究的 2019-05-15
  • 一语惊坛(6月15日):人民日报和共和国共同成长。 2019-05-15
  • 证监会:首发审核政策始终没有变化 2019-05-14
  • 网约车谨防四类风险 小心遗落手机被司机私自转账 2019-05-14
  • 267| 571| 42| 728| 174| 965| 17| 966| 599| 440|