springcloud分布式配置中心

此文章僅寫給自己及同事探討使用,不可作為教程學(xué)習(xí)

為什么需要分布式配置中心:

分布式系統(tǒng)中,服務(wù)數(shù)量太多,為了方便服務(wù)配置文件的統(tǒng)一管理,所以我們需要分布式配置中心組件。

在沒有使用配置中心時:

1,配置文件分散在各個項目里,不方便維護

2,配置文件的權(quán)限與安全得不到保障

3,配置文件更新,項目需要重啟

POM:

添加依賴:<dependency>

? ? ? ? ? ????? ????<groupId>org.springframework.cloud</groupId>

? ? ? ? ? ? ????????<artifactId>spring-cloud-starter-config</artifactId>

? ? ? ? ?????????</dependency>

模塊配置文件:(bootstrap.yml)

spring:

application:

#應(yīng)用名,需要保持與服務(wù)器中需要讀取的配置名一致,如服務(wù)器中此配置文件名為test-config-#dev.properties,去除dev(表示環(huán)境為dev)及后綴

name: test-config

cloud:

config:

uri: http://localhost:9001/????#config server的uri

? ? ? profile: dev????#指定環(huán)境

? ? ? label: master????#指定分支

server:

port:9201

配置文件手動刷新:

/refresh:
添加spring-boot-starter-actuator依賴,
在Controller上添加注解@RefreshScope
發(fā)送post請求請求localhost:8081/refresh
再重新訪問即可(此方法了解即可)

實現(xiàn)配置文件的動態(tài)刷新:(config+bus)

spring-cloud-bus:消息總線,利用消息隊列的方式實現(xiàn)動態(tài)的刷新,配置文件客戶端(需要獲取配置文件的微服務(wù)端)訂閱此消息隊列(配置更新事件),當(dāng)其中一個微服務(wù)節(jié)點的/bus/refresh端點被請求時,該實例就會向消息總線發(fā)送一個配置更新事件,其他實例獲得該事件后也會更新配置。
添加依賴:
<dependency>
????<groupId>org.springframework.boot</groupId>
????<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

<dependency>
????<groupId>org.springframework.cloud</groupId>
????<artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>

在Controller上添加注解@RefreshScope

安裝rabbitmq

client模塊中配置文件(bootstrap.yml)中添加
spring:
rabbitmq:
host:? ? ? ? ? ? ? ? ? ? ?#rabbitmq所在主機ip地址
port:? ? ? ? ? ? ? ? ? ? ? #rabbitmq端口
username:? ? ? ? ? ? guest
password:? ? ? ? ? ? guest

management:
endpoints:
web:
exposure:
include:bus-refresh

啟動配置中心服務(wù)端與客戶端(可以啟動多個不同端口的客戶端便于測試)
更改git服務(wù)器上的配置文件,此時直接通過服務(wù)端訪問可以得到修改后的內(nèi)容,但客戶端不會跟著刷新。

發(fā)送post請求(可以使用postman或者終端)
訪問http://localhost:9201(其中一個客戶端的ip)/actuator/bus-refresh
再次通過客戶端訪問(http://localhost:9201/value)可以得到修改后的配置文件內(nèi)容
此時其他客戶端,例如(http://localhost:9202/value)也會一起進行更新

到了這里,發(fā)現(xiàn)依舊需要手動刷新,但是沒事!github等各種git中心都有一個叫做webhook的功能,可以在push事件發(fā)生時自動訪問一個url,結(jié)合上面的動態(tài)刷新,相信你已經(jīng)知道該怎么做了,為什么我不測試呢,因為github是在公網(wǎng)上,我寫的代碼在本地局域網(wǎng)上,寫上http://localhost:9201/actuator/bus-refresh。。。嗯應(yīng)該沒啥用

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、什么是分布式配置中心? Spring Cloud Config為服務(wù)端和客戶端提供了分布式系統(tǒng)的外部化配置支持...
    AI視界尼奧閱讀 1,106評論 0 1
  • 01 剛得知,好久沒聯(lián)系的朋友離開公司了。 電話那頭,她泄氣地開口:“我沒有給公司賺錢,我沒有提供價值,我覺得自己...
    531_閱讀 958評論 0 0
  • 癖,上癮,做某件事情的過程或結(jié)果能帶來快樂,有人對音樂上癮,有人對游戲上癮,也有人對旅行上癮,可有人對整理上癮,能...
    大夏夏閱讀 813評論 0 0
  • 上一個專題說到恐懼是絕望感的重要組成部分,接下來本專題我們將通過心理學(xué)家JULIA LAYTON的文章《恐懼是怎么...
    天賦療愈空間閱讀 1,846評論 2 9
  • 明月 稀星 夜空靜 燈光 篝火 萬家歡 故鄉(xiāng) 親友 遙相望 一輪 圓月 寄相思
    悅讀悅寫悅生活閱讀 394評論 2 4

友情鏈接更多精彩內(nèi)容