Spring Cloud認知學習(六):配置中心Spring Cloud Config的使用



💡上一篇介紹一個新的組件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下的配置
💡如何拼接路徑來訪問配置文件,可以參考下圖:
20200513152923


拉取配置

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單章中講。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM