Spring Cloud Config 配置中心選用Svn作爲配置倉庫(一)

由於卓望公司使用的代碼版本控制工具用的SVN作爲代碼倉庫,恰巧git本人沒用過。

所以,就想聊聊svn作爲spring cloud config配置中心的倉庫那點事...

在分佈式系統中,會有很多個微服務,並且微服務可能是Ha,如此,修改配置文件給我們帶來了很多時間成本的開銷,故spring cloud config解決了這個問題,只要我們修改配置倉庫的文件,就能很好的修改配置文件的參數,特別簡單易用。

Spring Cloud Config 簡介:

Spring Cloud Config 支持配置文件放在遠程倉庫中,例如 Git、SVN,也可以掛載到本地。spring cloud config 分爲server、client端。

spring cloud config server端:

新建一個springcloud config server項目:

首先,從pom文件開始吧:引入依賴

主要引入如圖中的2個依賴jar包,config-server標誌服務作爲config server服務,svnkit標識svn作爲配置倉庫。SVNKit (JavaSVN)是一個純Java的SVN客戶端庫,使用 SVNKit無需安裝任何SVN的客戶端,支持各種操作系統。這不是一個開源的類庫,但你可以免費使用。通過SVNKit,你可以在SVN上開發出自己的應用。

配置文件application.properties

這裏要注意的是要使用svn作爲配置中心,必須顯示聲明spring.profiles.active=subversion,不然還是用的git,svn默認的lable是trunk,git默認的是master,客戶端在使用的時候注意指定label,這裏search-paths使用了{application}佔位符,用來根據客戶端的spring.application.name來動態搜索配置目錄,即按照每個應用一個配置目錄的形式來組織配置。

如上這個圖中比較重要的就是svn 配置倉庫的配置了。

最後看一下,啓動類:

@EnableConfigServer:將該服務作爲一個config server服務啓動

啓動服務,驗證config server服務是否可用:訪問 http://10.2.8.42:1112/efficiency-basicdata-service-dev.properties

這裏要注意的是要使用svn作爲配置中心,必須顯示聲明spring.profiles.active=subversion,不然還是用的git,svn默認的lable是trunk,git默認的是master,客戶端在使用的時候注意指定label,這裏search-paths使用了{application}佔位符,用來根據客戶端的spring.application.name來動態搜索配置目錄,即按照每個應用一個配置目錄的形式來組織配置。

完美顯示,無問題.

spring cloud config client服務端:

客戶端也引入了eureka依賴,由於客戶端直接從config-server上獲取配置而不是從svn上獲取,所以不需要引入svnkit依賴

POM文件內容:

高可用配置中心是通過服務id去自動發現config-server服務地址的,所以不用配置spring.cloud.config.uri指向具體的地址了,直接通過spring.cloud.config.discovery.service-id來指定config server的服務名,這裏是config-server,同時需要將spring.cloud.config.discovery.enable=true(默認爲false,使用uri方式),聲明通過服務發現的方式來獲取config server地址。

爲了能動態刷新配置,需要在允許動態刷新的類上註解@RefreshScope,這裏我們定義了一個變量from,值是通過@Value("${from}")註解從配置中獲取的值自動注入的,也可以從Environment中獲取

 

修改配置文件內容提交,刷新配置文件,取到最新值:

 

首先查詢config client客戶端查詢hello的值:http://10.2.8.42:2010/hello

修改svn文件:

通過訪問spring cloud config server端發現,已經修改過來了:http://10.2.8.42:1112/efficiency-basicdata-service-dev.properties

通過接口訪問客戶端:http://10.2.8.42:2010/hello  發現並沒有刷新,這時我們需要手動刷新一下:http://10.2.8.42:2010/refresh

然後再訪問一下客戶端,發現屬性值已經改成正確的了。

 

 

朋友們,我不是特別會寫博客,整個過程中遇到的坑都沒有寫出來,是不知道如何寫,怎樣寫??????

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章