Nacos做配置中心經常被問到的問題


加載多個配置文件怎么處理?

通過@NacosPropertySource可以注入一個配置文件,如果我們需要將配置分類存儲或者某些配置需要共用,這種需求場景下,一個項目中需要加載多個配置文件,可以可以直接使用多個@NacosPropertySource注解即可。

@NacosPropertySource(dataId = "nacos-springboot", autoRefreshed = true)
@NacosPropertySource(dataId = "redis", autoRefreshed = true)
@SpringBootApplication
public class NacosSpringBootApp {
	public static void main(String[] args) {
		SpringApplication.run(NacosSpringBootApp.class, args);
	}
}

或者@NacosPropertySources

@NacosPropertySources({
	@NacosPropertySource(dataId = "nacos-springboot", autoRefreshed = true),
	@NacosPropertySource(dataId = "redis", autoRefreshed = true)
})

后面我們會講解在Spring Cloud中使用,可以直接用配置文件的方式指定多個data-id。

配置修改了如何監聽?

先介紹一種比較古老的方式,太繁瑣了,如下:

@NacosInjected
private ConfigService configService;

@PostConstruct
public void init() {
	try {
		onMessage();
	} catch (NacosException e) {
		e.printStackTrace();
	}
}
	
public void onMessage() throws NacosException {
	configService.addListener("nacos-springboot", "DEFAULT_GROUP", new AbstractListener() {
		public void receiveConfigInfo(String config) {
		    System.err.println(config);
		}
	});
}

通過ConfigService添加一個監聽器,監聽具體的配置文件

下面使用注解方式來監聽,既簡單又方便很直接,如下:

@NacosConfigListener(dataId = "nacos-springboot")
public void onMessage(String config) {
    System.out.println(config);
}

當然配置監聽還支持多類型的轉換,上面的示列只是簡單的獲取整個配置的字符串,關於更多的類型轉換后面我們單獨講解。

支持多語言嗎?

Nacos本身是提供Http接口的,通過接口我們可以對配置進行操作。只是目前SDK這塊只支持Java,其他語言的后面會支持,只是目前還沒開發,通過后台的示列代碼我們可以看到有支持多語言的計划。

其他語言目前可以使用API來對接:https://nacos.io/zh-cn/docs/open-api.html

跟Apollo對比哪個更好?

對比這塊大家可以根據自身的需求去做一個比對,只要符合你的需求,那對你來說這個框架就是好的。

如果說你目前已經在使用Apollo,那么我建議還是不要換,太折騰。

如果你還沒使用Apollo,在對配置中心做選型,這個時候可以去做下詳細的對比。從功能點,穩定性,使用,部署等方面去比較。

如果你公司內部用了dubbo的話,我覺得Nacos可以考慮用起來,這樣既然替代ZK,又能增加一個配置中心的功能,可以說是比較好的方式了。

部署簡單嗎?

Nacos部署非常簡單,可以直接下載官方編譯好的包,解壓改改配置文件即可啟動,集群部署也是一樣的,后面我們會單獨講解集群部署。

同時還支持Docker部署,熟悉Docker的朋友就方便了。

猿天地


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM