我可以在Kafka Cluser中拥有数以千计的主题吗?

Swa*_* PR 9 apache-kafka

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

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

Mic*_*oll 12

更新于2018年9月:今天,从Kafka v2.0开始,Kafka集群可以拥有数十万个主题.


经验法则是卡夫卡主题的数量可以达到数千个.

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

在LinkedIn,我们最大的集群有超过2K的主题.5K主题应该没问题.[...]

通过更多主题,您可以达到以下限制之一:(1)FS中允许的#dirs; (2)打开文件处理程序(我们在代理中保持所有日志段都打开); (3)ZK节点.

卡夫卡常见问题给出了以下的抽象方针:

卡夫卡常见问题:我可以拥有多少主题?

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

实际的可伸缩性在很大程度上取决于所有主题的总分区数,而不是主题本身的数量(详见下面的问题).

文章http://www.confluent.io/blog/how-to-choose-the-number-of-topicspartitions-in-a-kafka-cluster/(由上述Jun Rao撰写)增加了更多细节,特别是重点关注分区数量的影响.

恕我直言,你的用例/模型对于单个Kafka集群来说有点延伸,但对于Kafka来说并不一定.您分享的信息很少(我知道公共论坛不是敏感讨论的最佳场所:-P)我能为您提供的唯一不合时宜的评论是考虑使用多个Kafka集群,因为您提到过客户数据必须非常孤立(包括处理步骤).

我希望这能有所帮助!

  • 我认为是的,开始考虑如何轻松地轻松管理多个Kafka群集是一个好主意-不仅在部署(生成)方面,而且在监视方面(例如,确定何时生成新群集实际上都有意义)根据您的情况)。 (2认同)