最近使用Nacos的一些问题

最近一个新的产品在使用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的文档中有提到了日志级别的调整,如下图:

图片

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

<logger name="com.alibaba.nacos.client.naming" additivity="false">
  <level value="warn"/>
  <appender-ref ref="FileAppender" />
  <appender-ref ref="ConsoleAppender" />
</logger>
复制代码

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

猜你喜欢

转载自juejin.im/post/5dc1554ff265da4d2c5ea203