如何依赖最新的 Nacos 客户端?

很多用户都是通过 Spring Cloud Alibaba 或者 Dubbo 依赖的 Nacos 客户端,那么 Spring Cloud Alibaba 和 Dubbo 中依赖的 Nacos 客户端版本,往往会落后于 Nacos 最新发布的版本。在一些情况下,用户需要强制将 Nacos 客户端升级到最新,此时却往往不知道该升级哪个依赖,这里将 Spring Cloud Alibaba 和 Dubbo 的依赖升级如下:

<dependency>
     <groupId>com.alibaba.cloud</groupId>
     <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
     <version>[latest version]</version>
     <excludes>
          <exclude>
                 <groupId>com.alibaba.nacos</groupId>
                 <artifactId>nacos-client</artifactId>
          </exclude>
     </excludes>
 </dependency>

<dependency>
  <groupId>com.alibaba.nacos</groupId>
  <artifactId>nacos-client</artifactId>
  <version>[latest version]</version>
</dependency>

Dubbo
Dubbo 也是类似的道理,用户通常引入的是以下的依赖:

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>dubbo-registry-nacos</artifactId>
    <version>[latest version]</version>
</dependency>
    
<!-- Dubbo dependency -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>dubbo</artifactId>
    <version>[latest version]</version>
</dependency>

日志打印频繁的问题

在老的 Nacos 版本中,往往会有大量的无效日志打印,这些日志的打印会迅速占用完用户的磁盘空间,同时也让有效日志难以查找。目前社区反馈的日志频繁打印主要有以下几种情况:
1、access 日志大量打印

主要表现是 {nacos.home}/logs/access_log.2022-xx-xx.log 类似格式文件名的日志大量打印,而且还不能自动清理和滚动。这个日志是 Spring Boot 提供的 Tomcat 访问日志打印,Spring Boot 在关于该日志的选项中,没有最大保留天数或者日志大小控制的选项。因此这个日志的清理必须由应用新建 Crontab 任务来完成,或者通过以下命令关闭日志的输出(在生产环境我们还是建议开启该日志,以便能够有第一现场的访问记录):

server.tomcat.accesslog.enabled=false

2、服务端业务日志大量打印且无法动态调整日志级别。这个问题在 1.1.3 已经得到优化,可以通过 API 的方式来进行日志级别的调整,调整日志级别的方式如下:

调整naming模块的naming-raft.log的级别为error:

curl -X PUT ‘$nacos_server:8848/nacos/v1/ns/operator/log?logName=naming-raft&logLevel=error’

调整config模块的config-dump.log的级别为warn:

curl -X PUT ‘$nacos_server:8848/nacos/v1/cs/ops/log?logName=config-dump&logLevel=warn’

3、客户端日志大量打印,主要有心跳日志、轮询日志等。这个问题已经在 1.1.3 解决,请升级到 1.1.3 版本。

Nacos配置中心

设置DataId,Data ID它的定义规则是:p r e f i x − {prefix}-prefix−{spring.profile.active}.${file-extension}

1、prefix 默认为 spring.application.name 的值,也可以通过配置项spring.cloud.nacos.config.prefix 来配置。

2、spring.profile.active 即为当前环境对应的 profile,可以通过配置项 spring.profile.active 来配置。

3、file-exetension 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension 来配置。目前只支持 properties 和 yaml 类型。

注意:当 spring.profile.active 为空时,对应的连接符 - 也将不存在

dataId 的拼接格式变成 prefix.prefix.{file-extension}

这里创建Data Id 为goods-consumer.yml的配置文件,其中Group为默认的DEFAULT_GROUP,配置文件的格式也相应的选择yaml,其内添加商品预警库存配置goods.crisis_stock=10,到剩余数为10就像报警

配置文件名为bootstrap.yml,注意是bootstrap,而不是application。原因如下

Nacos同springcloud-config一样,在项目初始化时,要保证先从配置中心进行配置拉取,拉取配置之后,才能保证项目的正常启动。springboot中配置文件的加载是存在优先级顺序的,bootstrap优先级高于application

重要的概念

Nacos配置有几个重要的概念
Nacos给的最佳实践表明,最外层的namespace是可以用于区分部署环境的,比如test,dev,prod等。同时,也有一个商业利用价值:多租户(以后会介绍)。以namespace为单位,给用户开辟使用空间。

其它两个领域模型不用多解释了,见名知意。其目的也非常明显,就是为了能够逻辑上区分两个目标对象。

amespace为单位,给用户开辟使用空间**。