使用nacos作為配置中心統一管理配置

CloverYou發表於2021-11-19

基礎環境

引入所需依賴包

<dependency>
  <groupId>com.alibaba.cloud</groupId>
  <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

建立一個 bootstrap.propertiesbootstrap.yaml 。其中指定專案名與配置中心伺服器地址

spring.application.name=gulimall-coupon
spring.cloud.nacos.config.server-addr=127.0.0.1:8848

最後需要再配置中心新增一個資料集(Data Id),通常是「應用名.properties」。新建完後就可以給“配置內容”中新增任何配置,可以通過@Value("${配置名}")獲取到配置。如果還需要動態重新整理,可以給類加上 @RefreshScope

@RefreshScope
public class CouponController {
    @Value("${author.name}")
    private String name;
}

dataID

在 Nacos Config Starter 中,dataId 的拼接格式如下

${prefix} - ${spring.profiles.active} . ${file-extension}
  • prefix 預設為 spring.application.name 的值,也可以通過配置項 spring.cloud.nacos.config.prefix來配置。

  • spring.profiles.active 即為當前環境對應的 profile,詳情可以參考 Spring Boot文件

    注意,當 active profile 為空時,對應的連線符 - 也將不存在,dataId 的拼接格式變成 ${prefix}.${file-extension}

  • file-extension 為配置內容的資料格式,可以通過配置項 spring.cloud.nacos.config.file-extension來配置。 目前只支援 properties 型別。

group

  • group 預設為 DEFAULT_GROUP,可以通過 spring.cloud.nacos.config.group 配置。

Nacos 作為配置中心的更多細節

名稱空間

用於進行租戶粒度的配置隔離。不同的名稱空間下,可以存在相同的 Group 或 DataID 的配置。Namespace 的常用場景之一是不同環境的配置的區分隔離。例如開發測試環境和生產環境的資源(如配置、服務)隔離等。

預設的名稱空間是 public(保留空間) :預設新增的所有配置都在 public 空間下。

例如有開發、測試、生產三個環境,此時需要將生產環境的配置切換到開發環境的配置,那麼就可以使用名稱空間快速切換不同的環境配置,需要在 bootstrap 配置中修改配置,配置如下

#名稱空間ID
spring.cloud.nacos.config.namespace=24b7cf49-b115-4d1f-85a7-fdb44d9ec559

配置集

一組相關或者不相關的配置項的集合稱為配置集。在系統中,一個配置檔案就是一個配置集,包含了系統的各個方面的配置。例如,一個配置集可能包含了資料來源、執行緒池、日誌級別等配置項。

配置集ID

類似配置檔名,在Nacos中叫Data ID

配置分組

預設所有的配置集都屬於:DEFAULT_GROUP

可以通過 bootstrap 配置檔案中指定使用哪個配置分組

spring.cloud.nacos.config.group=DEFAULT_GROUP

每個微服務都建立自己的名稱空間,使用配置分組區分環境

相關文章