当前位置:网站首页>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.4
https://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
边栏推荐
- Redis publish subscription
- MATLAB小技巧(16)矩阵特征向量特征值求解一致性验证--层次分析
- Field agricultural irrigation system
- 《微机原理》-绪论
- 19Mn6 German standard pressure vessel steel plate 19Mn6 Wugang fixed binding 19Mn6 chemical composition
- factory type_ Id:: create process resolution
- Only in China! Alicloud container service enters the Forrester leader quadrant
- Principle and application of single chip microcomputer - principle of parallel IO port
- 嵌入式工程师面试题3-硬件
- Insert mathematical formula in MD document and mathematical formula in typora
猜你喜欢

动态代理

你了解数据是如何存储的吗?(C整型和浮点型两类)

19Mn6 German standard pressure vessel steel plate 19Mn6 Wugang fixed binding 19Mn6 chemical composition

R语言入门

基础:2.图像的本质

shardingSphere

What is the material of 15CrMoR, mechanical properties and chemical analysis of 15CrMoR

【MFC开发(16)】树形控件Tree Control

Glitch Free时钟切换技术

Memory size end
随机推荐
Introduction to 18mnmo4-5 steel plate executive standard and delivery status of 18mnmo4-5 steel plate, European standard steel plate 18mnmo4-5 fixed rolling
Share 7 books I read in the first half of 2022
FreeRTOS学习简易笔记
Foundation: 2 The essence of image
分享2022上半年我读过的7本书
《微机原理》——微处理器内部及外部结构
Luogu p1088 [noip2004 popularization group] Martians
Leetcode t40: combined sum II
Advanced API
Matlab [function derivation]
NIO-零拷贝
factory type_id::create过程解析
电视机尺寸与观看距离
Nacos - 配置管理
There are many problems in sewage treatment, and the automatic control system of pump station is solved in this way
用C语言编程:用公式计算:e≈1+1/1!+1/2! …+1/n!,精度为10-6
Matlab tips (23) matrix analysis -- simulated annealing
Memory size end
内存大小端
基础:3.opencv快速入门图像和视频






