Kafka基礎入門

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。表徵消費者消費進度,每個消費者都有自己的消費者位移。

Tags: