Kafka 入門知識

一、入門知識

(1)基本術語

  • Topic
    Kafka將消息種子(Feed)分門別類,每一類的消息稱之爲一個主題(Topic).

  • Producer
    發佈消息的對象稱之爲主題生產者(Kafka topic producer)

  • Consumer
    訂閱消息並處理髮布的消息的種子的對象稱之爲主題消費者(consumers)

  • Broker
    已發佈的消息保存在一組服務器中,稱之爲Kafka集羣。集羣中的每一個服務器都是一個代理(Broker). 消費者可以訂閱一個或多個主題(topic),並從Broker拉數據,從而消費這些已發佈的消息。

(2)分區

Topic是發佈的消息的類別或者種子Feed名。對於每一個Topic,Kafka集羣維護這一個分區的log,就像下圖中的示例:
kafka分區圖片
每一個分區都是一個順序的、不可變的消息隊列, 並且可以持續的添加。分區中的消息都被分了一個序列號,稱之爲偏移量(offset),在每個分區中此偏移量都是唯一的。

Kafka集羣保持所有的消息,直到它們過期, 無論消息是否被消費了。 實際上消費者所持有的僅有的元數據就是這個偏移量,也就是消費者在這個log中的位置。 這個偏移量由消費者控制:正常情況當消費者消費消息的時候,偏移量也線性的的增加。但是實際偏移量由消費者控制,消費者可以將偏移量重置爲更老的一個偏移量,重新讀取消息。 可以看到這種設計對消費者來說操作自如, 一個消費者的操作不會影響其它消費者對此log的處理。 再說說分區。Kafka中採用分區的設計有幾個目的。一是可以處理更多的消息,不受單臺服務器的限制。Topic擁有多個分區意味着它可以不受限的處理更多的數據。第二,分區可以作爲並行處理的單元,稍後會談到這一點。
分區圖片

(3)生產者

生產者往某個Topic上發佈消息。生產者也負責選擇發佈到Topic上的哪一個分區。最簡單的方式從分區列表中輪流選擇。也可以根據某種算法依照權重選擇分區。開發者負責如何選擇分區的算法。

(4)消費者

通常來講,消息模型可以分爲兩種, 隊列和發佈-訂閱式。 隊列的處理方式是 一組消費者從服務器讀取消息,一條消息只有其中的一個消費者來處理。在發佈-訂閱模型中,消息被廣播給所有的消費者,接收到消息的消費者都可以處理此消息。Kafka爲這兩種模型提供了單一的消費者抽象模型: 消費者組 (consumer group)。 消費者用一個消費者組名標記自己。 一個發佈在Topic上消息被分發給此消費者組中的一個消費者。 假如所有的消費者都在一個組中,那麼這就變成了queue模型。 假如所有的消費者都在不同的組中,那麼就完全變成了發佈-訂閱模型。 更通用的, 我們可以創建一些消費者組作爲邏輯上的訂閱者。每個組包含數目不等的消費者, 一個組內多個消費者可以用來擴展性能和容錯。

(5)kafka的流處理

在kafka中,流處理持續獲取輸入topic的數據,進行處理加工,然後寫入輸出topic。例如,一個零售APP,接收銷售和出貨的輸入流,統計數量或調整價格後輸出。

可以直接使用producer和consumer API進行簡單的處理。對於複雜的轉換,Kafka提供了更強大的Streams API。可構建聚合計算或連接流到一起的複雜應用程序。

助於解決此類應用面臨的硬性問題:處理無序的數據,代碼更改的再處理,執行狀態計算等。

Sterams API在Kafka中的核心:使用producer和consumer API作爲輸入,利用Kafka做狀態存儲,使用相同的組機制在stream處理器實例之間進行容錯保障。

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