配置中心 (二)

這一節來說說配置中心。
在搭建配置中心的時候,有刷到說倉庫可以在本地搭建,不過當然不會這么low,而且本地搭建哪來的版本控制呢?所以這里用到的是 git,如果作為一個程序猿,連 git 都沒有的麻煩先去拿根面條上上吊。

在說 Config Server 之前,先說清楚URL與配置文件的映射關系:

  • /{application}/{profile}[/{label}]
  • /{application}-{profile}.yml
  • /{label}/{application}-{profile}.yml
  • /{application}-{profile}.properties
  • /{label}/{application}-{profile}.properties

label 就是分支的名稱;application就是應用的名稱;profile就是應用的小名,如果應用有小版本,比如測試,灰度發布之類的會用得著。(我這么說真是太客氣了,你用不著也得用,就是這么霸道總裁=。=

由于用到 git,那我先在 git 那里創建一個名為 configserver 的倉庫,然后里面有個 springCloudConfig 文件夾,文件夾里面當然是文件啦。

git path

git 里面的文件只有一個叫 from 的屬性,后面會用得著。<strong>同時請注意路徑的名字,啟動時有異常很有可能不是你代碼有錯而是 git 的路徑錯了 ,包括找不到屬性,請檢查 git。</strong>

我這里先創建一個配置中心,應用名( 即 spring.application.name 屬性 )叫 SleepCare-ConfigServer,來份 pom.xml:

<dependencies>
    <!-- spring boot -->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <!-- 配置中心 -->
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-config-server</artifactId>
    </dependency>

    <!-- eureka 客戶端 -->
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-eureka</artifactId>
    </dependency>
  </dependencies>

然后是配置,圖片說它不太好意思見人,我就給它臉上打碼了。

配置中心的 bootstrap.properties

注意這些配置是寫在 bootstrap.properties 里面的,<strong>因為 bootstrap.properties 的加載比 application.properties 要早</strong>,沒有就自己新建一份。

其中說明一下,search-paths就是在這個倉庫內你那份配置文件的路徑,比如現在是 configserver 倉庫下 springCloudConfig/SleepCare-TestingServices-1.properties,那么很明顯這個屬性值就是 springCloudConfig 啦。

然后啟動類那里加上@EnableConfigServer注解。

Config Server

注意到沒有,當你啟動之后,其實這個 config server 也會當成一個客戶端去注冊服務,如此一來其他服務訪問配置中心的時候直接寫 application name 就行了。

接下來要用到服務注冊-EurekaServer (一)配置好的客戶端,客戶端這里也是要寫一份 bootstrap.properties ,內容如下:

客戶端的 bootstrap.properties

哦,記得先給客戶端的 pom.xml 加菜:

<!-- 配置中心客戶端 -->
<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-config</artifactId>
</dependency>

URL與配置文件的映射關系還記得不?

  • profile&label ---> 映射關系,忘記的自己回顧上面
  • discovery.enabled ---> 告訴客戶端要去找配置中心拿東西
  • discovery.service-id ---> 告訴客戶端配置中心叫啥名字

另外,在之前配客戶端的時候,eureka.client.serviceUrl.defaultZone 是在 application.properties 配置的,<strong>現在必須寫在 bootstrap.properties</strong>,不然你會感受到一次又一次的挫敗。(受虐狂請忽略我的話

功成名就的一步,寫個類:

testing class

from 就是我在倉庫那個文件寫的屬性,屬性值寫啥你說了算。然后 @Value注解是配置屬性值的,運行時客戶端會去找配置中心要值并注入,接下來才是重點,簡直就是敲黑板了好嗎!<strong>看到沒有,麻煩在類上面加上@RefreshScope注解</strong>。

當你谷歌 RefreshScope 時,其中有一篇 blog 是這么說的。

來自一篇 blog 的說明

默認情況下已經注入類的配置是不會更改的,這個注解是告訴 spring 重新把新的配置注入到類里面。

last one , 在配置里面加上management.security.enabled = false,否則請求 /refresh 或者 /bus/refresh( 消息總線的接口,這是后話 ) 時會要求身份驗證。

到這里,都跑起來吧,記得先讓配置中心起來再跑客戶端,然后訪問客戶端的 /testing/config 就會看到 git 上面寫的值啦。

然后改一下 git 里面 from 的屬性值,再請求客戶端的接口。
是不是沒反應?

現在客戶端調用一下 /refresh 之后再繼續調用接口,你會看到值變化了。

當然在實際開發上,是不可能這么玩的,多個系統之間這樣玩,很容易鬧出人命,一般都是上消息總線,后續文章會說怎么搭建消息總線。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,885評論 6 541
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,312評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,993評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,667評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,410評論 6 411
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,778評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,775評論 3 446
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,955評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,521評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,266評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,468評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,998評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,696評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,095評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,385評論 1 294
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,193評論 3 398
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,431評論 2 378

推薦閱讀更多精彩內容