【问题标题】:Kafka number of topics vs number of partitionsKafka 主题数与分区数
【发布时间】:2017-04-03 07:32:47
【问题描述】:

请多多包涵。我对卡夫卡很陌生。 我正在开发一个项目,生产者可以在运行时出现(不是固定数量)并发布消息。目前他们发布到在运行时在 kafka 代理中创建的唯一主题(topic.uuid),我在另一端有一个消费者订阅 topic.* 模式并订阅所有主题并在新主题出现时重新平衡。这是正确的方法吗?

现在,我很困惑我们应该有一个主题有多个分区还是多个主题有一个分区。从技术上讲,它是相同的。

但是,为每个分区(在运行时)获取新分区(在运行时)和新消费者以实现更高的吞吐量所涉及的复杂性是什么,正如在各种博客中提到的那样,分区数量应该具有相同数量的消费者一组。

【问题讨论】:

标签: apache-kafka


【解决方案1】:

主题应该从功能的角度来看待。您可以有多个主题,每个主题对应一个特定的消息系列。

例如你可以有一个解析重要消息的主题和 使用日志压缩进行批量加载/备份的另一个主题,以获得更细粒度的每条记录保留策略。

从技术/架构的角度来看,

分区很有趣。卡夫卡是一个分布式系统。一个主题可以有多个分区。当您有多个 Kafka 代理时,每个代理将获得一组分配给他们负责的分区。

例如如果你有一个有 24 个分区的主题并且你生成了 3 个 Kafka brokers,每个人将负责 8 个分区。卡夫卡 Zookeeper 将负责这些负载的分配 分区并正确重新分配分区以防代理 下降。

消费者可以从这些分区中读取,并将从领导者代理中读取。如果您在一个消费者组中有多个消费者,这些消费者将分配他们从中读取的分区。

例如如果消费者组中的消费者多于主题中的分区,则某些消费者将永远不会收到任何消息。

【讨论】:

  • 特别是组中的“过剩”消费者永远不会收到任何消息......直到其中一个活跃的消费者崩溃。
猜你喜欢
  • 2019-12-05
  • 2015-03-05
  • 2016-05-28
  • 2021-07-15
  • 2016-10-01
  • 2019-01-11
  • 2016-07-01
  • 1970-01-01
相关资源
最近更新 更多