当前位置:网站首页>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
边栏推荐
- 【C】 Summary of wrong questions in winter vacation
- Intelligent water and fertilizer integrated control system
- 中断与其他函数共享变量、临界资源的保护
- Luogu p1088 [noip2004 popularization group] Martians
- 2022 ordinary scaffolder (special type of construction work) examination question bank and the latest analysis of ordinary scaffolder (special type of construction work)
- [Yu Yue education] Shandong Vocational College talking about railway reference materials
- Configuration and startup of Chang'an chain synchronization node
- Centos7 shell script one click installation of JDK, Mongo, Kafka, FTP, PostgreSQL, PostGIS, pgrouting
- C语言指针的进阶(上篇)
- 3、Modbus通讯协议详解
猜你喜欢
随机推荐
I would like to know the process of stock registration and account opening by mobile phone? In addition, is it safe to open a mobile account?
为什么LTD独立站就是Web3.0网站!
Introduction to R language
2022 Chinese cook (technician) simulation test and Chinese cook (technician) practice test video
动态代理
一文纵览主流 NFT 市场平台版税、服务费设计
The use of word in graduation thesis
电视机尺寸与观看距离
Advanced C language pointer (Part 2)
【面试必刷101】链表
FreeRTOS学习简易笔记
Foundation: 3 Opencv getting started images and videos
Guidelines and principles of did
R语言入门
[Yu Yue education] Shandong Vocational College talking about railway reference materials
factory type_ Id:: create process resolution
Leetcode t29: divide two numbers
Li Kou 1358 -- number of substrings containing all three characters (double pointer)
Leetcode t34: find the first and last positions of elements in a sorted array
《微机原理》-绪论