config配置中心介紹
spring cloud config是用來爲分佈式系統中的基礎設施和微服務應用提供集中化的外部配置支持,他爲分服務端和客戶端。什麼意思呢?簡單點來說,再分佈式架構中,通常會有很多的微服務,這時候就會產生很多的配置文件,springcloud config就是來集中管理這些配置文件,爲什麼需要集中管理呢?放到各自服務的資源目錄下不香嗎?1、分佈式架構配置文件多;2、在開發過程中我們通常會經歷3-4個服務器環境,比如開發環境-----測試環境------預發佈環境-------生產環境,作爲開發人員,他們是不知道測試服務器和生產服務數據庫鏈接信息的,如果採用將配置文件放到當前項目下,那麼每次發佈版本的時候還要再項目中改來改去,很不友好,還有很重要的一點,那就是config配置中心支持修改配置無需重啓的功能,要想使用這個功能,還得引入spring cloud的另外一個組件:bus,這裏不做討論。
好了,廢話不多說,開始spring cloud config的項目搭建吧
1.需要有一個註冊中心,參考:https://blog.csdn.net/qq_33220089/article/details/103150642
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 #端口
eureka:
client:
service-url:
defaultZone: http://localhost:8761/eureka/ #註冊中心地址
spring:
application:
name: cloud-config #服務名
profiles:
# active: native #拉取本地配置
active: git #拉取git配置
# active: subversion
cloud:
config:
server:
# native:
# search-locations: file:F:\git\springcloud\config #本地拉起
git:
uri: https://github.com/361426201/cloud-config.git #git地址 需要注意一點,我拉取的是公共倉庫,不需要用戶名和密碼,如果你拉取的是私有倉庫,需要加上用戶名密碼
# username: xxxx
# password: xxxx
label: master #指定拉取git的那個分支
# svn:
# uri: xxxxxxxxxxxxx #svn的地址
# username: xxx #用戶名
# password: xxx #密碼
# default-label: trunk #類似git中的分支
# search-paths: {application} #可有可無
上面有三種管理配置文件的方式:本地、git、svn,按需放開對應的配置。
5.修改啓動類:
package com.ymy;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.config.server.EnableConfigServer;
@SpringBootApplication //springboot啓動註解 相當於springboot1.5之前的:@SpringBootConfiguration + EnableAutoConfiguration + @ComponentScan
@EnableDiscoveryClient // 將服務註冊到註冊中心
@EnableConfigServer //開啓配置中心
public class CloudConfigApplication {
public static void main(String[] args) {
SpringApplication.run(CloudConfigApplication.class, args);
}
}
這樣,配置中心就配置完成了,那微服務如何使用這個配置中心呢?
1.打開cloud-user,在eureka的使用中已經創建了,請看:springcloud(一)註冊中心eureka。
2.引入spring cloud config客戶端所需要的依賴:
<!--連接配置中心所需要的依賴-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
3.修改bootstrap.yml:
server:
port: 8800
eureka:
client:
service-url:
defaultZone: http://localhost:8761/eureka/
spring:
application:
name: cloud-user
# could的配置信息一定要寫到bootstrap.yml中
# 因爲cloud框架會優先讀取bootstrap.yml配置文件,如果發現這裏面沒有這些配置,那麼是無法將當前服務註冊到註冊中心的,這點需要特別注意,服務名也要寫到ootstrap.yml文件中哦
cloud:
config:
discovery:
enabled: true #如果希通過在配置中心找服務名的方式招待配置中心,那麼這個屬性就要設置成 true 默認false
service-id: cloud-config #配置中心的服務名
fail-fast: true #將這個設置成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 #是否註冊到註冊中心
fetch-registry: true #是否可以被檢索
spring:
application:
name: cloud-order
# could的配置信息一定要寫到bootstrap.yml中
# 因爲cloud框架會優先讀取bootstrap.yml配置文件,如果發現這裏面沒有這些配置,那麼是無法將當前服務註冊到註冊中心的,這點需要特別注意,服務名也要寫到ootstrap.yml文件中哦
cloud:
config:
discovery:
enabled: true #如果希通過在配置中心找服務名的方式招待配置中心,那麼這個屬性就要設置成 true 默認false
service-id: cloud-config #配置中心的服務名
fail-fast: true #將這個設置成true 表示連接配置中心失敗,讓程序啓動失敗
# 2.0之後,默認的監控端點地址加了上下文路徑 actuator。可通過 management.endpoints.web.base-path屬性進行修改,默認是: actuator
# 2.0之後,默認只開啓了端點 info、 health。其他的需要通過 management.endpoints.web.exposure.include進行額外配置。
# 配置刷新
management:
endpoints:
web:
exposure:
include: '*'
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的配置就將到了這裏,這僅僅是一個入門案例,這裏面還可以爲客戶端加密解密等功能,感興趣的小夥伴可以自己嘗試。