快速搭建 Spring Cloud Config
Spring Cloud Config 分散式配置中心
- 是Spring Cloud團隊建立的一個全新的專案,用來為分散式系統中的基礎設施和微服務應用提供集中化的外部配置支援,它分為服務端與客戶端兩個部分。
- 其中服務端也稱為分散式配置中心,它是一個獨立的微服務應用,用來連線配置倉庫併為客戶端提供獲取配置資訊、加密/解密資訊等訪問介面;而客戶端則是為服務架構中的各個微服務應用或基礎設施,他們通過指定的配置中心來管理應用資源與業務相關的配置內容,並在啟動的時候從配置中心獲取和載入配置資訊。
Spring Cloud Config實現的配置中心預設採用Git來儲存配置資訊。所以使用Spring Cloud Config構建的配置伺服器,支援對微服務應用配置資訊的版本管理,並且可以通過Git客戶端工具來方便的管理和訪問配置內容。
搭建 Spring Cloud Config Server
1、新建config-server 的model
2、注意:這裡不是application.yml而新建bootstrap.yml(bootstrap.yml可以獲取一些外部配置資訊,這些資訊優先順序高於application.yml,就此實現了外部化配置)
spring:
application:
name: config-server
cloud:
config:
server:
git:
# uri: https://github.com/forezp/SpringcloudConfig/
uri: https://github.com/25312/ConfigServer/
# 配置Git倉庫位置
searchPaths: respo
# spring_cloud_in_action/config-repo 配置倉庫路徑下的相對搜尋位置,可以配置多個
username:
# 訪問Git倉庫的使用者名稱
password:
# 訪問Git倉庫的使用者名稱密碼
label: master
server:
port: 9200
eureka:
client:
serviceUrl:
defaultZone: http://peer1:1122/eureka/
3、在應用程式啟動類新增 @EnableConfigServer 註解
@EnableConfigServer
@SpringBootApplication
public class ConfigServerApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigServerApplication.class, args);
}
}
4、啟動測試(先啟動高可用配置中心,peer1和peer2):
輸入:http://localhost:9200/cc/dev/master(意為訪問 master 節點下 cc-dev.properties)
如此便測試成功!
倉庫中的配置檔案會被轉換成web介面,訪問可以參照以下的規則:
/{application}/{profile}[/{label}]:
- /{application}-{profile}.yml
- /{label}/{application}-{profile}.yml
- /{application}-{profile}.properties
- /{label}/{application}-{profile}.properties
搭建Spring Cloud Client
1、新建config-client 的model
2、配置檔案一樣是bootstrap.yml
eureka:
client:
serviceUrl:
defaultZone: http://peer1:1122/eureka/
spring:
application:
name: config-client
cloud:
config:
uri: http://localhost:9200/
label: master
profile: dev
server:
port: 9300
3、在應用程式啟動類加 @EnableDiscoveryClient 即可
@EnableDiscoveryClient
@SpringBootApplication
public class ConfigClientApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigClientApplication.class, args);
}
}
4、新建一個 TestController 類作為測試獲取配置中心 github上的屬性值
@RestController
public class TestController {
@Value("${from}")
String from;
@RequestMapping("/from")
public String from(){
return "hello : "+from;
}
}
5、啟動(cpnfig-client應用程式):
6、如果改變github中配置檔案的 from = cc-test.1.2 改成 from=cc-test.2.3,再次訪問 http://localhost:9300/from 發現 from 還是 cc-test.1.2
那麼就要在 config-client 的pom.xml檔案中新增 spring-boot-starter-actuator監控模組來實現配置資訊的動態重新整理(其中包含了 /refresh 端點的實現,用於客戶端應用配置資訊的重新獲取與重新整理)
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
++++++++++++++++++++++++++++++OVER+++++++++++++++++++++++++++++++++++++