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的配置為准。