Nacos之命名空間分組和DataID三者關系


問題 - 多環境多項目管理
問題1:

實際開發中,通常一個系統會准備

  • dev開發環境
  • test測試環境
  • prod生產環境。

如何保證指定環境啟動時服務能正確讀取到Nacos上相應環境的配置文件呢?

問題2:

一個大型分布式微服務系統會有很多微服務子項目,每個微服務項目又都會有相應的開發環境、測試環境、預發環境、正式環境…那怎么對這些微服務配置進行管理呢?

Nacos的圖形化管理界面
image

image
POM

<dependencies>
        <!--nacos-config-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
        <!--nacos-discovery-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <!--web + actuator-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <!--一般基礎配置-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

YML

Nacos同springcloud-config一樣,在項目初始化時,要保證先從配置中心進行配置拉取,拉取配置之后,才能保證項目的正常啟動。

springboot中配置文件的加載是存在優先級順序的,bootstrap優先級高於application

  • bootstrap
# nacos配置
server:
  port: 3377

spring:
  application:
    name: nacos-config-client
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #Nacos服務注冊中心地址
      config:
        server-addr: localhost:8848 #Nacos作為配置中心地址
        file-extension: yml #指定yaml格式的配置
        group: DEV_GROUP
        #namespace: 7d8f0f5a-6a53-4785-9686-dd460158e5d4


# ${spring.application.name}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension}
# nacos-config-client-dev.yaml

# nacos-config-client-test.yaml   ----> config.info
  • application
spring:
  profiles:
    active: dev # 表示開發環境
    #active: test # 表示測試環境
    #active: info

在Nacos中添加配置信息

Nacos中的dataid的組成格式及與SpringBoot配置文件中的匹配規則
官方文檔
說明:之所以需要配置spring.application.name,是因為它是構成Nacos配置管理dataId 字段的一部分。

在 Nacos Spring Cloud中,dataId的完整格式如下:

\({prefix}-\){spring-profile.active}.${file-extension}

  • prefix默認為spring.application.name的值,也可以通過配置項spring.cloud.nacos.config.prefix來配置。
  • spring.profile.active即為當前環境對應的 profile,詳情可以參考 Spring Boot文檔。注意:當spring.profile.active為空時,對應的連接符 - 也將不存在,datald 的拼接格式變成\({prefix}.\)
  • file-exetension為配置內容的數據格式,可以通過配置項spring .cloud.nacos.config.file-extension來配置。目前只支持properties和yaml類型。
  • 通過Spring Cloud 原生注解@RefreshScope實現配置自動更新。
    最后公式:

\({spring.application.name)}-\){spring.profiles.active}.${spring.cloud.nacos.config.file-extension}

image

Namespace+Group+Data lD三者關系


免責聲明!

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



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