Kafka的執行流程

2021-10-05 17:55:36 字數 1377 閱讀 2844

總結kafka也用了一段時間了,一直想找個機會寫寫文章,趁著51空檔期碼一下。這篇文章主要想講清kafka的工作原理~

如圖,官網給出的架構圖很簡單,就多個生產者和消費者通過乙個kafka集群進行生產、消費資訊。但在消費者和生產者、kafka集群之下卻有著多個名詞(ps:每門技術之下都有好多花裡胡哨的名詞,這個有點煩人)

如下圖所示,將上圖進行細分後,有點兒群魔亂舞,但亂中有序,下面會對每個成員進行闡述。

broker中文可翻譯為掮客,其實就是生成這和消費之間的乙個中介,生產者和消費者通過broker產生一點兒聯絡。其實它就是一台臺的伺服器,每台伺服器有唯一的broker id。

這個比較容易理解,生產者就我們生產訊息的應用程式,而消費者對應的則是消費訊息的應用程式。

組的概念更多的針對消費者而言,多個消費者形成乙個組,通過group id進行指定。它的設計可以幫我們解決重複消費的問題,乙個topic只能被group內的乙個消費者消費(consumer)消費,但可以被不同組(group)內的消費者消費。

topic,主題是乙個邏輯概念,實際上並不存在。消費者通過topic(主題)消費訊息,生產者生產的訊息通過topic來進行儲存(文章給的圖沒有明確指示出來)。乙個topic之下有多個分割槽( partition),乙個topic下的訊息可能來自不同的伺服器(broker)

分割槽,有些文章又叫分片?topic是虛的,partition是物理存在的,每個partition對應的是乙個個的資料夾。kafka預設使用的是hash進行分割槽,所以,乙個topic的訊息可能被分布在不同的partition上。

為了保證分割槽容錯性,把訊息放在乙個partition上明顯不達標,所以將乙個分割槽複製乙份到另乙個分割槽中,這個過程就是replication,其實從中文意思也大概能猜到啦~

分割槽又分為主分割槽和副本分割槽,其中ledger(領導)就是我們的主分割槽,正常執行的情況下,生產者和消費者通過topic操作的都是主分割槽。

副本分割槽,就是這裡的follow(員工)了,follow通過replication,同步主分割槽的訊息,達到分割槽容錯的目的。主分割槽ledger和副本分割槽follow可以在不同的broker機器上

捋清各個成員的含義再看這張圖,是不是很容易理解。在明白基本的執行流程後,我們後面再刨根問底理解各個實現環節。如生產者提交訊息的策略?kafka集群如何表明自己活著?ledger同步到follow的過程?等等問題。

論Kafka的整體流程

首先需要明確kafka中producer到consumer的各個環節。producer先通過網路傳送到broker,broker會落入磁碟,broker再通過網路傳送到consumer。先看第乙個環節producer到broker,producer生產資料時,可以選擇單條發給broker,也可以通過...

Kafka 傳送訊息流程

客戶端的幾個元件 一條訊息首先需要確定要被儲存到那個 partition 對應的雙端佇列上 其次,儲存訊息的雙端佇列是以批的維度儲存的,即 n 條訊息組成一批,一批訊息最多儲存 n 條,超過後則新建乙個組來儲存新訊息 其次,新來的訊息總是從左側寫入,即越靠左側的訊息產生的時間越晚 最後,只有當一批訊...

kafka部署配置執行

二 修改配置檔案 config目錄下zookeeper.properties datadir tmp zookeeper data datalogdir tmp zookeeper clientport 2181 maxclientcnxns 100 ticktime 2000 initlimit ...