Spring Cloud Config 學習(一)

簡介

對於傳統的單體應用,一般是使用配置文件來管理全部的配置,可是在微服務架構中,會存在不少的微服務,若是每個微服務都維護本身的配置,顯然是很是的麻煩且不靈活,維護成本會很是高git

使用Spring Cloud Config能夠實現一下功能github

  • 集中管理配置
  • 不一樣環境,不一樣配置
  • 運行時期動態調整。而且在修改配置時不會中止微服務
  • 配置修改後自動更新

Spring Cloud Config 爲分佈式系統外部化配置提供了服務器端和客戶端的支持,它包括Config Server 和 Config Client 兩部分。默認使用 Git 存儲配置內容(也可使用Subversion、本地文件系統或 Vault 存儲配置)。Config Client 會在微服務啓動時,請求 Config Server 以獲取所須要的配置屬性,而且緩存在本地以提升性能。spring

圖片描述

圖片來源緩存

實踐

Config Server

準備Git倉庫

這裏須要一個Git倉庫來存儲配置文件,我是使用GitHub來作倉庫的。須要在倉庫的根目錄下放置幾個測試用的配置文件服務器

clipboard.png

文件:架構

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

佔位符含義:

  • {application} 表示微服務名稱。microservice-foo-dev.properties 中 microservice-foo 就是微服務名稱
  • {profile} 表示微服務名後面的dev、test等。microservice-foo-dev.properties 中 dev 就是{profile}
  • {label} 表示Git倉庫分支,默認是master,可省略

訪問 http://localhost:8080/microservice-foo/dev 獲得如下結果:

clipboard.png

能夠看到相關的配置詳情信息。

訪問 http://localhost:8080/microservice-foo-dev.properties 能夠直接獲取配置文件內容:

clipboard.png

須要說明一下,由於是使用GitHub來做爲Git倉庫,因此訪問有可能會出現失敗的風險

相關文章
相關標籤/搜索