【问题标题】:Kafka RoundRobin partitioner not distributing messages to 4 partitionsKafka RoundRobin 分区程序不将消息分发到 4 个分区
【发布时间】:2021-08-23 18:17:37
【问题描述】:

我有 4 个代理和 4 个分区,但是当我尝试使用 null 键推送 4 条消息时,它没有保存为循环。我希望消息将它保存在每个分区中一次。

使用 kafka-clients 5.5* 获取 KafkaProducer,看起来像 5.4* 之后的版本,

如果未提供密钥,则行为取决于 Confluent 平台版本:

在 Confluent Platform 版本 5.4.x 及更高版本中,分配分区时可以感知批处理。如果一批记录未满且还没有发送到broker,它将选择与之前记录相同的分区。新创建的批次的分区是随机分配的。有关更多信息,请参阅 KIP-480:Sticky Partitioner 和相关的 Confluent 博客文章。 在 5.4.x 之前的 Confluent Platform 版本中,分区以循环法分配,从随机分区开始。

https://docs.confluent.io/platform/current/clients/producer.html

我的理解是否正确?

【问题讨论】:

  • 你能添加你的生产者代码和配置吗?
  • 请添加一些详细信息(代码、logcat 消息)以便了解什么是
  • 更新了细节。

标签: java apache-kafka


【解决方案1】:

Kafka 2.4 版中引入了新的分区器(StickyPartitioner),用于改进生产者将数据发送到分区的方式。

基本上,现在它首先对数据进行批处理,然后进行轮询,而不是对每条记录进行轮询。

有关更多详细信息,您可以参考以下链接。它解释了一切都是细节。

https://www.confluent.io/blog/5-things-every-kafka-developer-should-know/#tip-2-new-sticky-partitioner

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-24
    • 2020-01-27
    • 2019-04-24
    • 2018-11-26
    • 1970-01-01
    • 2019-08-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多