【问题标题】:Can I have 100s of thousands of topics in a Kafka Cluster?我可以在 Kafka 集群中拥有成千上万个主题吗?
【发布时间】:2016-01-02 05:19:33
【问题描述】:

我有一个数据流用例,我希望根据每个客户存储库(可能大约 100,000 个)定义主题每个数据流将是一个带有分区的主题(按几个 10 秒)定义流程的不同阶段。

Kafka 适合这样的场景吗?如果不是,我将如何改造我的用例来处理这种情况。此外,即使在处理过程中,每个客户存储库数据也不能与其他存储库数据混合。

【问题讨论】:

  • 如果以下答案之一解决了您的问题,请将其标记为已接受。

标签: apache-kafka


【解决方案1】:

2021 年 3 月更新:借助 Kafka 的新 KRaft 模式,该模式将 ZooKeeper 从 Kafka 的架构中完全移除,Kafka 集群可以处理数百万个主题/分区。详情请见https://www.confluent.io/blog/kafka-without-zookeeper-a-sneak-peek/

*“Kafka Raft 元数据模式”的缩写;自 Kafka v2.8 起处于抢先体验阶段


2018 年 9 月更新:从 Kafka v2.0 开始,Kafka 集群可以拥有数十万个主题。见https://blogs.apache.org/kafka/entry/apache-kafka-supports-more-partitions


下面的初步答案供后人参考:

经验法则是the number of Kafka topics can be in the thousands

Jun Rao(Kafka 提交者;现在在 Confluent,但他以前在 LinkedIn 的 Kafka 团队工作)写道:

在 LinkedIn,我们最大的集群有超过 2000 个主题。 5K主题应该 没事的。 [...]

如果主题越多,您可能会遇到以下限制之一:(1) # dirs allowed in a FS; (2) 打开文件处理程序(我们在代理中保持所有日志段打开); (3) ZK 节点。

Kafka FAQ 给出了以下抽象准则:

Kafka 常见问题解答:我可以拥有多少个主题?

与许多消息传递系统不同,Kafka 主题旨在任意扩展。因此,我们鼓励较少的大主题而不是许多小主题。因此,例如,如果我们为用户存储通知,我们会鼓励采用按用户 ID 划分的单个通知主题的设计,而不是每个用户一个单独的主题。

实际可扩展性在很大程度上取决于所有主题的总分区数,而不是主题本身的数量(有关详细信息,请参阅下面的问题)。

文章http://www.confluent.io/blog/how-to-choose-the-number-of-topicspartitions-in-a-kafka-cluster/(前面提到的饶俊写的)补充了更多细节,特别关注分区数的影响。

恕我直言,您的用例/模型对于单个 Kafka 集群来说有点牵强,但一般来说不一定适用于 Kafka。由于您分享的信息很少(我知道公共论坛不是进行敏感讨论的最佳场所:-P),我可以为您提供的唯一现成评论是考虑使用多个 Kafka 集群,因为您提到无论如何,客户数据必须非常独立(包括处理步骤)。

我希望这会有所帮助!

【讨论】:

  • 谢谢@miguno。我会接受使用多个 Kafka 集群的建议。我的后续问题将是。一旦我达到恒定的 2000 个主题,生成新的 Kafka 集群会是一个好主意吗?使用类似 Mesos 来托管 Kafka 集群?
  • 我认为是的,开始考虑如何轻松管理多个 Kafka 集群是一个好主意——不仅涉及部署(生成),还涉及监控(例如确定在您的情况下何时生成新集群实际上是有意义的)。
  • 您能否提供一些关于更新的说明? “2018 年 9 月更新:今天,从 Kafka v2.0 开始,Kafka 集群可以拥有数十万个主题。” - 我在文档中找不到任何关于此的内容
  • 啊,好点子。我更新了答案。如需直接回复,请参阅blogs.apache.org/kafka/entry/…
【解决方案2】:

考虑到 Kafka 是网络中的一个令人信服的选择,但它的设计目的不是为了在最后一英里有效和高效(但可以很快)将数据分发给数十万消费者 - 通过有时拥挤且不可靠的网络移动和卫星网络.插入或替代地使用实时 API 管理平台允许相同的数据聚合,但也是专门为最大限度地提高企业网络之外的高效、选择性和高度可扩展的数据分布而构建的。实时 api 管理解决方案可应对这些网络的挑战,并轻松管理所需的数十万个离散主题,而无需大量添加基础设施。

【讨论】:

  • 可能是对的,但也许您可能想指出这句话的本质。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-10-08
  • 2020-07-27
  • 2019-12-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-14
  • 2022-01-21
相关资源
最近更新 更多