1. 程式人生 > 程式設計 >最近使用Nacos的一些問題

最近使用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>
複製程式碼

以上兩個問題並不是功能有問題,而是在剛開始使用的過程中,由於不是很熟悉,會出現的問題。