31

最近使用Nacos的一些问题

 4 years ago
source link: http://mp.weixin.qq.com/s?__biz=MzIwMDY0Nzk2Mw%3D%3D&%3Bmid=2650320740&%3Bidx=1&%3Bsn=ac190f9f4b3ed878a5d46bd3b433a95c
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

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的文档中有提到了日志级别的调整,如下图:

yuEbYvj.png!web

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

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

<level value="warn"/>

<appender-ref ref="FileAppender" />

<appender-ref ref="ConsoleAppender" />

</logger>

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

UjmyInZ.jpg!web


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK