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


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添加如下的配置

具體含義下面會做介紹


二、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、測試

成功獲取Nacos配置的數據


三、Nacos配置管理的模型

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

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就是一個配置集)

3、頁面理解

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 的配置

我們前面說了,通過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)


免責聲明!

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



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