kafka生产者如何发送批次?

hao*_*ang 4 apache-kafka

我知道kafka生产者会将消息分批进行。每个批次属于一个特定的分区。

我的问题是

  1. 生产者是否知道每个批次属于哪个分区?
  2. 生产者是否知道每个分区的代理地址?
  3. 当生产者发送请求时,每个请求是包含多个批次还是仅包含属于目标分区的一个批次。
  4. 如果生产者发送多个批次,接收kafka服务器是否将批次重新传输到目标分区。

Mic*_*son 5

  1. 生产者将目标分区分配给每个记录(如果应用程序未提供),因此他们知道批次的分区。

  2. 启动时,生产者将检索集群元数据。这包含分区的当前领导者。生产者还定期刷新元数据,以便他们能够发现更新或新分区。

  3. 一个 Produce 请求可以包含多个分区的批次。您可以看到协议RECORDS中的每个分区都有一个字段。

  4. 生产者直接将记录发送给作为分区领导者的代理。

  • 生产请求被发送到特定的代理,并且它将仅包含代理作为领导者的分区的记录。如果生产者必须将记录发送给多个代理,它将使用单独的生产请求。 (4认同)