SpringCloud Alibaba —— Nacos 分類配置

前文

SpringCloud 簡介

SpringCloud 版本選型

SpringCloud 工程構建

SpringCloud —— Eureka 註冊中心

SpringCloud —— Eureka 集羣

SpringCloud —— 服務註冊進 Eureka 集羣

SpringCloud —— Eureka 自我保護

SpringCloud —— SpringCloud Consul 實現服務註冊中心

SpringCloud —— 三個註冊中心的異同點

SpringCloud —— Ribbon

SpringCloud —— Ribbon 負載均衡算法

SpringCloud —— OpenFeign

SpringCloud —— Hystrix 簡介

SpringCloud —— Hystrix 斷路器

SpringCloud —— HystrixDashboard 服務監控

SpringCloud —— Gateway 網關

SpringCloud —— Config 配置中心

SpringCloud —— Sleuth 分佈式請求鏈路跟蹤

SpringCloud Alibaba —— Nacos 服務註冊

SpringCloud Alibaba —— Nacos 配置中心

多環境多項目管理問題

問題一:

  • 實際開發中,通常一個系統會準備
  • dev 開發環境
  • test 測試環境
  • prod 生產環境
  • 如何保證指定環境啓動時服務能正確讀取到 Nacos 上相應環境的配置文件呢?

問題二:

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

Nacos 的圖形化管理界面

配置管理

在這裏插入圖片描述

命名空間

在這裏插入圖片描述

Namespace + Group + Data ID 三者關係

Namespace + Group + Data ID 是什麼?

類似 Java 裏面的 package 名和類名

最外層的 namespace 是可以用於區分部署環境的,Group 和 DataID 邏輯上區分兩個目標對象

三者關係

在這裏插入圖片描述
默認情況:

Namespace = public,Group = DEFAULT_GROUP,默認 Cluster 是 DEFAULT

爲什麼這樣設計?

Nacos 默認的命名空間是 public,Namespace 主要用來實現隔離

比方說我們現在有三個環境:開發、測試、生產環境,我們就可以創建三個 Namespace,不同的 Namespace 之間是隔離的

Group 默認是 DEFAULT_GROUP,Group 可以把不同的微服務劃分到同一個分組裏面去

Service 就是微服務;一個 Service 可以包含多個 Cluster(集羣),Nacos 默認 Cluster 是 DEFAULT,Cluster 是對指定微服務的一個虛擬劃分。比方說爲了容災,將 Service 微服務分別部署在了杭州機房和廣州機房

這時就可以給杭州機房的 Service 微服務起一個集羣名稱(HZ),給廣州機房的 Service 微服務起一個集羣名稱(GZ),還可以儘量讓同一個機房的微服務互相調用,以提升性能

最後是 Instance,就是微服務的實例

三種方案加載配置

DataID 方案

指定 spring.profile.active 和配置文件的 DataID 來使不同環境下讀取不同的配置

默認空間 + 默認分組 + 新建 dev 和 test 兩個 DataID

在該界面點擊 + 號,添加新的配置
在這裏插入圖片描述
編寫配置,點擊發布
在這裏插入圖片描述
現在該界面的 DEFAULT_GROUP 已經有兩個配置文件,這裏 dev 表示開發環境,test 表示測試環境
在這裏插入圖片描述

通過 spring.profile.active 屬性就能進行多環境下配置文件的讀取

這裏的 active 配置的是什麼就加載什麼
在這裏插入圖片描述

測試

啓動主啓動類 ,訪問 http://localhost:3377/config/info
在這裏插入圖片描述

Group 方案

通過 Group 實現環境區分

在這裏插入圖片描述

在 Nacos 圖形界面控制檯上面新建配置文件 DataID

新建兩個配置,然後放到不同的 GROUP 裏面去
在這裏插入圖片描述
在這裏插入圖片描述

同名的文件放到不同的 GROUP 裏面
在這裏插入圖片描述

bootstrap + application

在 config 下增加一條 group 的配置即可,可配置爲 DEV_GROUP 或 TEST_GROUP

在這裏插入圖片描述

訪問 http://localhost:3377/config/info
在這裏插入圖片描述
將 group 改爲 DEV_GROUP
在這裏插入圖片描述
訪問 http://localhost:3377/config/info 也是 OK 的
在這裏插入圖片描述

Namspace 方案

新建 dev / test 的 Namespace

點擊命名空間選項,然後點擊新建命名空間按鈕
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
再新建一個
在這裏插入圖片描述
可以發現,dev 和 test 都是可以刪除的,但是 public 是不可以刪除的

回到服務管理-服務列表查看

現在有命名空間 public、dev、test
在這裏插入圖片描述
這是命名空間 dev
在這裏插入圖片描述
這是命名空間 test
在這裏插入圖片描述

按照域名配置填寫

在 dev 下新建配置
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
現在 dev 下有三個配置文件
在這裏插入圖片描述

YML

那麼如何去訪問這些配置文件呢?很簡單,拷貝這個 dev 的 id

在這裏插入圖片描述
將 id 放到 bootstrap.yml 文件裏面(注意 group,這裏只會訪問 gorup 爲 DEV_GROUP 組的配置文件),如下:
在這裏插入圖片描述
啓動服務,訪問 http://localhost:3377/config/info 也是 OK 的
在這裏插入圖片描述
如果想訪問 dev 組裏面不同的配置文件,只需要修改 bootstrap.yml 文件裏面的 group 即可


完整代碼已上傳至碼雲 完整代碼地址,感興趣的朋友可以下載運行下

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章