對於傳統的單體應用,一般是使用配置文件來管理全部的配置,可是在微服務架構中,會存在不少的微服務,若是每個微服務都維護本身的配置,顯然是很是的麻煩且不靈活,維護成本會很是高git
使用Spring Cloud Config能夠實現一下功能github
Spring Cloud Config 爲分佈式系統外部化配置提供了服務器端和客戶端的支持,它包括Config Server 和 Config Client 兩部分。默認使用 Git 存儲配置內容(也可使用Subversion、本地文件系統或 Vault 存儲配置)。Config Client 會在微服務啓動時,請求 Config Server 以獲取所須要的配置屬性,而且緩存在本地以提升性能。spring
圖片來源緩存
這裏須要一個Git倉庫來存儲配置文件,我是使用GitHub來作倉庫的。須要在倉庫的根目錄下放置幾個測試用的配置文件服務器
文件:架構
microservice-foo.properties microservice-foo-dev.properties microservice-foo-test.properties microservice-foo-production.properties
內容分別是:app
profile=default-1.0 profile=dev-1.0 profile=test-1.0 profile=production-1.0
而後新建分支dev ,而且將 microservice-foo-dev.properties 文件中的內容修改成 profile=dev-2.0分佈式
集成:微服務
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-config-server</artifactId> </dependency>
啓動文件添加@EnableConfigServer
標籤性能
配置文件:
spring.application.name=microservice-config-server # 這個uri使用能夠clone的路徑 spring.cloud.config.server.git.uri=https://github.com/wkkdhr/Dome1.git # github的帳號密碼 spring.cloud.config.server.git.username=*** spring.cloud.config.server.git.password=***
啓動服務以後,就可使用 Config Service 的端點獲取配置文件內容了。配置文件與端點的映射規則以下:
/{application}/{profile}/{label} /{application}-{profile}.yml /{application}-{profile}.properties /{label}/{application}-{profile}.yml /{label}/{application}-{profile}.properties
佔位符含義:
訪問 http://localhost:8080/microservice-foo/dev 獲得如下結果:
能夠看到相關的配置詳情信息。
訪問 http://localhost:8080/microservice-foo-dev.properties
能夠直接獲取配置文件內容:
須要說明一下,由於是使用GitHub來做爲Git倉庫,因此訪問有可能會出現失敗的風險