Nacos 2.0.0-ALPHA 文档

经过社区近5个月的讨论和开发, Nacos 基于长连接的2.0.0版本的核心功能已开发完成,目前开放2.0.0-ALPHA.1版本,供社区公测。

注意,ALPHA版本仅供测试讨论,请勿在生产环境中使用。ALPHA版本提供的接口API及功能呈现结果可能会和正式版本存在不一致的情况,请以后续正式版本为准

2.0.0-ALPHA版本暂时为独立版本,无法进行服务端1.X版本到2.0.0-ALPHA的平滑升级,正式版本时会支持部分版本到该版本的平滑升级,请关注后续的升级文档。

新版本部署

参考Nacos部署手册 ,将版本相关替换成2.0.0-ALPHA。

功能完成度及旧版本客户端适配情况:

配置中心

JAVA SDK

  • 完全兼容1.X客户端所有API接口方法;
  • 完全实现2.X客户端所有API接口方法。

其他语言 SDK

  • 完全兼容

openAPI

  • 完全兼容所有配置中心相关openAPI。

服务发现

由于服务发现的数据模型发生了比较重大的改变,因此有少量功能暂时未支持。

JAVA SDK

  • 暂不支持注册持久化服务实例;
  • 兼容1.X客户端非持久化服务接口;
  • 实现2.X客户端非持久化服务接口。

其他语言 SDK

  • 仅兼容非持久化服务实例相关操作。

openAPI

  • 注册实例(仅支持非持久化实例)
  • 注销实例(支持)
  • 修改实例(支持)
  • 查询实例列表(支持)
  • 查询实例详情(不支持,不影响从控制台查看详情)
  • 发送实例心跳(支持)
  • 创建服务(不支持,不影响通过注册实例的方式创建服务)
  • 删除服务(不支持,暂时通过删除空服务方式进行)
  • 修改服务(支持)
  • 查询服务(不支持,不影响从控制台查看详情)
  • 查询服务列表(支持)
  • 查询系统开关(支持)
  • 修改系统开关(支持)
  • 查看系统当前数据指标(支持)
  • 查看当前集群Server列表(支持)
  • 查看当前集群leader(将废弃)
  • 更新实例的健康状态(不支持,与持久化实例相关,暂不支持)
  • 批量更新实例元数据(Beta,不支持)
  • 批量删除实例元数据(Beta,不支持)

控制台

  • 完全兼容配置中心相关页面及功能
  • 完全兼容权限控制相关页面及功能
  • 完全兼容命名空间相关页面及功能
  • 完全兼容集群管理相关页面及功能
  • 兼容大部分服务发现相关页面及功能
    • 不支持手动创建服务
    • 不支持手动删除服务(空服务在一定时间后自动删除)
    • 不支持更新集群元数据信息(可以查看)

生态兼容情况

Spring Cloud Alibaba

可通过指定nacos-client方式,提前使用Nacos2.0长连接功能

  1. <dependency>
  2. <groupId>com.alibaba.cloud</groupId>
  3. <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
  4. <version>2.1.5.RELEASE</version>
  5. <exclusions>
  6. <exclusion>
  7. <groupId>com.alibaba.nacos</groupId>
  8. <artifactId>nacos-client</artifactId>
  9. </exclusion>
  10. </exclusions>
  11. </dependency>
  12. <dependency>
  13. <groupId>com.alibaba.cloud</groupId>
  14. <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
  15. <version>2.1.5.RELEASE</version>
  16. <exclusions>
  17. <exclusion>
  18. <groupId>com.alibaba.nacos</groupId>
  19. <artifactId>nacos-client</artifactId>
  20. </exclusion>
  21. </exclusions>
  22. </dependency>
  23. <dependency>
  24. <groupId>com.alibaba.nacos</groupId>
  25. <artifactId>nacos-client</artifactId>
  26. <version>2.0.0-ALPHA.1</version>
  27. </dependency>

Dubbo

由于Dubbo在配置中心(元数据中心)通过反射获取Nacos客户端的部分内容,因此在对于2.0.0-ALPHA.1版本暂时无法兼容。 目前已与dubbo社区进行沟通,尽快解决适配问题。

Nacos Spring Boot

Nacos spring boot 将会配合新版本Nacos客户端发布一个ALPHA版本。

使用方式

SDK客户端、控制台

Nacos 2.0.0-ALPHA版本使用方式和Nacos1.X版本使用完全一致。客户端接口请参考Nacos1.X的SDK文档

服务端

Nacos 2.0.0-ALPHA服务端的部署和使用也和旧版本没有太大区别,这里对新版本中新增的数个配置参数进行说明

参数默认值描述
nacos.naming.clean.empty-service.interval60000(单位毫秒)Nacos自动清理空服务的工作间隔,将替代旧版本中的nacos.naming.empty-service.clean.period-time-ms参数
nacos.naming.clean.empty-service.expired-time60000(单位毫秒)Nacos判断可清理的空服务的过期时间,当服务没有发布的实例,且超过该过期时间未发生更新后,将被判定为过期空服务而移除
nacos.naming.clean.expired-metadata.interval5000(单位毫秒)Nacos自动清理过期元数据的工作间隔
nacos.naming.clean.expired-metadata.expired-time60000(单位毫秒)Nacos自动清理过期服务的过期时间,当服务或实例本身被移除超过该设定时间后,元数据信息将会被移除

FAQ

为什么暂不支持平滑升级,之后能支持吗?

由于Nacos服务发现模块的服务模型和数据模型都经过重新设计,因此数据结构等发生了比较大的变化,所以暂时不支持平滑升级。 在2.0.0正式版本发布的时候,会支持部分1.X版本到该版本的平滑升级,具体信息在正式发布时会更新升级相关的文档。

能否支持Nacos旧版本客户端?

配置中心兼容支持Nacos1.0起的所有版本客户端,服务发现兼容Nacos1.2起所有版本客户端。 因此建议使用Nacos1.2.0之后版本客户端。 但nacos1.X的客户端不具有长连接能力,因此仍然建议使用Nacos2.0.0客户端。

启动后,调用openAPI 报错 code:503,msg:server is DOWN now, please try again later!

Nacos在1.4版本后使用Jraft替换了自研的Raft实现,Jraft的选主比原先自研的Raft更加严格,会记录之前启动时的ip或host。因此重启时如果ip变动了,有可能造成选主失败,从而导致nacos无法正确提供服务。 解决方式为删除nacos目录下的data,再启动。

或者使用-Dnacos.server.ip=${domain},然后将nacos/conf的cluster.conf配置domain列表,避免重启时ip变动导致的raft选主问题。

找不到符号com.alibaba.nacos.consistency.entity

这个包目录是由protobuf在编译时自动生成,您可以通过mvn compile来自动生成他们。如果您使用的是IDEA,也可以使用IDEA的protobuf插件。

待补充…