当前位置:网站首页>Nacos - 配置管理
Nacos - 配置管理
2022-07-01 08:40:00 【SXHENIGA】
筆記翻譯出處:黑馬Nacos
https://www.bilibili.com/video/BV1VJ411X7xX?p=17&spm_id_from=333.880.my_history.page.click&vd_source=3c0d9a4d48df5bf76352d1653111b1d7
一、配置中心
1、簡述
配置中心一般用於微服務中,當單一系統被拆分成分布式系統上的一個個服務節點之後,系統的配置文件也需要被拆分。配置中心就是將配置文件從系統中分離出來,對系統配置進行統一的管理,並且系統配置遠程被修改後,應用還可以主動獲取修改後的配置內容,應用自身不需要自己去管理系統配置。
簡單來說,就是把Springboot的yml等配置文件放在遠程管理,由Springboot主動獲取。
2、特性
1)配置特點
配置特點 | 描述 | |
1 | 配置是獨立於程序的只讀變量 | 讀取配置來改變自己的行為 |
2 | 配置伴隨應用的整個生命周期 | 配置貫穿應用整個生命周期 |
3 | 配置可以有多種加載方式 | 可通過配置文件、環境變量、啟動參數、數據庫等方式加載 |
4 | 配置需要治理 | 區分開發、測試、生產;區分不同的集群 |
2)配置中心特性
配置中心特性 | |
1 | 配置項容易讀取和修改 |
2 | 分布式環境下應用配置的可管理性,即提供遠程管理配置的能力 |
3 | 致辭對配置的修改的檢視以把控風險 |
4 | 可以查看配置修改的曆史記錄 |
5 | 不同部署環境下應用配置的隔離性 |
二、Nacos
1、Nacos簡介
Nacos致力於幫助您發現、配置和管理微服務。它是阿裏的一個開源產品,是針對微服務架構中的服務發現,配置管理,服務治理的綜合型解决方案,能幫助更加敏捷和容易地構建、交付和管理微服務平臺。
2、Nacos特性
Nacos特性 | 描述 | |
1 | 服務發現與服務健康檢查 | 更容易注册,通過DNS或HTTP接口發現服務;實時對服務進行健康檢查 |
2 | 動態配置管理 | 消除了在更新配置時重新部署應用程序,這使配置的更新更加高效和靈活 |
3 | 動態DNS服務 | 提供基於DNS協議的服務發現能力,旨在支持异構語言的服務發現 |
4 | 服務和元數據管理 | 可以從微服務平臺視角,管理數據中心的所有服務及元數據 |
3、配置中心對比
對比項目 | Spring Cloud Config | Apollo | Nacos |
配送實時推送 | 支持(Spring Cloud Bus) | 支持(HTTP長輪詢1S內) | 支持(HTTP長輪詢1S內) |
版本管理 | 支持(Git) | 支持 | 支持 |
配置回滾 | 支持(Git) | 支持 | 支持 |
灰度發布 | 支持 | 支持 | 不支持 |
權限管理 | 支持(依賴Git) | 支持 | 不支持 |
多集群 | 支持 | 支持 | 支持 |
多環境 | 支持 | 支持 | 支持 |
監聽查詢 | 支持 | 支持 | 支持 |
多語言 | 支持Java | 主流語言,Open API | 主流語言,Open API |
配置格式校驗 | 不支持 | 支持 | 支持 |
單機讀(QPS) | 7(限流所致) | 9000 | 15000 |
單機寫(QPS) | 5(限流所致) | 1100 | 1800 |
3節點讀(QPS) | 21(限流所致) | 27000 | 45000 |
3節點寫(QPS) | 5(限流所致) | 3300 | 5600 |
三、Nacos快速入門
1、安裝包
nacos-server-1.1.4https://www.aliyundrive.com/s/2cUubQYMSX9
2、啟動服務器
![]() |
3、界面訪問
本地地址 | http://127.0.0.1:8848/nacos/index.html |
賬號密碼 | 賬號:nacos 密碼:nacos |
![]() |
4、OPEN API 配置管理測試
1)用ApiPost或者Postman發布配置請求
127.0.0.1:8848/nacos/v1/cs/configs?dataId=nacos.cfg.dataId&group=test&content=HelloWorld |
![]() |
2)界面查看配置
![]() |
5、Nacos連接外部Mysql存儲
單機模式下,Nacos默認使用嵌入式數據庫實現數據的存儲,若想使用外部Mysql存儲Nacos數據,需要進行以下步驟:
1)安裝數據庫
MySQL:5.6.5+,MySQL 8 以下
2)初始化數據庫
初始化MySQL數據庫名,將nacos-mysql.sql導入
3)修改配置文件application.properties
spring.datasource.platform=mysql |
四、Nacos配置入門
1、發布配置[界面操作]
2、Nacos客戶端獲取配置[入門]
1)新建Maven項目
2)pom文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.dgs</groupId>
<artifactId>Nacos01</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-client</artifactId>
<version>1.1.3</version>
</dependency>
</dependencies>
</project>
五、Nacos配置管理模型
對於Nacos配置管理,通過Namespace、group、Data ID 能够定比特到一個配置集
配置集(Data ID)
在系統中,一個配置文件通常就是一個配置集,一個配置集可以包含了系統的各種配置信息,例如,一個配置集可能包含了數據源、線程池、日志級別等配置項。每個配置集都可以定義一個意義的名稱,就是配置集的ID,即Data ID。
配置項(配置內容)
配置集中包含的一個個配置內容就是配置項。它代錶一個具體的可配置的參數與其值域,通常以key=value的形式存在。例如我們常配置系統的日志輸出級別(logLevel=INFO|WARN|ERROR)就是一個配置項。
配置分組(Group)
配置分組是對配置集進行分組,通過一個有意義的字符串(如Buy或Trade)來錶示,不同的配置分組下可以有相同的配置集(Data ID)。當您再Nacos上創建一個配置時,如果未填寫配置分組的名稱,則配置分組的名稱默認采用DEFAULT_GROUP。配置分組的常見場景:可用於區分不同的項目或應用。
命名空間(Namespace)
命名空間(namespace)可用於進行不同環境的配置隔離。例如可以隔離開發環境、測試環境和生產環境,因為他們的配置可能各不相同,或者是隔離不同的用戶,不同的開發人員使用同一個Nacos管理各自的配置,可通過喲namespace隔離,不同的命名空間下,可以存在相同名稱的配置分組(Group)或配置集。
六、Nacos配置管理應用於分布式系統
1、微服務架構
將應用分解為小的、相互連接的微服務,避免了開發一個巨大的單體式的應用,而是將應用分解為小的、互相連接的微服務。
一個微服務一般完成某個特定的功能,比如訂單服務、用戶服務等等。每一個微服務都是完整應用,都有自己的業務邏輯和服務
2、分布式應用配置管理
- 用戶通過Nacos Server的控制臺集中對多個服務的配置進行管理。
- 各服務統一從Nacos Server中獲取各自的配置,並監聽配置的變化。
3、Nacos整合Springboot
1)新增命名空間dev
2)在dev命名空間發布兩個配置
① Nacos1.yaml
②Nacos2.yaml
3)創建Maven父工程
4)Maven版本配置
5)Maven父工程添加pom依賴
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.dgs</groupId>
<artifactId>NacosTest</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<!-- 後面加入子工程,pom依賴中就會有這個
<modules>
<module>Nacos1</module>
<module>Nacos2</module>
</modules>-->
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<project.build.sourceEncoding>UTF‐8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF‐8</project.reporting.outputEncoding>
</properties>
<dependencyManagement>
<dependencies>
<!-- spring cloud alibaba 2.1.0.RELEASE-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.1.0.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Greenwich.SR3</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.1.3.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
6)新建子工程Nacos1
7)子工程Nacos1添加pom依賴
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>NacosTest</artifactId>
<groupId>com.dgs</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>Nacos1</artifactId>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
</project>
8)Nacos1子工程,新增配置文件
9)Nacos1子工程,添加Springboot啟動類
10)Nacos1子工程,添加Controller,獲取遠程Nacos配置文件內容
11)啟動測試
12)新增子工程Nacos2,同Nacos1
13)新增子工程Nacos2的配置文件
14)新增子工程Nacos2啟動類
15)Nacos2子工程,添加Controller,獲取遠程Nacos配置文件內容
16)啟動測試
4、自定義擴展的 Data Id 配置
Spring Cloud Alibaba Nacos Config 可支持自定義的Data Id 的配置。
通過自定義擴展的 Data Id 配置,既可以解决多個應用間配置共享的問題,又可以支持一個應用有多個配置文件。
spring: application: name: service2 cloud: nacos: config: server‐addr: 127.0.0.1:8848 # config external configuration # 1、Data Id 在默認的組 DEFAULT_GROUP,不支持配置的動態刷新 ext‐config[0]: data‐id: ext‐config‐common01.properties # 2、Data Id 不在默認的組,不支持動態刷新 ext‐config[1]: data‐id: ext‐config‐common02.properties group: GLOBALE_GROUP # 3、Data Id 既不在默認的組,也支持動態刷新 ext‐config[2]: data‐id: ext‐config‐common03.properties group: REFRESH_GROUP refresh: true |
- 通過spring.cloud.nacos.config.ext-config[n].data-id 的配置方式來支持多個Data Id的配置
- 通過spring.cloud.nacos.config.ext-config[n].group 的配置方式自定義Daya Id 所在的租,默認DEFAULT_GROUP
- 通過spring.cloud.nacos.config.ext-config[n].refresh的配置方式來控制該Data Id 在配置變更時,是否支持應用中科動態刷新,感知到最新的配置值。默認是不支持
5、自定義共享 Data Id 配置
spring: cloud: nacos: config: shared‐dataids: ext‐config‐common01.properties,ext‐config‐common02.properties refreshable‐dataids: ext‐config‐common01.properties |
- 通過spring.cloud.nacos.config.shared-dataids 來支持多個共享Data Id的配置,多個之前用逗號隔開。
- 通過spring.cloud.nacos.config.refreshable-dataids 來支持哪些共享配置的Data Id 在配置變化時,應用中是否可動態刷新,感知到最新的配置值,多個Data ID 之間用逗號隔開。如果沒明確配置,默認都不支持動態刷新
- 它把group固定為DEFAULT_GROUP
6、配置優先級
A、通過內部相關規則(應用名、擴展名) 自動生成相關的Data Id配置
B、多個擴展Data Id
C、多個共享Data Id
A>B>C
边栏推荐
- FreeRTOS学习简易笔记
- 如何招到适合自己店铺的淘宝主播
- Pipeline detection of UAV Based on gazebo
- Do you know how data is stored? (C integer and floating point)
- Brief introduction to AES
- 动态代理
- Field agricultural irrigation system
- 电脑小技巧
- Li Kou 1358 -- number of substrings containing all three characters (double pointer)
- 2022 mechanical fitter (primary) examination summary and mechanical fitter (primary) reexamination examination
猜你喜欢
FreeRTOS学习简易笔记
SPL-介绍(一)
【C】 Summary of wrong questions in winter vacation
5mo3 UHI HII HII 17mn4 19Mn6 executive standard
MD文档中插入数学公式,Typora中插入数学公式
Redis publish subscription
What is 1cr0.5mo (H) material? 1cr0.5mo (H) tensile yield strength
The era of low threshold programmers is gone forever behind the sharp increase in the number of school recruitment for Internet companies
What is the material of 15CrMoR, mechanical properties and chemical analysis of 15CrMoR
Intelligent constant pressure irrigation system
随机推荐
Intelligent water and fertilizer integrated control system
leetcode T31:下一排列
Yolov3, 4, 5 and 6 Summary of target detection
IT 技术电子书 收藏
win7 pyinstaller打包exe 后报错 DLL load failed while importing _socket:参数错误
如何招到适合自己店铺的淘宝主播
个人装修笔记
[detailed explanation of Huawei machine test] judgment string subsequence [2022 Q1 Q2 | 200 points]
Leetcode t29: divide two numbers
2022.2.15
What is the material of 16mo3 steel plate? What is the difference between 16mo3 and Q345R?
Leetcode t34: find the first and last positions of elements in a sorted array
19Mn6 German standard pressure vessel steel plate 19Mn6 Wugang fixed binding 19Mn6 chemical composition
【C】 Summary of wrong questions in winter vacation
基础:2.图像的本质
yolov5训练可视化指标的含义
Pipeline detection of UAV Based on gazebo
机动目标跟踪——当前统计模型(CS模型)扩展卡尔曼滤波/无迹卡尔曼滤波 matlab实现
Huawei machine test questions column subscription Guide
Public network cluster intercom +gps visual tracking | help the logistics industry with intelligent management and scheduling