转载

最近使用 Nacos 的一些问题

Nacos是什么这里就不做过多介绍了,可以看看我之前的文章:

  • 阿里Nacos初体验

  • 阿里Nacos-配置-多环境

  • Nacos做配置中心经常被问到的问题

  • Nacos集群搭建过程详解

  • Spring Cloud Alibaba 整合Nacos Config

最近一个新的产品在使用Nacos做注册中心和配置中心,在使用的过程中也发生了一些小问题,在此记录下。

使用版本:

<dependency>

<groupId>com.alibaba.boot</groupId>

<artifactId>nacos-config-spring-boot-starter</artifactId>

<version>0.2.2</version>

</dependency>

配置不刷新

比如我们在启动类上通过@NacosPropertySource指定了dataId,然后也配置了自动刷新,配置如下:

@NacosPropertySource(dataId = "application", autoRefreshed = true, type = ConfigType.YAML)

在具体使用的时候也没太去注意,直接就用了@NacosValue去获取对应的配置内容。刚开始没注意到说在后台改了配置,应用中居然没生效,后面是因为需要修改一个配置内容,发现改了之后没效果,才发现这个问题。

解决也非常简单,在@NacosValue中也将autoRefreshed设置为true就可以了,默认值是false。也就是说@NacosPropertySource和@NacosValue中都要配置才行。

我个人感觉这个不是很方便,大部分人都会认为@NacosPropertySource设置了应该就是这个对应的dataId里面的都可以自动刷新,最重要的是自动刷新是配置中心 最基本的功能 ,我没搞明白为什么默认要关闭,直接默认开启多友好。

还有就是推荐大家都用@Value的方式进行配置的注入,这样做的好处在于当配置中心切换成其他的,比如Apollo的时候,不用改任何代码,如果用的是@NacosValue的话,那么就得改代码了。

但是@Value的弊端在Spring Boot中目前是无法动态更新的,只能依赖@RefreshScope才可以,但@RefreshScope这玩意是Spring Cloud中的,如果你没用Spring Cloud就尴尬了。。。

不知道有没有其他方式能实现,但在Apollo中@Value是支持动态刷新的,点赞点赞。

日志狂输出

由于Nacos naming模块中输出了很多info级别的日志,刚好项目中也设置了info级别,这个时候就会疯狂输出下面的日志,一天下来99%的日志都是无用的,浪费磁盘....

com.alibaba.nacos.client.naming -227843770 [com.alibaba.nacos.client.
naming.updater] INFO  ....

在Nacos的文档中有提到了日志级别的调整,如下图:

最近使用 Nacos 的一些问题

如果你用的log4j的换,自己将对应的配置级别调高就行,比如:

<logger name="com.alibaba.nacos.client.naming" additivity="false">

<level value="warn"/>

<appender-ref ref="FileAppender" />

<appender-ref ref="ConsoleAppender" />

</logger>

以上两个问题并不是功能有问题,而是在刚开始使用的过程中,由于不是很熟悉,会出现的问题。

最近使用 Nacos 的一些问题

原文  https://mp.weixin.qq.com/s/WntGbSOyI64UdaNg5PB1VQ
正文到此结束
Loading...