从Kafka的API文档中我找到了对Apache Kafka中send()方法的描述(producer的api文档):“发送是异步的,一旦记录存储在等待发送的记录缓冲区中,此方法将立即返回。这允许并行发送许多记录而不会阻塞等待每个记录后的响应。”我只是想知道记录是如何并行发送的?如果我有 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 个唯一的分区,如果你的意思是复制分区,你只发送给领导者 - 然后复制将处理传播)。
添加回答
举报
0/150
提交
取消