【问题标题】:How kafka producer send batches?kafka生产者如何发送批次?
【发布时间】:2021-08-18 17:40:38
【问题描述】:

我知道 kafka producer 会批量处理消息。每个批次都属于一个特定的分区。

我的问题是

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

【问题讨论】:

    标签: apache-kafka


    【解决方案1】:
    1. 生产者将目标分区分配给每条记录(如果应用程序未提供),所以是的,他们知道批次的分区。

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

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

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

    【讨论】:

    • 根据你的3,这些分区会属于不同的broker吗?
    • @haoyu 不一定
    • 一个生产请求被发送到一个特定的代理,它只包含代理作为领导者的分区的记录。如果生产者必须将记录发送到多个代理,它将使用单独的生产请求。
    猜你喜欢
    • 1970-01-01
    • 2017-09-07
    • 2018-04-19
    • 2016-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-03
    相关资源
    最近更新 更多