config配置中心介紹
spring cloud config是用來為分布式系統中的基礎設施和微服務應用提供集中化的外部配置支持,他為分服務端和客戶端。什麼意思呢?簡單點來說,再分布式架構中,通常會有很多的微服務,這時候就會產生很多的配置文件,springcloud config就是來集中管理這些配置文件,為什麼需要集中管理呢?放到各自服務的資源目錄下不香嗎?1、分布式架構配置文件多;2、在開發過程中我們通常會經歷3-4個伺服器環境,比如開發環境-----測試環境------預發布環境-------生產環境,作為開發人員,他們是不知道測試伺服器和生產服務資料庫連結信息的,如果採用將配置文件放到當前項目下,那麼每次發布版本的時候還要再項目中改來改去,很不友好,還有很重要的一點,那就是config配置中心支持修改配置無需重啟的功能,要想使用這個功能,還得引入spring cloud的另外一個組件:bus,這裡不做討論。
好了,廢話不多說,開始spring cloud config的項目搭建吧
1.需要有一個註冊中心,參考:
2.新建一個cloud-config的項目:
3.引入springcloud 與spring cloud config的依賴:
<properties> <java.version>1.8</java.version> <spring-cloud.version>Hoxton.RC2</spring-cloud.version> </properties> <dependencies> <!--配置中心config依賴--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-config-server</artifactId> </dependency> <!--eureka客戶端--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> <exclusions> <exclusion> <groupId>org.junit.vintage</groupId> <artifactId>junit-vintage-engine</artifactId> </exclusion> </exclusions> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud.version}</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> <repositories> <repository> <id>spring-milestones</id> <name>Spring Milestones</name> <url>https://repo.spring.io/milestone</url> </repository> </repositories>
4.編寫配置文件bootstrap.yml
server: port: 9100 註冊中心地址spring: application: name: cloud-config active: native 拉取git配置 native: 本地拉起 git: uri: https://github.com/361426201/cloud-config.git username: xxxx 指定拉取git的那個分支 uri: xxxxxxxxxxxxx username: xxx password: xxx default-label: trunk search-paths: {application} could的配置信息一定要寫到bootstrap.yml中 如果希通過在配置中心找服務名的方式招待配置中心,那麼這個屬性就要設置成 true 默認false service-id: cloud-config 將這個設置成true 表示連接配置中心失敗,讓程序啟動失敗
打開cloud-order:請看:springcloud(一)註冊中心eureka。
<!--連接配置中心所需要的依賴--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-config</artifactId> </dependency>
server: port: 8900 client: service-url: defaultZone: http://localhost:8761/eureka/ register-with-eureka: true 是否可以被檢索spring: application: name: cloud-order 因為cloud框架會優先讀取bootstrap.yml配置文件,如果發現這裡面沒有這些配置,那麼是無法將當前服務註冊到註冊中心的,這點需要特別注意,服務名也要寫到ootstrap.yml文件中哦 cloud: config: discovery: enabled: true 配置中心的服務名 fail-fast: true 2.0之後,默認的監控端點地址加了上下文路徑 actuator。可通過 management.endpoints.web.base-path屬性進行修改,默認是: actuator 配置刷新management: endpoints: web: exposure: include: &39;
4.由於我使用的是git,所以我在github上面準備了一份配置文件
這裡需要注意一點,在spring cloud config中配置文件的名字是有規則的,要與你的服務名一致,如果不一致,會找不到配置問及那,如果不想一致,也是可以的,可以在cloud-user的配置文件中做修改即可,默認情況一定要一致哦。
啟動eureka、config、cloud-user、cloud-order
為了方便測試,我在cloud-user中寫了一個controller類做測試:
對應git上面的配置文件:
cloud-user:
對應git配置文件:
瀏覽器訪問:http://localhost:8800/test:
瀏覽器輸入:http://localhost:8900/test:
看到如下結果,表示已經從git中獲取到了配置文件信息,好了,spring cloud config的配置就將到了這裡,這僅僅是一個入門案例,這裡面還可以為客戶端加密解密等功能,感興趣的小夥伴可以自己嘗試。