Spring Cloud Alibaba(5)---Nacos(配置中心)

雨點的名字發表於2021-04-25

Nacos(配置中心)

有關Spring Cloud Alibaba之前寫過四篇文章,這篇也是在上面專案的基礎上進行開發。

Spring Cloud Alibaba(1)---入門篇

Spring Cloud Alibaba(2)---RestTemplate微服務專案

Spring Cloud Alibaba(3)---Nacos概述

Spring Cloud Alibaba(4)---Nacos(註冊中心)

另外有關配置中心,之前也詳細寫過Apollo配置中心,所以一些有關配置中心的理論知識,這裡就不在陳述,具體看下面文章

Apollo(1)--- Apollo入門介紹篇

Apollo(2)--- Apollo架構設計

Apollo(3)--- SpringBoot整合Apollo

前言

有關Nacos客戶端的搭建和Nacos的介紹在 Spring Cloud Alibaba(2)---Nacos概述 都有講到,所以這裡不在陳述。這裡在上篇部落格專案基礎上(Spring Cloud Alibaba(4)---Nacos(註冊中心)),來實現配置中心的功能。


一、Nacos 服務端初始化

1、啟動Nacos客戶端

有關Nacos搭建我這裡不在陳述,上面部落格有寫,或者直接看官網如何搭建:Nacos 官網

sh startup.sh -m standalone

2、新增配置

啟動好Nacos之後,在Nacos新增如下的配置

Spring Cloud Alibaba(5)---Nacos(配置中心)

具體含義下面會做介紹


二、springBoot整合Nacos(配置中心)

說明 這裡貼出的程式碼是在上篇部落格 Spring Cloud Alibaba(4)---Nacos(註冊中心) 中專案的基礎上新增。

1、pom.xml

  <!--新增nacos配置中心-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>

2、Controller層

@RestController
@RequestMapping("api/v1/config")
public class ConfigTestController {

    /**
     * nacos獲取配置
     */
    @Value("${user.name}")
    private String name;

    @RequestMapping("test-config")
    public Object findByGoodsId() {
        return name;
    }

}

3、bootstrap.yml

spring:
  application:
    name: mall-goods

  cloud:
    nacos:
      config:
        server-addr: 127.0.0.1:8848 #Nacos配置中心地址
        file-extension: yaml #檔案擴充格式

  profiles:
    active: dev

4、測試

Spring Cloud Alibaba(5)---Nacos(配置中心)

成功獲取Nacos配置的資料


三、Nacos配置管理的模型

對於Nacos配置管理, 通過Namespace, Group, DataId能夠定位到一個配置集

Spring Cloud Alibaba(5)---Nacos(配置中心)

1、配置管理模型概念

1)Namespace(名稱空間)

名稱空間(namespace)可用於對不同的環境進行配置隔離. 例如: 可以隔離開發環境, 測試環境, 生成環境. 因為他們的配置可能各不相同. 或者是隔離不同的使用者, 不同的開發人員使

用同一個Nacos管理各自的配置, 可通過namespace進行隔離。不同的名稱空間下, 可以存在相同名稱的配置分組(Group)或配置項(Data Id)

預設值:public

2)Group(配置分組)

配置分組就是上圖中的Group. 配置分組是對配置集進行分組. 通過一個有意義的字串(如: buy, trade)來表示. 不同的配置分組下可以有相同的配置集(Data ID)

預設值:DEFAULT_GROUP

3)DataId(配置集)

在系統中, 通常一個配置檔案, 就是一個配置集。一個配置集可以包含系統的各種配置資訊. 例如:一個配置集可能包含系統的資料來源、連線池, 日誌等級的配置資訊。每個配置集

都可以定義一個有意義的名稱, 就是配置集的Id, 即Data Id

4)配置項

配置集中包含的一個個配置內容, 就是配置項。 他代表具體的可配置的引數. 通常以key=value的形式存在.

2、通俗理解

這裡通俗去理解這幾個概念含義

 Namespace: 代表不同的環境, 如: 開發、測試, 生產等
 Group: 可以代表某個專案, 如XX就業專案, XX電商專案
 DataId: 每個專案下往往有若干個工程, 每個配置集(DataId)是一個工程的主配置檔案(比如這裡的mall-goods.yaml就是一個配置集)
Spring Cloud Alibaba(5)---Nacos(配置中心)

3、頁面理解

Spring Cloud Alibaba(5)---Nacos(配置中心)
1)代表 Namespace(名稱空間),預設就建立好public,這裡建立好了一個dev
2)代表 Group(配置分組),這裡預設分組 DEFAULT_GROUP
3)代表 DataId(配置集),這裡有個配置mall-goods.yaml,配置集裡有配置項user.name: "我是張三的好朋友李四"

四、補充

1、為什麼要用bootstrap.yaml

為什麼用bootstrap.yaml而不用application.xml官方有說明

必須使用 bootstrap.properties 配置檔案來配置Nacos Server 地址

雖然 bootstrap.yamlapplication.xml 都屬於配置檔案,功能也一樣。但技術上,bootstrap.yml由父Spring ApplicationContext載入。父ApplicationContext會在

application.yml之前被載入。當使用 Spring Cloud 的時候,配置資訊一般是從 config server 載入的,為了取得配置資訊(比如密碼等),你需要一些提早的或引導配置。

因此,把 config server資訊放在 bootstrap.yml,用來載入真正需要的配置資訊。

說明 bootstrap.properties 和 bootstrap.yaml到沒有什麼區別,只是格式上有點不一樣。

2、DataId(配置集)和微服務對於關係

我們在Nacos配置的配置集叫: mall-goods.yaml,它是如何和我們專案匹配上的呢?

我們再來看下我們的 bootstrap.yml 的配置

Spring Cloud Alibaba(5)---Nacos(配置中心)

我們前面說了,通過namespace, group, dataId能夠定位到一個配置集。從這個配置中我們沒有去指明具體namespace,那就代表採用預設的 public。沒有制定group,

代表採用預設DEFAULT_GROUP。那麼配置集就為

${spring.application.name}.${file-extension:properties} #這裡就相當於 mall-goods.yaml
${spring.application.name}-${profile}.${file-extension:properties} # 這裡就相當於 mall-goods-dev.yaml 

如果同時配置的話,mall-goods-dev.yaml會覆蓋mall-goods.yaml中的配置

3、補充

其實我這裡還有很多細節沒講,比如怎麼指定分組,指定名稱空間和一些其它規則,具體可以看官網說明,講的還挺清楚的。

官方講解:Spring Cloud Alibaba Nacos Config

還有一些Nacos叢集搭建、Naocos將資料儲存到mysql資料庫的知識,這裡也不說了。自己可以網上查查。

GitHub地址:spring-cloud-alibaba-study



少說多做,句句都會得到別人的重視;多說少做,句句都會受到別人的忽視。(5)

相關文章