現如今我們經常在討論服務端開發(主要是API服務)的時候談及“微服務”。微服務設計方法逐漸成為了API開發的新業界標準。幾乎所有的組織都在推廣它。
在這篇教程當中,我們將探討並且完成一個叫做配置服務(Config Server)的微服務特性。所有微服務的可配置引數都在配置服務中寫入和維護。它更像是將屬性/資原始檔從專案的程式碼中統一抽離到一個外部服務,這樣的話如果某個屬性發生了改變,那麼使用它的服務並不需要重新部署。在不重新部署微服務的情況下,所有的屬性改變將可以體現出來。
為什麼要使用Spring cloud配置伺服器
配置伺服器的想法來自於12-factor app宣言。這份宣言與開發現代原生雲應用的最佳實踐指導相關。它建議將屬性/資源儲存在伺服器的環境當中。在這個環境裡,這些資源會在服務執行的時候發生變化——不同的配置通常在每個環境當中有所不同。
舉個例子,如果一個服務依賴與另一個服務(由於特定業務場景被呼叫),並且被依賴的服務的URL發生了改變,那麼我們必須用新的地址構建和部署我們的服務。但是如果我們現在運用了12 factor app方法,並且從一個執行在不同程式裡的外部服務讀取配置,我們就只需要重新整理配置服務了。
所以,這個想法非常清晰以及有效。現在讓我們來看看如何建立配置伺服器。
例子中使用到的技術棧
我們將使用基於spring-boot的spring-cloud API,它非常易於使用和流行。在spring framework的命名中,它被稱作Config Server。同時我們也會通過git來託管屬性檔案。
所以我們最終用於這個demo的技術棧是:
- Java 1.8E
- clipse IDE
- Spring cloud
- Spring boot
- Spring Rest
- GitHub as resource repository
- Maven
- REST client
我們首先將開發2個基於spring boot的微服務。
- 一個是提供執行配置的配置伺服器
- 一個是使用配置伺服器暴露的配置的配置客戶端服務
配置伺服器——伺服器端配置
首先我們通過給定的步驟構建配置伺服器部分。
-
生成專案結構
從spring boot初始化程式門戶開始,這是建立任何基於Spring Boot的應用的一個特別好的起點。在這裡我們只會選用Config Server starter pom。通過使用此配置,只要我們生成專案,就可以下載一個zip檔案,然後解壓縮後匯入eclipse。
-
將專案匯入Eclipse
一旦你從spring初始化器門戶獲得了zip檔案,我們需要將它解壓縮到我們選擇的目錄並將其作為maven專案匯入eclipse
-
在Eclipse中構建
下一步是選擇你喜歡的方式,從命令提示符或eclipse執行mvn clean install。
-
新增Config Server註解
現在開啟spring已經提供的Spring Application類,並在類之前新增@EnableConfigServer註解並再次構建專案。在使用這個註解之後,這個artifact將會表現得像一個spring配置伺服器。