nacos配置ap_Nacos 1.0.0 功能预览

本文来自于我的个人主页:Nacos 1.0.0 功能预览,转载请保留链接 ;)

Nacos 1.0.0 是正式 GA 的版本,在架构、功能和API设计上进行了全方位的重构和升级,1.0.0版本标志着Nacos的架构已经稳定,API列表最终确定。升级到1.0.0相比升级到其他版本,需要额外的一些工作,本文专门介绍如何从Nacos 0.8.0以上版本升级到1.0.0 版本的所有步骤和细节。

重要提示

Nacos 1.0.0 服务端不兼容 0.8.0 以前的版本,如果您想升级到1.0.0,请先升级服务端到0.8.0版本。同样的,Nacos 1.0.0 不兼容 0.8.0 以下版本的客户端访问。

变更列表

naming 模块

注册实例支持 ephemeral字段 #502,#677;

去除了服务的健康检查模式;

注册实例支持 groupName字段 #269;

去掉了/nacos/v1/ns/api/下的所有接口,转移到其他URL #651;

增加了Server状态的设置 #744;

增加Server运行模式的设置 #745;

增加全局推送开关 #634;

支持启动时数据预热 #629;

元数据编辑框优化 #479;

config 模块

支持MySQL 8.0 #613;

其他

API完整列表开放,模型设计和架构设计文档发布;

变更详情

注册实例支持ephemeral字段

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

ephemeral字段

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

另一个需要注意的是,临时实例和持久化实例,在特定的服务端进行模式下可能不允许进行注册,这和下面要讲的第5个变更有关。

注意事项

当从老版本的 Nacos 升级到 Nacos 1.0.0 时,从磁盘加载的实例数据会被置为持久化实例,而只存在于内存里的实例数据将会丢失。

此时若老客户端再连上 Nacos Server 进行实例注册,会以当前 Server 的运行模式来设置是否持久化实例。

若老客户端只是在持续发送客户端心跳,那么在Server以AP模式运行时,如果实例存在,会自动进行注册。

去除了服务的健康检查模式

之前服务的健康检查模式有三种:client、server 和none, 分别代表客户端上报、服务端探测和取消健康检查。在控制台操作的位置如下所示:

健康检查模式

在 Nacos 1.0.0 中将把这个配置去掉,改为使用实例的ephemeral来判断,ephemeral为true对应的是服务健康检查模式中的 client 模式,为false对应的是 server 模式。

注册实例支持groupName字段

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

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

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

去掉了/nacos/v1/ns/api/下的所有接口,转移到其他URL

为了让 Nacos 的 API 分类更加合理,管理更加清晰,原来在/nacos/v1/ns/api/下的接口都会转移到相应的其他URL下。Nacos 服务发现总体定义了 /instance,/service,/cluster,/health,/operator,/catalog,/raft 等 URL 目录,后面所有的 openAPI 都会根据其类型放到相应的 URL 下。对用户造成的影响是一些早期的版本客户端可能无法在访问 Nacos 服务端。

注意事项

0.8.0及一下版本客户端都有调用这个 URL 下的接口,0.8.0 只依赖/nacos/v1/ns/api/hello 接口,所以对0.8.0的兼容问题不大。

多语言 SDK 和 DNS-F 需要检查下调用的接口,及时升级。

增加了Server状态的设置

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

Server状态设置

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

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

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

STARTING: 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=overridenServerStatus&value=READ_ONLY'

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

增加Server运行模式的设置

Server的运行模式,是指 Nacos Server 可以运行在多种模式下,当前支持三种模式:AP、CP和 MIXED 。这里的运行模式,使用的是CAP理论里的C、A和P概念。基于CAP理论,在分布式系统中,数据的一致性、服务的可用性和网络分区容忍性只能三者选二。一般来说分布式系统需要支持网络分区容忍性,那么就只能在C和A里选择一个作为系统支持的属性。C 的准确定义应该是所有节点在同一时间看到的数据是一致的,而A的定义是所有的请求都会收到响应。

Nacos 支持 AP 和 CP 模式的切换,这意味着 Nacos 同时支持两者一致性协议。这样,Nacos能够以一个注册中心管理这些生态的服务。不过在Nacos中,AP模式和CP模式的具体含义,还需要再说明下。

AP模式为了服务的可能性而减弱了一致性,因此AP模式下只支持注册临时实例。AP 模式是在网络分区下也能够注册实例。在AP模式下也不能编辑服务的元数据等非实例级别的数据,但是允许创建一个默认配置的服务。同时注册实例前不需要进行创建服务的操作,因为这种模式下,服务其实降级成一个简单的字符创标识,不在存储任何属性,会在注册实例的时候自动创建。

CP模式下则支持注册持久化实例,此时则是以 Raft 协议为集群运行模式,因此网络分区下不能够注册实例,在网络正常情况下,可以编辑服务器别的配置。改模式下注册实例之前必须先注册服务,如果服务不存在,则会返回错误。

