1. 程式人生 > 其它 >Nacos Config 配置項引數詳解

Nacos Config 配置項引數詳解

首先,我們需要在 coupon-customer-impl 專案的 resource 資料夾中建立 bootstrap.yml 配置檔案。
接下來,你需要在 bootstrap.yml 檔案中新增一些 Nacos Config 配置項,我把一些常用的配置項寫到了這裡,你可以參考一下。


spring:
  # 必須把name屬性從application.yml遷移過來,否則無法動態重新整理
  application:
    name: coupon-customer-serv
  cloud:
    nacos:
      config:
        # nacos config伺服器的地址
        server-addr: localhost:8848
        file-extension: yml
        # prefix: 檔名字首,預設是spring.application.name
        # 如果沒有指定命令空間,則預設命令空間為PUBLIC
        namespace: dev
        # 如果沒有配置Group,則預設值為DEFAULT_GROUP
        group: DEFAULT_GROUP
        # 從Nacos讀取配置項的超時時間
        timeout: 5000
        # 長輪詢超時時間
        config-long-poll-timeout: 10000        
        # 輪詢的重試時間
        config-retry-time: 2000
        # 長輪詢最大重試次數
        max-retry: 3
        # 開啟監聽和自動重新整理
        refresh-enabled: true  //預設true
        # Nacos的擴充套件配置項,數字越大優先順序越高
        extension-configs: //讀取多份配置
          - dataId: redis-config.yml
            group: EXT_GROUP
            # 動態重新整理
            refresh: true
          - dataId: rabbitmq-config.yml
            group: EXT_GROUP
            refresh: true

檔案定位配置項:主要用於匹配 Nacos 伺服器上的配置檔案。

  • namespace:Nacos Config 的 namespace 和 Nacos 服務發現階段配置的 namespace 是同一個概念和用法。我們可以使用 namespace 做多租戶(multi-tenant)隔離方案,或者隔離不同環境。我指定了 namespace=dev,應用程式只會去獲取 dev 這個名稱空間下的配置檔案;
  • group:概念和用法與 Nacos 服務發現中的 group 相同,如未指定則預設值為 DEFAULT_GROUP,應用程式只會載入相同 group 下的配置檔案;
  • prefix:需要載入的檔名字首,預設為當前應用的名稱,即 spring.application.name,一般不需要特殊配置;
  • file-extension:需要載入的副檔名,預設為 properties,我改成了 yml。你還可以選擇 xml、json、html 等格式。

超時和重試配置項

  • timeout:從 Nacos 讀取配置項的超時時間,單位是 ms,預設值 3000 毫秒;
  • config-retry-time:獲取配置項失敗的重試時間;
  • config-long-poll-timeout:長輪詢超時時間,單位為 ms;
  • max-retry:最大重試次數。

在這裡,我想多跟你介紹一下超時和重試配置裡提到的長輪詢機制的工作原理。
當 Client 向 Nacos Config 服務端發起一個配置查詢請求時,服務端並不會立即返回查詢結果,而是會將這個請求 hold 一段時間。
如果在這段時間內有配置項資料的變更,那麼服務端會觸發變更事件,客戶端將會監聽到該事件,並獲取相關配置變更;
如果這段時間內沒有發生資料變更,那麼在這段“hold 時間”結束後,服務端將釋放請求。採用長輪詢機制可以降低多次請求帶來的網路開銷,並降低更新配置項的延遲。

通用配置

  • server-addr:Nacos Config 伺服器地址;
  • refresh-enabled: 是否開啟監聽遠端配置項變更的事件,預設為 true。

擴充套件配置

  • extension-configs:如果你想要從多個配置檔案中獲取配置項,那麼你可以使用 extension-configs 配置多源讀取策略。
  • extension-configs 是一個 List 的結構,每個節點都有 dataId、group 和 refresh 三個屬性,分別代表了讀取的檔名、所屬分組、是否支援動態重新整理。

在實際的應用中,我們經常需要將一個公共配置項分配給多個微服務使用,比如多個服務共享同一份 Redis、RabbitMQ 中介軟體連線資訊。
這時我們就可以在 Nacos Config 中新增一個配置檔案,並通過 extension-configs 配置項將這個檔案作為擴充套件配置源加到各個微服務中。
這樣一來,我們就不需要在每個微服務中單獨管理通用配置了。