Kafka基礎入門

Sierra、發表於2021-09-21
Kafka設計架構

Kafka由生產者(Producer)、消費者(Consumer)、Broker以及Zookeeper叢集組成,Zookeeper負責叢集後設資料的管理以及控制的選舉等操作,Producer將訊息傳送到Broker, Broker負責將受到的訊息儲存到磁碟中,而Consumer負責從Broker訂閱訊息,如下圖所示。

生產者

負責建立訊息,然後將訊息投遞到Broker中,生產者程式通常持續不斷地向一個或多個主題傳送訊息。

消費者

訂閱主題訊息的客戶端稱為消費者,消費者也能夠同時訂閱多個主題的訊息。

主題

主題是承載訊息的邏輯容器,在實際使用中多用來區分具體的業務

Broker

Kafka 的伺服器端由被稱為 Broker 的服務程式構成,即一個 Kafka 叢集由多個 Broker 組成,Broker 負責接收和處理客戶端傳送過來的請求,以及對訊息進行持久化。雖然多個 Broker 程式能夠執行在同一臺機器上,但更常見的做法是將不同的 Broker 分散執行在不同的機器上,這樣如果叢集中某一臺機器當機,即使在它上面執行的所有 Broker 程式都掛掉了,其他機器上的 Broker 也依然能夠對外提供服務。這其實就是 Kafka 提供高可用的手段之一

副本

Kafka實現高可用的另一個機制是備份機制,把相同的資料拷貝到多臺機器上儲存,這些相同的資料拷貝在 Kafka 中被稱為副本(Replica)。Kafka 定義了兩類副本:領導者副本(Leader Replica)和追隨者副本(Follower Replica)。前者對外提供服務,這裡的對外指的是與客戶端程式進行互動;而後者只是被動地追隨領導者副本而已,不能與外界進行互動。副本的工作機制也很簡單:生產者總是向領導者副本寫訊息;而消費者總是從領導者副本讀訊息。至於追隨者副本,它只做一件事:向領導者副本傳送請求,請求領導者把最新生產的訊息發給它,這樣它能保持與領導者的同步。

分割槽

Kafka 中的分割槽機制指的是將每個主題劃分成多個分割槽(Partition),每個分割槽是一組有序的訊息日誌。生產者生產的每條訊息只會被髮送到一個分割槽中,也就是說如果向一個雙分割槽的主題傳送一條訊息,這條訊息要麼在分割槽 0 中,要麼在分割槽 1 中。

消費者組

Consumer Group。多個消費者例項共同組成的一個組,同時消費多個分割槽以實現高吞吐。

消費者位移

Consumer Offset。表徵消費者消費進度,每個消費者都有自己的消費者位移。