微服務spring cloud—使用SpirngCloudConfig統一管理
使用Spring Cloud Config統一管理微服務配置
為什麼要統一管理微服務配置?
對於傳統的單體應用,常使用配置檔案管理所有的配置。例如一個Spring Boot開發的單體應用,可將配置內容在application.yml檔案中。如果需要切換環境,可切換多個Profile,並在啟動應用時指定spring.profiles.active={profile}。當然也可藉助Maven的Profile實現環境切換。
然而,在微服務架構中,微服務的配置管理一般有以下需求:
集合管理配置。一個使用微服務框架的應用系統可能會包含成千上百個微服務, 因此集中管理配置是非常有必要的。 不同環境不同配置。例如:資料來源配置在不同的環境(開發、測試、預釋出、生產等) 中是不同的。 執行期間可動態調整。例如:可根據各個微服務的負載情況,動態調整資料來源連線池 大小或者熔斷閾值,並且在調整配置時不停止微服務。 配置修改後可自動更新。若配置內容發生變化,微服務能夠自動更新配置。
綜上所述,對於微服務架構而言,一個通用的配置管理機制是必不可少的,常見做法就是 配置伺服器管理配置。
Spring Cloud Config簡介
Spring Cloud Config為分散式系統外部化配置提供了伺服器端和客戶端的支援,它包括Config Server和Config Client兩部分。由於Config Server和Config Client都實現了對Spring Environment和PropertySource抽象的對映。因此,Spring Cloud Config非常適合spring應用程式,當然也可以與任何其他語言編寫的應用程式配合使用。
Config Server是一個可橫向擴充套件、集中式的配置伺服器,他用於集中管理應用程式各個環境下的配置,預設使用Git儲存配置內容(也可以使用Subversion、本地檔案系統或Vault儲存配置)因此可以很方便地實現對配置版本控制與內容審計。
Config Client是Config Server的客戶端,用於操作儲存在Config Server中的配置屬性。所有的微服務都指向Config Server。各個微服務在啟動時,會請求Config Server以獲取所需要的配置屬性,然後換存這些屬性以提高效能。
本文大部分內容轉載自周立的《Spring Cloud與Docker微服務架構實戰》