💡上一篇介紹一個新的組件Zuul,Zuul是網關組件,對Api請求進行了統一的接收,基於網關,我們可以對所有的請求來進行處理,進行日志記錄,請求授權等操作。Spring Cloud認知學習(五):網關Zuul的使用
💡這一篇介紹的Spring Cloud Config是作為配置中心的存在,主要解決多服務端部署時配置文件的分發問題。
🔴PS:這一篇是這個認知學習的最后一篇,認知學習並沒有緊貼實際,所以組件也只是簡單介紹,只是一個Spring Cloud認知的學習,目的就好像給你介紹一個輪子的使用,讓你認識這個輪子,對這個輪子有了興趣,輪子里面的具體方法后面再細說。
🔴后面將會針對組件來單獨章節講解。
Spring Cloud Config
作用:
- 在分布式部署中,肯定會有很多個服務端需要部署,理論上各種服務端可能需要采用不同的配置文件,所以對於多個服務端的配置文件分發也是個問題。
- Spring Cloud Config就是作為配置中心存在的,其他服務端可以從它這里拉取服務端所需的配置文件。
- 原理:Spring Cloud Config對外暴露Http API接口,Spring Cloud Config Client通過調用Config Server的Http接口來獲取配置文件。
簡單示例
Spring Cloud Config可以從很多地方拉取配置文件,本地遠程都可以。由於從遠程git拉取比較常見,所以這里舉的例子是遠程git的。【本地拉取的會在單章中演示。】
下面的代碼可以參考:Spring Cloud Config配置中心使用實驗
創建配置中心
1.創建模塊spring-cloud-config-server-11000
,這是作為配置服務中心的模塊,就好像我們之前使用eureka的時候也要創建一個eureka-server。
2.給spring-cloud-config-server-11000
模塊導入依賴:
<dependencies>
<!--引入公共依賴包 start-->
<dependency>
<groupId>com.progor.study</groupId>
<artifactId>spring-cloud-common-data</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<!--引入公共依賴包 end-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
</dependencies>
3.修改spring-cloud-config-server-11000
模塊的application.yml:
server:
port: 11000
spring:
application:
name: spring-cloud-config-server
cloud: # 配置spring cloud config
config:
server:
git: # 使用git來拉取
uri: https://github.com/alprogor/spring-cloud-config-test.git #GitHub上面的git倉庫名字
search-paths: messageservice
# 如果你不指定search-paths,那么默認是在根目錄查找的,那么你的config文件需要放在根目錄
4.修改主程序類,增加@EnableConfigServer
@SpringBootApplication
@EnableConfigServer
public class SpringCloudConfigServer11000Application {
public static void main(String[] args) {
SpringApplication.run(SpringCloudConfigServer11000Application.class, args);
}
}
5.在github上面創建一個倉庫,在本地拉取這個倉庫,創建一個文件夾messageservice,文件夾里面有一個spring-cloud-message-config-11000.yml
,填入下面的代碼只會,推送到github:
可以參考代碼:spring-cloud-config-test
spring:
profiles:
active:
- dev
---
spring:
profiles: dev
application:
name: spring-cloud-message-service-config-dev
---
spring:
profiles: test
application:
name: spring-cloud-message-service-config-test
server:
port: 8006
6.啟動spring-cloud-config-server-11000
💡訪問http://localhost:11000/master/spring-cloud-message-config-11000.yml
可以看到主分支上的配置文件。
💡訪問http://localhost:11000/master/spring-cloud-message-config-11000-test.yml
,可以看到test profile下的配置
💡如何拼接路徑來訪問配置文件,可以參考下圖:
拉取配置
1.創建模塊spring-cloud-message-service-config-8006
:
2.導入依賴:
<dependencies>
<!--引入公共依賴包 start-->
<dependency>
<groupId>com.progor.study</groupId>
<artifactId>spring-cloud-common-data</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<!--引入公共依賴包 end-->
<!--引入web開發相關包 start-->
<!--web 模塊-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--jettey作為默認的服務器-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jetty</artifactId>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
</dependency>
<!--引入web開發相關包 end-->
<!--spring -cloud -config 場景包 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
</dependencies>
3.在模塊spring-cloud-message-service-config-8006
的resources下創建bootstrap.yml:
💡bootstrap.yml是一個優先級很高的配置文件,反正優先於application.yml,所以它可以用來拉取配置文件。
spring:
cloud:
config:
name: spring-cloud-message-config-11000 #需要從github上讀取的資源名稱,注意沒有yml后綴名
profile: test #本次訪問的配置項
label: master
uri: http://localhost:11000
測試
💡啟動spring-cloud-config-server-11000
,等啟動完畢后再啟動spring-cloud-message-service-config-8006
,看spring-cloud-message-service-config-8006
的端口是否是8006,如果是,說明成功拉取了配置文件。
補充:
- 如何從Spring Cloud Config服務本地拉取配置文件,如何利用Spring Cloud Bus來更新配置文件和Spring Cloud Config集群的配置的這里沒講,將在Spring Cloud Config單章中講。