首頁(yè)技術(shù)文章正文

Kafka數(shù)據(jù)寫(xiě)入流程、Kafka數(shù)據(jù)消費(fèi)流程

更新時(shí)間:2021-10-19 來(lái)源:黑馬程序員 瀏覽量:


生產(chǎn)者先從 zookeeper 的 "/brokers/topics/主題名/partitions/分區(qū)名/state"節(jié)點(diǎn)找到該 partition 的leader.

1634611987174_生產(chǎn)者寫(xiě)入數(shù)據(jù)流程.png

l  生產(chǎn)者在ZK中找到該ID找到對(duì)應(yīng)的broker

Kafka數(shù)據(jù)寫(xiě)入流程、Kafka數(shù)據(jù)消費(fèi)流程

l  broker進(jìn)程上的leader將消息寫(xiě)入到本地log中

l  follower從leader上拉取消息,寫(xiě)入到本地log,并向leader發(fā)送ACK

l  leader接收到所有的ISR中的Replica的ACK后,并向生產(chǎn)者返回ACK。

Kafka數(shù)據(jù)寫(xiě)入流程、Kafka數(shù)據(jù)消費(fèi)流程

Kafka數(shù)據(jù)消費(fèi)流程

有2種消費(fèi)模式:

1634612029573_消費(fèi)者的2種消費(fèi)模式.png

l kafka采用拉取模型,由消費(fèi)者自己記錄消費(fèi)狀態(tài),每個(gè)消費(fèi)者互相獨(dú)立地順序拉取每個(gè)分區(qū)的消息

l 消費(fèi)者可以按照任意的順序消費(fèi)消息。比如,消費(fèi)者可以重置到舊的偏移量,重新處理之前已經(jīng)消費(fèi)過(guò)的消息;或者直接跳到最近的位置,從當(dāng)前的時(shí)刻開(kāi)始消費(fèi)。

Kafka消費(fèi)數(shù)據(jù)流程

1634612038132_kafka消費(fèi)者拉取數(shù)據(jù)流程.png

l 每個(gè)consumer都可以根據(jù)分配策略(默認(rèn)RangeAssignor),獲得要消費(fèi)的分區(qū)

l  獲取到consumer對(duì)應(yīng)的offset(默認(rèn)從ZK中獲取上一次消費(fèi)的offset)

l  找到該分區(qū)的leader,拉取數(shù)據(jù)

l  消費(fèi)者提交offset


猜你喜歡:

Kafka基準(zhǔn)測(cè)試的測(cè)試步驟有哪些?

怎樣能確保Kafka儲(chǔ)存的數(shù)據(jù)不丟失?

Kafka數(shù)據(jù)是存在磁盤(pán)上還是內(nèi)存上?

Java kafka視頻教程下載[黑馬程序員]

黑馬程序員Python+大數(shù)據(jù)開(kāi)發(fā)培訓(xùn)

分享到:
在線咨詢 我要報(bào)名
和我們?cè)诰€交談!