Kafka的運行流程


前言

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

結構圖

如圖,官網給出的架構圖很簡單,就多個生產者和消費者通過一個Kafka集羣進行生產、消費信息。但在消費者和生產者、Kafka集羣之下卻有着多個名詞(ps:每門技術之下都有好多花裏胡哨的名詞,這個有點煩人)

在這裏插入圖片描述

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

在這裏插入圖片描述

角色

Broker(掮客)

Broker中文可翻譯爲掮客,其實就是生成這和消費之間的一箇中介,生產者和消費者通過broker產生一點兒聯繫。其實它就是一臺臺的服務器,每臺服務器有唯一的broker id。

Producer(生產者)和 Consumer(消費者)

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

Group(組)

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

Topic(主題)

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

Partition(分區)

分區,有些文章又叫分片?Topic是虛的,partition是物理存在的,每個Partition對應的是一個個的文件夾。Kafka默認使用的是hash進行分區,所以,一個Topic的消息可能被分佈在不同的partition上。

Replication(複製)

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

Ledger(領導)

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

Follow(員工)

副本分區,就是這裏的Follow(員工)了,Follow通過replication,同步主分區的消息,達到分區容錯的目的。主分區Ledger和副本分區Follow可以在不同的broker機器上

總結

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

在這裏插入圖片描述

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