我們在springcloud(七):配置中心svn示例和refresh中講到,如果需要客戶端獲取到最新的配置信息需要執(zhí)行refresh
,我們可以利用webhook的機制每次提交代碼發(fā)送請求來刷新客戶端,當客戶端越來越多的時候,需要每個客戶端都執(zhí)行一遍,這種方案就不太適合了。使用Spring Cloud Bus可以完美解決這一問題。
Spring Cloud Bus
Spring cloud bus通過輕量消息代理連接各個分布的節(jié)點。這會用在廣播狀態(tài)的變化(例如配置變化)或者其他的消息指令。Spring bus的一個核心思想是通過分布式的啟動器對spring boot應用進行擴展,也可以用來建立一個多個應用之間的通信頻道。目前唯一實現(xiàn)的方式是用AMQP消息代理作為通道,同樣特性的設置(有些取決于通道的設置)在更多通道的文檔中。
Spring cloud bus被國內很多都翻譯為消息總線,也挺形象的。大家可以將它理解為管理和傳播所有分布式項目中的消息既可,其實本質是利用了MQ的廣播機制在分布式的系統(tǒng)中傳播消息,目前常用的有Kafka和RabbitMQ。利用bus的機制可以做很多的事情,其中配置中心客戶端刷新就是典型的應用場景之一,我們用一張圖來描述bus在配置中心使用的機制。