Spring Config 高可用配置中心
Spring Config 高可用配置中心
曾經我們都把配置文件跟應用放在一起,在單體應用的時代,沒什麼問題。隨著業務的增長,促使我們的系統架構往服務化發展,應用越來越多,配置也越來越多了,還會有很多重複的配置,一次修改,需要部署重啟所有節點。後來有了很多開源的配置中心,有接觸過的有Disconf,都很不錯。在spring cloud的整個生態下,我們有Spring Confg幫我們解決配置管理的問題,結合Spring Cloud Bus,我們能夠實現配置的動態刷新。
1.快速開始
Spring Config默認的配置倉庫是使用git,其實大多數公司還是沿用以前的svn來管理代碼,接下來,我們來用svn來做配置倉庫,存儲配置信息。
1.1新建config-server項目
用Spring Tool Suit中的 Spring starter Project新建一個config-server項目
在接下來的步驟中,選擇maven依賴:Cofig Server,Eureka Discovery,不用STS集成環境的,可以自己在pom文件中加入依賴
注意一下svnkit這個包是為了連接svn伺服器用的,一定要加上。
接下來,在項目的啟動類上加上註解:
1.2配置文件
在application.properties文件中增加以下配置:
配置完成之後,我們啟動config-server服務,完成配置伺服器的搭建。
接下來,我們在svn指定目錄中新建我們的配置文件。
上圖中:myProject為我們的項目,默認的配置文件為myProject.properties。
application是Spring應用中的spring.config.name指定的名稱。
profile:配置文件所對應的多環境配置
label是可選的標籤,git默認為master,svn默認是trunk。
啟動伺服器,我們通過
http://localhost:4999/myProject/dev
即可獲取到對應的dev環境的配置
返回的數據會包括myProject.properties,myProject-dev.properties兩個文件中的配置信息。
1.3客服端訪問
新建一個客戶端項目 config-client
pom文件中增加以下依賴
**
為了能夠載入外部的配置信息,client端的配置只能寫在bootstrap文件中,bootstrap文件優先順序是最高的。
**
為了方便測試,我們用暴露一個HTTP方法來獲取配置
啟動之後,通過瀏覽器訪問
http://localhost:4306/test
返回配置文件中配置的值:hello word!
當然,我們需要在配置文件中加入配置信息
同時,你會發現,我們的bootstrap中並沒有配置服務埠4306,這個配置我們放在myProject-dev文件中,證明啟動的時候,就已經正確的從配置伺服器載入配置信息了。
配置中心高可用
Spring Config配置服務實現高可用非常簡單,只要按照以上配置,將config-server註冊到eureka服務註冊中心,啟動多個實例即可實現高可用。
子目錄管理項目配置
前面我們已經可以通過Spring Config管理配置,也實現了配置中心的高可用。伴隨的項目的逐漸增多,我們發現配置文件都放在一個文件夾下面,容易搞混淆,我們需要每個項目的配置文件放在一個獨立目錄下,並且所有項目能共享一些公共的配置。
Spring Config支持佔位符的形式來查找配置倉庫,可以支持,經過測試,要現實子目錄的形式,需要用到的方式。
要現實子目錄的方式,我們需要在配置服務端增加以下配置:
這樣指定之後,我們的trunk目錄下就變成這樣了,每個項目的配置單獨一個文件夾,非常清晰。
項目文件夾(紅色劃線部分,名稱必須一致)
重啟我們的配置伺服器,通過以下地址,即可訪問到myProject-1項目的dev配置
自動刷新
通過以上步驟,我們已經實現了高可用配置中心,並實現了在客服端訪問配置中心的配置信息。
這個時候,你突然發現,修改了一個配置,提交到svn伺服器之後,客戶端並沒有獲取到最新的配置。這樣就存在一個問題,當我們在線上環境修改了配置之後,我們必須要重新受影響的應用服務(配置服務客戶端,配置伺服器端可以不重啟)才能得到最新的配置信息。
後續,我們將通過Spring Cloud Bus實現配置的自動更新。


TAG:切點圓心 |