kafka初步認識

2021-07-11 19:35:17 字數 1764 閱讀 1732

producer:訊息生產者,向kafka集**送訊息,它是乙個程式

consumer:訊息消費者,從kafka集群獲取資料,它是乙個程式

broker:kafka集群的最小組成單元,它是乙個服務

topic:kafka將producer產生的訊息按照topic進行分類

partition:kafka將每乙個topic又分成了乙個個分割槽,每乙個分割槽都是乙個有序的、不可變的訊息序列,他是乙個log

offset:每乙個分割槽中的訊息都有自己的offset,consumer可以順序讀取每乙個分割槽中的訊息,也可以通過offset讀取隨機讀取訊息。

kafka集群由多個broker組成,每個broker上都存放了partition,並且通過副本機制對patition進行容錯,每個broker都存放了不同的patition副本。每個partition中都有乙個leader,其他的副本所在的伺服器稱為follower,leader負責partition的讀寫,follower複製leader。如果leader掛了,某乙個follower就成為了leader。

從上圖可以看出,kafka中有乙個「cyxtest」的topic,這個topic有3個partition,每個partition有2個副本,partition0的leader是broker2,partition0的所有的副本存放在broker0和broker2上。並且所有partition的副本分布都是負載均衡的。

producer:producer決定了訊息的topic、partition。其中partition的值可以讓kafka通過負載均衡控制,也可以自定義分割槽函式控制

public producerrecord(string topic, integer partition, k key, v value)
consumer:

一般的訊息傳遞有2種模式:queuing(佇列)和publish-subscribe(發布-訂閱)。

queuing(佇列):一條訊息只由乙個consumer消費

publish-subscribe(發布-訂閱):一條訊息廣播給所有consumer消費

在kafka中,多個consumer可以組成乙個consumer group,乙個consumer group中的不同consumer可以是一台機器上面的不同程序,也可以分布在不同的機器上。這樣,kafka就可以將訊息先通過發布訂閱模式廣播給所有的consumer group,然後組內是佇列模式,所有consumer 例項競爭乙個訊息,保證了kafka的容錯和穩定性。並且乙個組中消費者的數量不能多於partition的數量,一旦多,那麼就可能讓某乙個consumer空閒無法消費訊息,資源浪費。

相比於傳統的訊息系統,通過分割槽kafka的訊息傳遞可以有較好的順序保證。給每乙個分割槽指定乙個consumer group(組內只有乙個consumer程序),這樣每一條訊息都會被乙個消費者消費,但是kafka只能保證乙個partition的訊息被順序消費,如果希望所有的訊息被順序消費,那麼就為乙個topic指定乙個partition。

kafka初步認知

kafka 分布式訊息系統,由linkedin使用scala編寫,用於活動流以及運營資料處理管道的基礎支援,具有高水平擴充套件和高吞吐量的優勢。kafka的使用場景 作為資料管道或者訊息系統來使用 與其他幾種mq的對比 組成部分概述 一些概念 topic 類似於新聞板塊中的體育,財經,娛樂之類的分類...

初步認識繼承

include stdafx.h include using namespace std 構造方式跟類內類物件是一樣的 父類 info 派生類 sci 派生類 sci 父類 info struct info 父類 void outputinfo info info private int numb ...

初步認識redis

1.什麼redis 2.為什麼使用redis 3.什麼場合使用redis 4.redis的好處 5.編譯安裝redis 6.redis資料結構 1.什麼是redis redis是remote dictionary server 遠端資料服務 的縮寫,是義大利人antirez開發的一款記憶體快取記憶體...