Nacos作配置中心常常被問到的問題

今天來講說Nacos作配置中心常常被問到的問題html

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

配置修改瞭如何監聽?spring

支持多語言嗎?api

跟Apollo對比哪一個更好?springboot

部署簡單嗎?框架

↓↓ide

-spa

1.net

-code

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

經過@NacosPropertySource能夠注入一個配置文件,若是咱們須要將配置分類存儲或者某些配置須要共用,這種需求場景下,一個項目中須要加載多個配置文件,能夠能夠直接使用多個@NacosPropertySource註解便可。

  
  1. @NacosPropertySource(dataId = "nacos-springboot", autoRefreshed = true)

  2. @NacosPropertySource(dataId = "redis", autoRefreshed = true)

  3. @SpringBootApplication

  4. public class NacosSpringBootApp {

  5. public static void main(String[] args) {

  6. SpringApplication.run(NacosSpringBootApp.class, args);

  7. }

  8. }

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

或者@NacosPropertySources

  
  1. @NacosPropertySources({

  2. @NacosPropertySource(dataId = "nacos-springboot", autoRefreshed = true),

  3. @NacosPropertySource(dataId = "redis", autoRefreshed = true)

  4. })

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

後面咱們會講解在Spring Cloud中使用,能夠直接用配置文件的方式指定多個data-id。

-

2

-

配置修改瞭如何監聽?

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

  
  1. @NacosInjected

  2. private ConfigService configService;

  3. @PostConstruct

  4. public void init() {

  5. try {

  6. onMessage();

  7. } catch (NacosException e) {

  8. e.printStackTrace();

  9. }

  10. }

  11. public void onMessage() throws NacosException {

  12. configService.addListener("nacos-springboot", "DEFAULT_GROUP", new AbstractListener() {

  13. public void receiveConfigInfo(String config) {

  14. System.err.println(config);

  15. }

  16. });

  17. }

@NacosInjectedprivate ConfigService configService;@PostConstructpublic 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添加一個監聽器,監聽具體的配置文件

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

  
  1. @NacosConfigListener(dataId = "nacos-springboot")

  2. public void onMessage(String config) {

  3. System.out.println(config);

  4. }

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

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

-

3

-

支持多語言嗎?

Nacos自己是提供Http接口的,經過接口咱們能夠對配置進行操做。只是目前SDK這塊只支持Java,其餘語言的後面會支持,只是目前還沒開發,經過後臺的示列代碼咱們能夠看到有支持多語言的計劃。

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

-

4

-

跟Apollo對比哪一個更好?

對比這塊你們能夠根據自身的需求去作一個比對,只要符合你的需求,那對你來講這個框架就是好的。

若是說你目前已經在使用Apollo,那麼我建議仍是不要換,太折騰。

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

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

-

5

-

部署簡單嗎?

Nacos部署很是簡單,能夠直接下載官方編譯好的包,解壓改改配置文件便可啓動,集羣部署也是同樣的,後面咱們會單獨講解集羣部署。

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

-

6

-

多環境怎麼區分?

阿里Nacos-配置-多環境