MIXED 模式可能是一种比较让人迷惑的模式,这种模式的设立主要是为了能够同时支持临时实例和持久化实例的注册。这种模式下,注册实例之前必须创建服务,在服务已经存在的前提下,临时实例可以在网络分区的情况下进行注册。

使用如下请求进行Server运行模式的设定:

curl -X PUT

'$NACOS_SERVER:8848/nacos/v1/ns/operator/switches?entry=serverMode&value=CP'

注意事项

何时选择使用何种模式?一般来说,如果需要在服务级别编辑或者存储配置信息,那么 CP 是必须要使用的模式,如果不需要存储服务级别的信息,且服务实例是通过nacos-client注册,并能够保持心跳上报,那么就可以选择AP模式。当前主流的服务如 Spring cloud 和 Dubbo 服务,都适用于AP模式,而K8S服务和DNS服务,则适用于CP模式。AP模式的服务实例可以在CP模式下注册,例如Zookeeper,但是反过来不能。

切换运行模式,对原有数据不会影响,但是会影响新数据的创建和老数据的更新和删除。

增加全局推送开关

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

curl -X PUT

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

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

支持启动时数据预热

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

注意事项

对于临时实例的预热,实现机制是Server在启动时会从其他Server节点拉取数据,拉取成功则启动成功,但是当从老版本Server升级到1.0.0时,由于这个拉取全量数据的接口在老版本Server不存在,那么第一个升级的机器将无法拉到任何数据,从而后面升级的机器也无法从第一个升级的机器拉取到数据。此时建议使用调用API将Server的运行状态设置为WRITE_ONLY,允许客户端数据逐步汇聚补偿上来,但是阻止任何查询的流量,等集群数据准备好以后,再将这个运行状态清空,集群自己调整运行状态,然后就会提供完整服务。

元数据编辑框优化

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

元数据编辑框优化1

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

元数据编辑框优化2

支持MySQL 8.0

Nacos 1.0.0将支持MySQL 8.0 驱动。

API完整列表开发,模型设计和架构设计文档发布

服务发现和配置管理的完整API列表会发布到官网,同时对于Nacos的数据模型,集群模型,架构设计及模块设计等文档也会发布。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/372417.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

poj 2229 Sumsets

题目大意&#xff1a; 一个数由2的幂次数的和构成&#xff0c;问有几种构成方式&#xff1f; 主要是找规律 代码如下 1 #include <cstdio>2 #include <cstring>3 int n;4 #define M 10000000005 int dp[1000002];6 7 int main(int argc, char const *argv[])8 {9 …

html 甘特图_Rplotly|交互式甘特图(Gantt chart)项目管理/学习计划

甘特图(Gantt chart)&#xff0c;又常被称为横道图或者条状图&#xff0c;是现代企业项目管理领域运用最为广泛的一种图示。就是通过条形来显示项目的进度、时间安排等相关情况的。项目管理外&#xff0c;也可以用来管理学习计划。绘制甘特图的工具有很多&#xff0c;本文介绍使…

使您的Spring Security @Secured注释更干燥

最近&#xff0c;Grails用户邮件列表中的一个用户想知道在定义Secured批注时如何减少重复 。 在Java批注中指定属性的规则非常严格&#xff0c;因此我看不到直接执行他所要求的方法的方法。 使用Groovy并没有真正的帮助&#xff0c;因为Groovy类中的注释大部分与Java中的注释几…

阅读《大型网站技术架构》 第三章心得

今天阅读了《大型网站技术架构》 的第三章&#xff0c;这一章主要讲解了大型网站核心架构要素&#xff0c;并且概括的讲解了相应的实现方法。 软件架构除了系统功能需求外&#xff0c;还需要关注性能、可用性、伸缩性、扩展性、安全性。 其中性能是网站的重要指标。优化网站性能…

easyui数据表格重置_数据库三种删除方式

第一种 使用delete 语句特点&#xff1a;delete 属于数据库操纵语言DML&#xff0c;表示删除表中的数据&#xff0c;删除过程是每次从表中删除一行&#xff0c;并把该行删除操作作为事务记录在日志中保存可以配合事件&#xff08;transaction&#xff09;和 回滚&#xff08;ro…

main函数之间的代码操作

全局对象的构造函数会在main函数之前执行。转载于:https://www.cnblogs.com/yingl/p/5817123.html

Windows 自启动总结《转》

开机启动项  【启动项目就是开机的时候系统会在前台或者后台运行的程序】  当Windows&#xff08;操作系统&#xff09;完成登录过程&#xff0c;进程表中出现了很多的进程&#xff01;Windows在启动的时候&#xff0c;自动加载了很多程序。  许多程序的自启动&#xff0…

win10多合一原版系统_微软Win10专业版制作多合一系统安装盘教程

