流程總結
架構優化
之前使用actuator監控中心完成重新整理功能,但是在config client服務端需要傳送post請求來手動重新整理,如果config client有很多的話,那麼需要乙個乙個地傳送post請求,這顯然是不現實的做法。
使用訊息佇列中的topic, 通過訊息實現通知。
目前spring cloud bus訊息匯流排只是實現了對rabbitmq以及kafka的支援。
需要裝rabbitmq
參考《rabbitmq教程》
在pom檔案加上起步依賴spring-cloud-starter-bus-amqp。
>
>
org.springframework.cloudgroupid
>
>
spring-cloud-starter-bus-amqpartifactid
>
dependency
>
在bootstrap.yml新增rabbitmq的配置
spring::
name
: config-client
cloud
:bus
:enabled
:true
trace
:enabled
:true
rabbitmq
:host
: 127.0.0.1
port
:5672
username
: guest
password
: guest
#開啟所有端點
management
:endpoints
:web
:exposure
:include
:"*"
保證rabbit的服務開啟。
rabbitmq後台管理:
帳號密碼:guest/guest
啟動config-client工程後檢視rabbitmq中的交換機:
檢視佇列:
檢視該佇列繫結到了springcloudbus
修改config-client服務的埠,再啟動乙個config-client例項,進行測試。
發現,有2個佇列,分別都繫結到springcloudbus的交換機。
在git上修改配置檔案的內容進行測試。
然後傳送post請求:curl -x post http://localhost:8096/actuator/bus-refresh
會發現所有config-client的配置都更新了。
更新檔案到git伺服器,傳送post請求/bus/refresh,例項將訊息傳送到springcloudbus的交換機,由於這個例項的佇列頁繫結到交換機,所以其他例項也獲取到了更新的通知,然後去config server獲取最新的資料。
在前面實現的架構中,config-client例項應該是乙個具體業務相關的服務,但是我們讓它負責了傳送更新的訊息到rabbitmq。
這其實是違反了微服務架構中的職責單一的原則。
其實這個架構是可以改進的,就是將原有的config server不僅僅提供配置查詢的服務,而且還要負責更新訊息的傳送。
匯入依賴。
>
>
org.springframework.bootgroupid
>
>
spring-boot-starter-actuatorartifactid
>
dependency
>
>
>
org.springframework.cloudgroupid
>
>
spring-cloud-starter-bus-amqpartifactid
>
dependency
>
然後config-server服務上傳送actuator/bus-refresh
post請求就可以將配置更新到所有的config-client服務上。 SpringCloud學習 十三 Bus
建立module cloud config client 3366,這個模組和3355一摸一樣 然後在3344 3355和3366的專案模組中的pom.xml中加入訊息匯流排支援 org.springframework.cloud spring cloud starter bus amqp 同時在在...
Spring Cloud 訊息匯流排 Bus
spring cloud bus 是用輕量的訊息中介軟體將分布式的節點連線起來,可以用於廣播配置檔案的更改或者服務的監控管理。關鍵的思想就是,訊息匯流排可以為微服務做監控,也可以實現應用程式之間相通訊。spring cloud bus 可選的訊息中介軟體包括 rabbitmq 和 kafka rab...
Spring Cloud中bus元件配置
原理架構圖 用rabbitmq或者kafka都屬於三方元件,必然要開啟 enablediscoveryclient來代替 enableeurekaclient 想用上訊息匯流排還須要加上如下配置,這樣訊息匯流排才能監測到元件的變化並進行同步 spring.rabbitmq.host localhos...