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

慕田峪4524236
TA貢獻1875條經驗 獲得超5個贊
Kafka 客戶端使用一個org.apache.kafka.common.requests.ProduceRequest可以同時為多個分區(qū)攜帶有效載荷的 (參見http://kafka.apache.org/protocol.html#The_Messages_Produce )。
因此,它org.apache.kafka.clients.NetworkClient在三個請求中并行發(fā)送(使用)到(三個)代理中的每一個,即:
- 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 個唯一的分區(qū),如果你的意思是復制分區(qū),你只發(fā)送給領導者 - 然后復制將處理傳播)。
添加回答
舉報
0/150
提交
取消