SpringCloud之分佈式配置中心客戶端 spring-cloud-config

分佈式配置中心客戶端的作用是從github 或者 是 gitlab上加載配置 而不自己手動配置

在某個服務的pom.xml中加入spring-cloud-config客戶端依賴(每個服務都可使用,這裏以feign消費者爲例)

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-config</artifactId>
</dependency>

 先給feign的application.yml 配置 cloud-config

  feign服務的原始application.yml

spring:
  application:
    name: hello-spring-cloud-web-admin-feign
  thymeleaf:
    cache: false
    mode: LEGACYHTML5
    encoding: UTF-8
    servlet:
      content-type: text/html
  cloud:                                        //雲配置
    config:
      uri: http://localhost:8888
      name: web-admin-feign                     //對應gitlab倉庫中master分支下的
                                                 web-admin-feign-dev.yml文件
      label: master
      profile: dev

server:
  port: 8765

eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/

 
  feign服務簡化後的application.yml

spring: 
  cloud:                                        //雲配置
    config:
      uri: http://localhost:8888
      name: web-admin-feign                     //對應gitlab倉庫中master分支下的
                                                 web-admin-feign-dev.yml文件
      label: master
      profile: dev

  因爲配置文件全都託管在github或者gitlab平臺上,所以只需加載到對應的配置文件,而無需在此文件中配置大多數信息

  • spring.cloud.config.uri:配置服務中心的網址
  • spring.cloud.config.name:配置文件名稱的前綴
  • spring.cloud.config.label:配置倉庫的分支
  • spring.cloud.config.profile:配置文件的環境標識
    • dev:表示開發環境
    • test:表示測試環境
    • prod:表示生產環境
       

 

   你們可能會問這裏的feign服務在run入口類時能夠加載到gitlab後者github上對應的配置文件?
   從上面feign的application.yml中可以看出spring.cloud.config.uri 爲 http://localhost:8888
    而http://localhost:8888正是spring-cloud-config配置中心
    那我們再來看看spring-cloud-config配置中心中的application.yml又配置了什麼
 
 spring-cloud-config模塊(配置中心)

spring:
  application:
    name: hello-spring-cloud-config
  cloud:
    config:
      label: master
      server:
        git:
          uri: http://192.168.106.133/EinBlatt/spring-cloud-config.git
          search-paths: respo
          username: einblatt
          password: einblatt

server:
  port: 8888

eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/

 這下明白了吧,每個服務通過spring.cloud.config.uri屬性找到配置中心
  而配置中心中配置了連接同一管理配置文件的github或者gitlab倉庫的地址
  所有的服務的配置文件可以託管在這(這就是配置文件在雲上)
  在feign服務的application.yml配置文件中又指定了配置文件名和Pprofile(
配置文件的環境標識
-springboot profile)
  所以在不同的環境下可以加載到不同的配置文件
   如果項目上線了直接將feign服務的applicaition.yml中的spring.cloud.config.profile改成prod
   這時feign項目就會自動加載你配置的好的web-admin-feign-prod.yml  這樣無需關注你feign服務的application.yml
   的其他配置信息像eureka的url等等,只需更新github上或者gitlab上的配置文件,並且找到此對應的配置文件即可,是不
   是就是雲配置了
   

 

 

 但其實這並非是真正的配置上雲了,你想一般每個小的服務都會用maven打成jar包的形式運行(假如在windows上,先不說   linux),假如之前你是開發環境,用的配置文件是web-admin-feign-dev.yml,這時項目要上線了,然而你已經打包好了jar,
 你這時又的去改改你項目的application.yml中的spring.cloud.config.profile爲prod,再次打成jar然後再運行,是不是很
  麻煩,那麼如何解決這個問題呢,自古上有計策下有對策嘛


  操作起來很簡單,只需要爲不同的環境編寫專門的配置文件,如:web-admin-feign-dev.ymlweb-admin-feign-prod.yml, 啓動項目 時只需要增加一個命令參數 --spring.profiles.active=環境配置 即可,啓動命令如下:

在項目 mvn clean package後
這樣運行項目
  如果你是開發環境在cmd運行;

java -jar hello-spring-cloud-web-admin-feign-1.0.0-SNAPSHOT.jar --spring.profiles.active=dev

 如果你是上線環境在cmd運行;

java -jar hello-spring-cloud-web-admin-feign-1.0.0-SNAPSHOT.jar --spring.profiles.active=prod


 

  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章