分佈式概念:通信之發佈訂閱(kafka)

發佈訂閱的三要素是生產者、消費者和消息中心
生產者負責產生數據放到消息中心,
消費者向消息中心訂閱自己感興趣的消息,
當發佈者推送數據到消息中心後,消息中心根據消費者訂閱情況將相關數據推送給對應的訂閱者。

發佈訂閱的基本工作原理


生產者可以發送消息到消息中心,而消息中心通常以主題(Topic)進行劃分,每條消息都會有相應的主題,消息會被存儲到自己所屬的主題中,訂閱該主題的所有消費者均可獲得該消息進行消費。

假設生產者 1 發佈一個 Topic 相關數據或消息,消費者 1~3 均訂閱了該 Topic 消息,則該消息會推送消費者 1~3,也就是說同一個消息被 3 個消費者消費了。

Kafka 發佈訂閱原理及工作機制

生產者(Producer)負責發佈消息到消息中心;

消費者(Consumer)向消息中心訂閱自己感興趣的消息,獲得數據後進行數據處理;

消息中心(Broker)負責存儲生產者發佈的消息和管理消費者訂閱信息,根據消費者訂閱信息,將消息推送給消費者。在 Kafka 中,消息中心本質上就是一組服務器,也可以說是 Kafka 集羣。

 

Zookeeper 集羣用來協調和管理 Broker 和 Consumer,實現了 Broker 和 Consumer 的解耦,併爲系統提供可靠性保證。

ZooKeeper 集羣可以看作是一個提供了分佈式服務協同能力的第三方組件,Consumer 和 Broker 啓動時均會向 ZooKeeper 進行註冊,由 ZooKeeper 進行統一管理和協調。

ZooKeeper 中會存儲一些元數據信息,比如對於 Broker,會存儲主題對應哪些分區(Partition),每個分區的存儲位置等;對於 Consumer,會存儲消費組(Consumer Group)中包含哪些 Consumer,每個 Consumer 會負責消費哪些分區等。

 

 Consumer 消費數據的能力會影響 Broker 數據存儲是否溢出的問題。若 Consumer 消費太慢,會導致 Broker 存儲溢出,Broker 就會丟棄一部分消息。

  Kafka 中,爲了解決消息存儲的負載均衡和系統可靠性問題,所以引入了主題和分區的概念。其中,主題是一個邏輯概念,指的是消息類型或數據類型分區是針對主題而言的,指的是一個主題的內容可以被劃分成多個集合,分佈在不同的 Broker 上,不同的 Broker 在不同的節點上這裏的集合就是分區,其中同一個分區只屬於一個 Broker。

分區有什麼好處:負載均衡,消息備份。

Kafka 中的消費組,指的是多個消費者的一個集合。一個消費組中的消費者共同消費主題消息,並且主題中每個消息只可以由消費組中的某一個消費者進行消費。

消費者組的目的:解決單個消費者消費能力低,broker存儲溢出問題。

 

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