微软Win10怎么制作多合一系统安装盘?和Win10家庭版、win10企业版&#xff0c;win10教育版相比&#xff0c;微软Win10专业版是最受大家喜欢的操作系统&#xff0c;那么在安装Win10操作系统的时候&#xff0c;我们就不得不准备多个不同版本的系统安装盘。可是你知道微软Win10专业…

Oracle Coherence:分布式数据管理

本文介绍如何使用Oracle Coherence提供分布式&#xff08;分区&#xff09;数据管理。 在下面的示例应用程序中&#xff0c;创建了一个名为OTV的新集群&#xff0c;并且在该集群的两个成员之间分配了一个名为user-map的缓存对象。 二手技术&#xff1a; JDK 1.6.0_21 Maven的…

Ajax学习笔记

Ajax 什么是ajax AJAX即“Asynchronous JavaScript and XML”&#xff08;异步的JavaScript与XML技术&#xff09;&#xff0c;指的是一套综合了多项技术的浏览器端网页开发技术。以前&#xff0c;几乎所有的网站都由HTML页面实现&#xff0c;服务器处理每一个用户请求都需要重…

美团点评DBProxy读写分离使用说明

目的 因为业务架构上需要实现读写分离&#xff0c;刚好前段时间美团点评开源了在360Atlas基础上开发的读写分离中间件DBProxy&#xff0c;关于其介绍在官方文档已经有很详细的说明了&#xff0c;其特性主要有&#xff1a;读写分离、负载均衡、支持分表、IP过滤、sql语句黑名单、…

apriori算法c++_关联分析——基于Apriori算法实现

电子商务推荐系统主要是通过统计和挖掘技术&#xff0c;根据用户在网站上的行为,主动为用户提供推荐服务&#xff0c;从而提高网站体验。而根据不同的业务场景&#xff0c;推荐系统需要满足不同的推荐粒度&#xff0c;包括搜索推荐,商品类目推荐,商品标签推荐&#xff0c;店铺推…

在Oracle Coherence中分发Spring Bean

本文展示了如何通过使用Oracle Coherence中的EntryProcessor和可移植对象格式&#xff08;POF&#xff09;功能来分发Spring Bean。 Coherence通过EntryProcessor API支持无锁编程模型。 此功能通过减少网络访问并在条目上执行隐式的低级锁定来提高系统性能。 此隐式低级锁定功…

postman测试实例--断言

让我们来看看postman测试的一些例子。 其中大部分是作为内部postman片段。 大多数测试是为单行的JavaScript语句一样简单。 只要你想一个请求&#xff0c;你可以有很多的测试。注意&#xff1a;一个响应已从服务器接收后测试脚本运行。测试实例1.设置环境变量 postman.setEnvir…

python实现单例模式的几种方式_基于Python中单例模式的几种实现方式及优化详解...

单例模式单例模式(Singleton Pattern)是一种常用的软件设计模式&#xff0c;该模式的主要目的是确保某一个类只有一个实例存在。当你希望在整个系统中&#xff0c;某个类只能出现一个实例时&#xff0c;单例对象就能派上用场。比如&#xff0c;某个服务器程序的配置信息存放在一…

android-铃声的设置与播放

在android系统中&#xff0c;不同铃声存放的铃声路径&#xff1a;/system/media/audio/ringtones 来电铃声/system/media/audio/notifications 短信通知铃声/system/media/audio/alarms 闹钟铃声铃声的设置&#xff1a;import java.io.File; import andr…

Apache Commons SCXML:有限状态机实现

本文提到有限状态机&#xff08;FSM&#xff09;&#xff0c;SCXML&#xff08;状态图可扩展标记语言&#xff09;和Apache Common的SCXML库。 本文还提供了基本的ATM有限状态机示例代码。 有限状态机&#xff1a; 您可能还记得计算机科学课程中的有限状态机。 FSM用于设计计算…

第二十章、分离应用程序逻辑并处理事件

理解委托 委托是对方法的引用。&#xff08;之所以称为委托&#xff0c;是因为一旦被调用&#xff0c;就将具体的处理“委托”给引用的方法&#xff09; 委托对象引用了方法&#xff0c;和将int赋值给int变量一样&#xff0c;是将方法引用赋给委托对象。 Processor p new Proc…

pymol怎么做底物口袋表面_怎么从文献中发掘一篇新文章?

本文来自微信公众号&#xff1a;X-MOLNews可能你的导师也曾说过这样的话——盯着Nature、Science级别的文章做&#xff0c;可能最终会中十分的文章&#xff1b;如果盯着十分的文章做&#xff0c;可能最终发出来也就五六分&#xff1b;但如果就为了发个文章混毕业&#xff0c;很…

如何分析线程转储– IBM VM

本文是我们的线程转储分析系列的第4部分&#xff0c;它将为您概述什么是IBM VM的JVM线程转储以及您将找到的不同线程和数据点。 您将看到和学习​​到&#xff0c;IBM VM Thread Dump格式是不同的&#xff0c;但是提供了更多现成的故障排除数据。 在这一点上&#xff0c;您应该…