亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Apache Kafka 生產者如何將記錄并行發送到分區?

Apache Kafka 生產者如何將記錄并行發送到分區?

MMTTMM 2021-12-10 12:23:19
從Kafka的API文檔中我找到了對Apache Kafka中send()方法的描述(producer的api文檔):“發送是異步的,一旦記錄存儲在等待發送的記錄緩沖區中,此方法將立即返回。這允許并行發送許多記錄而不會阻塞等待每個記錄后的響應?!蔽抑皇窍胫烙涗浭侨绾尾⑿邪l送的?如果我有 3 個代理,并且每個代理在同一主題下有 3 個分區,那么 Kafka 生產者是否會將記錄并行發送到 9 個分區?或者生產者只是同時將記錄發送給 3 個經紀人?生產者如何并行工作?
查看完整描述

2 回答

?
慕田峪4524236

TA貢獻1875條經驗 獲得超5個贊

Kafka 客戶端使用一個org.apache.kafka.common.requests.ProduceRequest可以同時為多個分區攜帶有效載荷的 (參見http://kafka.apache.org/protocol.html#The_Messages_Produce )。


因此,它org.apache.kafka.clients.NetworkClient在三個請求中并行發送(使用)到(三個)代理中的每一個,即:


- sends records for topic-partition0, topic-partition1, topic-partition2 to broker 1

- sends records for topic-partition3, topic-partition4, topic-partition5 to broker 2

- sends records for topic-partition6, topic-partition7, topic-partition8 to broker 3

您可以控制使用生產者配置完成的批處理量。


(注意我回答了 9 個唯一的分區,如果你的意思是復制分區,你只發送給領導者 - 然后復制將處理傳播)。


查看完整回答
反對 回復 2021-12-10
?
牧羊人nacy

TA貢獻1862條經驗 獲得超7個贊

是的,Producer 會將發往每個分區領導者的消息進行批量處理,并將并行發送。來自API 文檔

send() 方法是異步的。調用時,它將記錄添加到待發送記錄的緩沖區中并立即返回。這允許生產者將單個記錄批處理在一起以提高效率。

生產者為每個分區維護未發送記錄的緩沖區。這些緩沖區的大小由 batch.size 配置指定。將其設置得更大可能會導致更多的批處理,但需要更多的內存(因為我們通常會為每個活動分區使用這些緩沖區之一)。

這是一個幫助圖:

http://img1.sycdn.imooc.com//61b2d65e0001813319140889.jpg

查看完整回答
反對 回復 2021-12-10
  • 2 回答
  • 0 關注
  • 416 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號