Spring Cloud構建微服務架構分布式配置中心

Spring Cloud Config是Spring Cloud團隊創(chuàng)建的一個全新項目,用來為分布式系統(tǒng)中的基礎設施和微服務應用提供集中化的外部配置支持纺荧,它分為服務端與客戶端兩個部分瞄摊。其中服務端也稱為分布式配置中心拱烁,它是一個獨立的微服務應用桨武,用來連接配置倉庫并為客戶端提供獲取配置信息、加密/解密信息等訪問接口漓滔;而客戶端則是微服務架構中的各個微服務應用或基礎設施,它們通過指定的配置中心來管理應用資源與業(yè)務相關的配置內容乖篷,并在啟動的時候從配置中心獲取和加載配置信息响驴。Spring Cloud Config實現了對服務端和客戶端中環(huán)境變量和屬性配置的抽象映射,所以它除了適用于Spring構建的應用程序之外撕蔼,也可以在任何其他語言運行的應用程序中使用豁鲤。由于Spring Cloud Config實現的配置中心默認采用Git來存儲配置信息,所以使用Spring Cloud Config構建的配置服務器鲸沮,天然就支持對微服務應用配置信息的版本管理琳骡,并且可以通過Git客戶端工具來方便的管理和訪問配置內容。當然它也提供了對其他存儲方式的支持讼溺,比如:SVN倉庫楣号、本地化文件系統(tǒng)。

在本文中,我們將學習如何構建一個基于Git存儲的分布式配置中心炫狱,并對客戶端進行改造藻懒,并讓其能夠從配置中心獲取配置信息并綁定到代碼中的整個過程。

準備配置倉庫

準備一個git倉庫视译,可以在碼云或Github上創(chuàng)建都可以嬉荆。

假設我們讀取配置中心的應用名為config-client,那么我們可以在git倉庫中該項目的默認配置文件config-client.yml:

1

2

info:

profile:default

為了演示加載不同環(huán)境的配置酷含,我們可以在git倉庫中再創(chuàng)建一個針對dev環(huán)境的配置文件config-client-dev.yml:

1

2

info:

profile:dev

構建配置中心

通過Spring Cloud Config來構建一個分布式配置中心非常簡單鄙早,只需要三步:

創(chuàng)建一個基礎的Spring Boot工程椅亚,命名為:config-server-git,并在pom.xml中引入下面的依賴(省略了parent和dependencyManagement部分):

org.springframework.cloud

spring-cloud-config-server

創(chuàng)建Spring Boot的程序主類扳缕,并添加@EnableConfigServer注解别威,開啟Spring Cloud Config的服務端功能省古。

@EnableConfigServer

@SpringBootApplication

publicclassApplication{

publicstaticvoidmain(String[] args){

newSpringApplicationBuilder(Application.class).web(true).run(args);

}

}

在application.yml中添加配置服務的基本信息以及Git倉庫的相關信息豺妓,例如:

spring

application:

name:config-server

cloud:

config:

server:

git:

uri:http://git.oschina.net/didispace/config-repo-demo/

server:

port:1201

到這里琳拭,使用一個通過Spring Cloud Config實現,并使用Git管理配置內容的分布式配置中心就已經完成了坑鱼。我們可以將該應用先啟動起來絮缅,確保沒有錯誤產生耕魄,然后再嘗試下面的內容。

如果我們的Git倉庫需要權限訪問允扇,那么可以通過配置下面的兩個屬性來實現蔼两;

spring.cloud.config.server.git.username:訪問Git倉庫的用戶名

spring.cloud.config.server.git.password:訪問Git倉庫的用戶密碼

完成了這些準備工作之后,我們就可以通過瀏覽器妙啃、POSTMAN或CURL等工具直接來訪問到我們的配置內容了揖赴。訪問配置信息的URL與配置文件的映射關系如下:

/{application}/{profile}[/{label}]

/{application}-{profile}.yml

/{label}/{application}-{profile}.yml

/{application}-{profile}.properties

/{label}/{application}-{profile}.properties

上面的url會映射{application}-{profile}.properties對應的配置文件燥滑,其中{label}對應Git上不同的分支阿逃,默認為master恃锉。我們可以嘗試構造不同的url來訪問不同的配置內容?并獲得如下返回:

{

"name":"config-client",

"profiles": [

"dev"

],

"label":"master",

"version":null,

"state":null,

"propertySources": [

{

"name":"http://git.oschina.net/didispace/config-repo-demo/config-client-dev.yml",

"source": {

"info.profile":"dev"

"name":"http://git.oschina.net/didispace/config-repo-demo/config-client.yml",

"source": {

"info.profile":"default"

我們可以看到該Json中返回了應用名:config-client破托,環(huán)境名:dev土砂,分支名:master萝映,以及default環(huán)境和dev環(huán)境的配置內容。

從現在開始晤郑,我這邊會將近期研發(fā)的springcloud微服務云架構的搭建過程和精髓記錄下來,幫助更多有興趣研發(fā)spring cloud框架的朋友吭练,希望可以幫助更多的好學者析显。大家來一起探討spring cloud架構的搭建過程及如何運用于企業(yè)項目。源碼來源

?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末锦聊,一起剝皮案震驚了整個濱河市孔庭,隨后出現的幾起案子圆到,更是在濱河造成了極大的恐慌卑吭,老刑警劉巖豆赏,帶你破解...
    沈念sama閱讀 212,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件掷邦,死亡現場離奇詭異耙饰,居然都是意外死亡苟跪,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 90,755評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來兄猩,“玉大人枢冤,你說我怎么就攤上這事铜秆×耄” “怎么了?”我有些...
    開封第一講書人閱讀 158,369評論 0 348
  • 文/不壞的土叔 我叫張陵祟峦,是天一觀的道長宅楞。 經常有香客問我咱筛,道長杆故,這世上最難降的妖魔是什么处铛? 我笑而不...
    開封第一講書人閱讀 56,799評論 1 285
  • 正文 為了忘掉前任撤蟆,我火速辦了婚禮,結果婚禮上龄砰,老公的妹妹穿的比我還像新娘换棚。我一直安慰自己固蚤,他們只是感情好歹茶,可當我...
    茶點故事閱讀 65,910評論 6 386
  • 文/花漫 我一把揭開白布燎孟。 她就那樣靜靜地躺著缤弦,像睡著了一般碍沐。 火紅的嫁衣襯著肌膚如雪累提。 梳的紋絲不亂的頭發(fā)上斋陪,一...
    開封第一講書人閱讀 50,096評論 1 291
  • 那天,我揣著相機與錄音友题,去河邊找鬼度宦。 笑死戈抄,一個胖子當著我的面吹牛划鸽,可吹牛的內容都是我干的裸诽。 我是一名探鬼主播崭捍,決...
    沈念sama閱讀 39,159評論 3 411
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼粒梦!你這毒婦竟也來了匀们?” 一聲冷哼從身側響起泄朴,我...
    開封第一講書人閱讀 37,917評論 0 268
  • 序言:老撾萬榮一對情侶失蹤钟沛,失蹤者是張志新(化名)和其女友劉穎恨统,沒想到半個月后畜埋,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 44,360評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,673評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了硬鞍。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,814評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖桦沉,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情埠褪,我是刑警寧澤钞速,帶...
    沈念sama閱讀 34,509評論 4 334
  • 正文 年R本政府宣布羽资,位于F島的核電站潮改,受9級特大地震影響翰萨,放射性物質發(fā)生泄漏糕殉。R本人自食惡果不足惜亩鬼,卻給世界環(huán)境...
    茶點故事閱讀 40,156評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望阿蝶。 院中可真熱鬧雳锋,春花似錦、人聲如沸羡洁。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽筑煮。三九已至辛蚊,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間真仲,已是汗流浹背袋马。 一陣腳步聲響...
    開封第一講書人閱讀 32,123評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留秸应,地道東北人虑凛。 一個月前我還...
    沈念sama閱讀 46,641評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像灸眼,于是被迫代替她去往敵國和親卧檐。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,728評論 2 351

推薦閱讀更多精彩內容