SpringCloud創建Config多客戶端公共配置


1.說明

基於已經創建好的Spring Cloud配置中心,
在配置中心僅保存一套配置文件,
多個客戶端可以通過配置中心讀取到相同的配置,
而不需要在每個客戶端重復配置一遍,
下面以一個Config Client為例,
抽取其中的公共配置到配置中心,
且公共配置進一步細分為多個文件,
從而實現多個客戶端共享公共配置,
解決微服務集群下配置文件維護的難題。

2.Config Client的現有配置

本地的application.yml:

# 開發環境
server:
  port: 8004

config:
  info: config info dev

spring:
  profiles: dev
  application:
    name: config-client-dev
  cloud:
    config:
      label: master
      name: gateway-server,eureka-client
      profile: dev
      uri: http://config:config123456@localhost:9009
      
eureka:
  instance:
    hostname: localhost
    prefer-ip-address: true    
  client:
    service-url:
      register-with-eureka: true
      fetch-registry: true
      defaultZone: http://eureka:eureka123456@localhost:7001/eureka

3.抽取自己的配置文件

把Config Client自己的配置保存到config-client-dev.yml,
並且提交到Config Server的倉庫管理:

# 開發環境
server:
  port: 8004

spring:
  profiles: dev
  application:
    name: config-client-dev

config:
  info: config info dev

4.抽取訪問Eureka的配置文件

把訪問Eureka的配置保存到eureka-client-dev.yml,
並且提交到Config Server的倉庫管理:

eureka:
  instance:
    hostname: localhost
    prefer-ip-address: true    
  client:
    service-url:
      register-with-eureka: true
      fetch-registry: true
      defaultZone: http://eureka:eureka123456@localhost:7001/eureka

5.抽取訪問Config Server的配置文件

刪除原來的application.yml文件,
本地新建bootstrap.yml:
把訪問Config Server的配置保存到bootstrap.yml:

spring:
  cloud:
    config:
      label: master
      name: config-client,eureka-client
      profile: dev
      uri: http://config:config123456@localhost:9009

這樣每個Config Client本地都只需要這樣一個bootstrap.yml。

6.啟動服務

先啟動Config Server,
再啟動Eureka Server,
最后啟動Config Client,
發現Config Client能夠正常啟動,
並且提供業務服務,配置成功。

7.公共配置方案2

由於Config Client會默認讀取配置中心application.yml配置,
可以通過application.yml作為公共配置文件,
把所有的公共配置放進去,
但是每個客戶端都會讀取到相同的配置,
沒有上面的方案1針對性強。

8.Config Client修改bootstrap.yml

去掉bootstrap.yml中spring.cloud.config.name屬性的eureka-client:

spring:
  cloud:
    config:
      label: master
      name: config-client
      profile: dev
      uri: http://config:config123456@localhost:9009

9.抽取公共application-dev.yml文件

新建application-dev.yml文件,
把訪問Eureka的配置放進去,
也可以放入數據庫連接等其他公共配置,
並且提交到Config Server的倉庫管理:

eureka:
  instance:
    hostname: localhost
    prefer-ip-address: true    
  client:
    service-url:
      register-with-eureka: true
      fetch-registry: true
      defaultZone: http://eureka:eureka123456@localhost:7001/eureka

10.重啟服務

重啟服務成功后,
發現Config Client仍然能夠注冊到Eureka,
並且提供業務服務,方案2配置成功。
另外如果config-client-dev.yml和application-dev.yml存在相同配置,
則以config-client-dev.yml的配置為准。

11.參考文章

Spring-Cloud-Config 多服務公共文件配置


免責聲明!

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



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