簡體   English   中英

Kafka生產者消息流

[英]Kafka producer message flow

我有一個名為Topic1的主題,帶有兩個分區。 假設serverATopic1領導者, partition1並且serverB是跟隨者。

如果在我的客戶端中發布到serverB (在broker.list中,我僅指定serverB )會發生什么? 消息如何傳播? 它發送到serverB,然后發送到serverA。

要將消息發布到分區,客戶端首先從Zookeeper中找到分區的領導者,然后將消息發送給領導者。 領導者將消息寫入其本地日志。 每個關注者都使用單個套接字通道不斷從領導者中提取新消息。關注者將收到的每條消息寫到其自己的日志中,並向領導者發送確認。 領導者收到來自ISR中所有副本的確認后,便會提交該消息

因此,要回答您的問題,如果客戶端發布到serverB,它將咨詢zookeeper以了解Topic1和partition1的領導者。 Zookeeper回應說serverA是partition1的領導者。 因此,客戶端將消息發送到serverA。(在這里,我假定分區程序會將消息發送到partition1。)

所有這些都由kafka生產商處理。 最終用戶應用程序不必擔心這些細節。

您可以在此處了解更多信息

我發現該文檔對於解釋Kafka內部發生的事情非常有幫助。

生產者使用一種API來向任何一台Kafka服務器詢問分區列表以及這些分區的所有元數據。 該元數據包括每個分區的領導者經紀人。 生產者調用分區程序以獲取目標分區,然后直接與該分區的Kafka經紀人負責人交談,以將消息寫入該分區。 領導者將處理與管理該分區副本的任何其他代理的通信。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM