spring cloud config-bus-kafka應用原理

部分內容摘自:https://www.jianshu.com/p/8343a8485112;
配置中心的選擇可參考:https://www.jianshu.com/p/d78fa8412cbf

Spring Cloud Config基本概念
Spring Cloud Config用來爲分佈式系統中的基礎設施和微服務應用提供集中化的外部配置支持。
服務端:分佈式配置中心,獨立的微服務應用,用來連接配置倉庫(GIT/DB)併爲客戶端提供獲取配置信息、加密/解密等訪問接口。
客戶端:微服務架構中各個微服務應用和基礎設施,通過指定配置中心管理應用資源與業務相關的配置內容,啓動時從配置中心獲取和加載配置信息。
基於git的架構圖:
在這裏插入圖片描述
基於DB的架構圖:
在這裏插入圖片描述
遠程git倉庫:

用於存儲配置文件的地方

本地git倉庫/DB數據庫:

在Config Server文件系統中,客戶單每次請求獲取配置信息時,Config Server從GIT倉庫獲取最新配置到本地,然後在本地GIT倉庫讀取並返回。當遠程倉庫無法獲取時,直接將本地倉庫內容返回。或者從db讀取配置返回給客戶端。

config server:

分佈式配置中心,微服務中指定了連接倉庫的位置以及賬號密碼等信息。

service*:

具體的微服務應用,他們指定了Config Server地址,從而實現外部化獲取應用自己想要的配置信息。
應用啓動時會向Config Server發起請求獲取配置信息進行加載。

消息中心,kafka等:

上述架構圖均是基於消息總線的方式,依賴的外部的MQ組件,目前支持kafka、rabbitmq。
通過Config Server配置中心提供的/bus/refresh endpoint作爲生產者發送消息,客戶端接受到消息通過http接口形式從Config Server拉取配置。

消息總線,spring cloud bus:

可理解爲管理和傳播所有分佈式項目中的消息既可,其實本質是利用了MQ的廣播機制在分佈式的系統中傳播消息,目前常用的有Kafka和RabbitMQ。
提供事件機制,結合kafka等,實現消息生產和訂閱,或者叫事件觸發和事件監聽。

註冊中心:

可以將Config Server註冊到服務註冊中心上比如Eureka,然後客戶端通過服務註冊中心發現Config Server服務列表,選擇其中一臺Config Server來完成健康檢查以及獲取遠端配置信息。

git存儲配置形式下,客戶端加載流程:

1、應用啓動時,根據bootstrap.yml中配置的應用名{application}、環境名{profile}、分支名{label},向Config Server請求獲取配置信息。
2、Config Server根據自己維護的GIT倉庫信息與客戶端傳過來的配置定位去查找配置信息。
3、通過git clone命令將找到的配置下載到Config Server的文件系統(本地GIT倉庫)
4、Config Server創建Spring的ApplicationContext實例,並從GIT本地倉庫中加載配置文件,最後讀取這些配置內容返回給客戶端應用。
5、客戶端應用在獲取外部配置內容後加載到客戶端的ApplicationContext實例,該配置內容優先級高於客戶端Jar包內部的配置內容,所以在Jar包中重複的內容將不再被加載。

kafka基本概念:
kafka是一個分佈式、支持分區的(partition)、多副本的(replica),基於zookeeper協調的分佈式消息系統。
簡單理解可爲:消息隊列。

kafka基礎概念,詳細可參考:https://www.jianshu.com/p/734cf729d77b

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章