Spring Cloud Config爲服務端和客戶端提供了分佈式系統的外部化配置支持。配置服務中心採用Git的方式存儲配置文件,所以咱們很容易部署修改,有助於對環境配置進行版本管理。git
Spring Cloud Config支持在Git, SVN和本地存放配置文件,使用Git或者SVN存儲庫能夠很好地支持版本管理,Spring默認配置是使用Git存儲庫。在本案例中將使用OSChina提供的Git服務存儲配置文件。爲了能讓Config客戶端準確的找到配置文件,在管理配置文件項目my-sample-config中放置配置文件時,須要瞭解application, profile和label的概念:spring
例如在本案例中,計劃將客戶端my-config-client的spring.application.name設置爲my-client,則上傳一個文件名爲my-client.yml配置文件;另外計劃在uat環境上作不一樣的配置,則再上傳一個文件名爲my-client-uat.yml配置文件tomcat
info: app: name: 配置中心服務器 version: 1.0.0-SNAPSHOT server: port: 3333 tomcat: max-threads: 1000 uri-encoding: UTF-8 spring: profiles: active: dev application: name: config-service http: encoding: charset: UTF-8 force: true zipkin: base-url: "http://192.168.3.3:2233/" rabbitmq: host: 192.168.0.1 port: 1111 username: 1 password: 2 cloud: config: server: git: searchPaths: dev #設置服務器端口號和配置文件Git倉庫的連接 uri: "http://192.168.3.3:3000/root/config.git" username: root password: 111111 management: security: enabled: false security: basic: enabled: false eureka: client: serviceUrl: defaultZone: "http://192.168.3.1:1111/eureka/,http://192.168.3.2:1111/eureka/,http://192.168.3.3:1111/eureka/" instance: # 續約更新時間間隔(默認30秒) lease-renewal-interval-in-seconds: 20 # 續約到期時間(默認90秒) lease-expiration-duration-in-seconds: 30
若是配置文件放置在Git存儲庫的根目錄下,則無需使用searchPaths參數,本例中的配置文件在my-sample-config目錄中,所以使用searchPaths參數提示Config服務器搜索my-sample-config子目錄。服務器
spring: profiles: active: dev application: name: DDDD-xs http: encoding: charset: UTF-8 force: true cloud: bus: trace: enabled: true config: name: spes profile: serv label: master discovery: enabled: true service-id: AAAAAA fail-fast: true
無需從新啓動客戶端,便可更新Spring Cloud Config管理的配置
1)在Git中更新 my-client-uat.yml 文件中的配置:app
my-config: appName: my-app-uat-new
2) 訪問http://localhost:8888/my-client/uat/master,可見屬性my-config.appName已經更新。但此時訪問http://localhost:8080/app-name,客戶端讀到屬性值還沒有更新。
3) 對Conf客戶端發一個POST請求http://localhost:8080/refresh,返回200 OK。再次訪問http://localhost:8080/app-name,可見在並未重啓客戶端服務的狀況下,讀到的屬性值已經動態更新分佈式