1.配置中心介紹
1.1 springcloud config
Spring Cloud Config 為分布式系統的外部配置提供了服務端和客戶端的支持方案。在配置的服務端您可以在所有環境中為應用程序管理外部屬性的中心位置。客戶端和服務端概念上的Spring Environment 和 PropertySource 抽象保持同步, 它們非常適合Spring應用程序,但是可以與任何語言中運行的應用程序一起使用。當應用程序在部署管道中從一個開發到測試直至進入生產時,您可以管理這些環境之間的配置,並確保應用程序在遷移時具有它們需要運行的所有內容。服務器存儲后端的默認實現使用git,因此它很容易支持標記版本的配置環境,並且能夠被管理內容的各種工具訪問。很容易添加替代的實現,並用Spring配置將它們插入。
Spring Cloud Config 包含了Client和Server兩個部分,server提供配置文件的存儲、以接口的形式將配置文件的內容提供出去,client通過接口獲取數據、並依據此數據初始化自己的應用。Spring cloud使用git或svn存放配置文件,默認情況下使用git。
1.2 nacos替換config
Nacos 可以與 Spring, Spring Boot, Spring Cloud 集成,並能代替 Spring Cloud Eureka, Spring Cloud Config。通過 Nacos Server 和 spring-cloud-starter-alibaba-nacos-config 實現配置的動態變更。
1.3 應用場景
在系統開發過程中,開發者通常會將一些需要變更的參數、變量等從代碼中分離出來獨立管理,以獨立的配置文件的形式存在。目的是讓靜態的系統工件或者交付物(如 WAR,JAR 包等)更好地和實際的物理運行環境進行適配。配置管理一般包含在系統部署的過程中,由系統管理員或者運維人員完成。配置變更是調整系統運行時的行為的有效手段。
如果微服務架構中沒有使用統一配置中心時,所存在的問題:
- 配置文件分散在各個項目里,不方便維護
- 配置內容安全與權限
- 更新配置后,項目需要重啟
nacos配置中心:系統配置的集中管理(編輯、存儲、分發)、動態更新不重啟、回滾配置(變更管理、歷史版本管理、變更審計)等所有與配置相關的活動。
2.nacos配置文件的使用
2.1 創建配置文件
啟動nacos,登錄進入首頁面,點擊配置列表選擇加號進行創建配置文件。
填寫data id 和配置內容,點擊發布就可以了
注意:Data ID 的完整規則格式如下
${prefix}-${spring.profile.active}.${file-extension}
- prefix 默認為所屬工程配置spring.application.name 的值(即:nacos-provider),也可以通過配置項 spring.cloud.nacos.config.prefix來配置。
- spring.profiles.active=dev 即為當前環境對應的 profile。 注意:當 spring.profiles.active 為空時,對應的連接符 - 也將不存在,dataId 的拼接格式變成 ${prefix}.${file-extension}
- file-exetension 為配置內容的數據格式,可以通過配置項 spring.cloud.nacos.config.file-extension 來配置。目前只支持 properties 和 yaml 類型。
2.2 項目使用nacos配置文件
(1)安裝依賴
<!--配置中心--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency>
(2)創建bootstrap.properties配置文件
#配置中心地址 spring.cloud.nacos.config.server-addr=127.0.0.1:8848 #spring.profiles.active=dev # 該配置影響統一配置中心中的dataId spring.application.name=service-statistics
2.3 springboot配置文件加載順序
其實yml和properties文件是一樣的原理,且一個項目上要么yml或者properties,二選一的存在。推薦使用yml,更簡潔。
bootstrap與application
(1)加載順序
這里主要是說明application和bootstrap的加載順序。
bootstrap.yml(bootstrap.properties)先加載
application.yml(application.properties)后加載
bootstrap.yml 用於應用程序上下文的引導階段。
bootstrap.yml 由父Spring ApplicationContext加載。
父ApplicationContext 被加載到使用 application.yml 的之前。
(2)配置區別
bootstrap.yml 和application.yml 都可以用來配置參數。
bootstrap.yml 可以理解成系統級別的一些參數配置,這些參數一般是不會變動的。
application.yml 可以用來定義應用級別的。
3.多配置文件加載
3.1 nacos配置
新建port 配置文件用於指定端口號
指定端口
3.2 bootstrap.yml配置