做網(wǎng)站如何將一張圖片直接變體馮耀宗seo視頻教程
Kafka MQ 生產(chǎn)者和消費(fèi)者
Kafka 的客戶端就是 Kafka 系統(tǒng)的用戶,它們被分為兩種基本類型:生產(chǎn)者和消費(fèi)者。除 此之外,還有其他高級(jí)客戶端 API——用于數(shù)據(jù)集成的 Kafka Connect API 和用于流式處理 的 Kafka Streams。這些高級(jí)客戶端 API 使用生產(chǎn)者和消費(fèi)者作為內(nèi)部組件,提供了高級(jí)的 功能。
生產(chǎn)者
生產(chǎn)者 創(chuàng)建消息。在其他發(fā)布與訂閱系統(tǒng)中,生產(chǎn)者可能被稱為 發(fā)布者 或 寫入者 。一般情 況下,一個(gè)消息會(huì)被發(fā)布到一個(gè)特定的主題上。生產(chǎn)者在默認(rèn)情況下把消息均衡地分布到 主題的所有分區(qū)上,而并不關(guān)心特定消息會(huì)被寫到哪個(gè)分區(qū)。不過,在某些情況下,生產(chǎn) 者會(huì)把消息直接寫到指定的分區(qū)。這通常是通過消息鍵和分區(qū)器來實(shí)現(xiàn)的,分區(qū)器為鍵生 成一個(gè)散列值,并將其映射到指定的分區(qū)上。這樣可以保證包含同一個(gè)鍵的消息會(huì)被寫到 同一個(gè)分區(qū)上。生產(chǎn)者也可以使用自定義的分區(qū)器,根據(jù)不同的業(yè)務(wù)規(guī)則將消息映射到分 區(qū)。第 3 章將詳細(xì)介紹生產(chǎn)者。
消費(fèi)者
消費(fèi)者 讀取消息。在其他發(fā)布與訂閱系統(tǒng)中,消費(fèi)者可能被稱為 訂閱者 或 讀者 。消費(fèi)者訂 閱一個(gè)或多個(gè)主題,并按照消息生成的順序讀取它們。消費(fèi)者通過檢查消息的偏移量來區(qū) 分已經(jīng)讀取過的消息。 偏移量 是另一種元數(shù)據(jù),它是一個(gè)不斷遞增的整數(shù)值,在創(chuàng)建消息 時(shí),Kafka 會(huì)把它添加到消息里。在給定的分區(qū)里,每個(gè)消息的偏移量都是唯一的。消費(fèi) 者把每個(gè)分區(qū)最后讀取的消息偏移量保存在 Zookeeper 或 Kafka 上,如果消費(fèi)者關(guān)閉或重 啟,它的讀取狀態(tài)不會(huì)丟失。
消費(fèi)者是 消費(fèi)者群組 的一部分,也就是說,會(huì)有一個(gè)或多個(gè)消費(fèi)者共同讀取一個(gè)主題。群 組保證每個(gè)分區(qū)只能被一個(gè)消費(fèi)者使用。圖 1-6 所示的群組中,有 3 個(gè)消費(fèi)者同時(shí)讀取一 個(gè)主題。其中的兩個(gè)消費(fèi)者各自讀取一個(gè)分區(qū),另外一個(gè)消費(fèi)者讀取其他兩個(gè)分區(qū)。消費(fèi) 者與分區(qū)之間的映射通常被稱為消費(fèi)者對(duì)分區(qū)的 所有權(quán)關(guān)系 。
通過這種方式,消費(fèi)者可以消費(fèi)包含大量消息的主題。而且,如果一個(gè)消費(fèi)者失效,群組 里的其他消費(fèi)者可以接管失效消費(fèi)者的工作。第 4 章將詳細(xì)介紹消費(fèi)者和消費(fèi)者群組。