我有一个数据流用例,我希望根据每个客户存储库(可能大约100,000个)定义主题。每个数据流都是一个带分区的主题(按顺序排列)几十个)定义流程的不同阶段。
卡夫卡是否适合这样的场景?如果不是,我将如何改造我的用例来处理这种情况。此外,即使在处理过程中,每个客户存储库数据也不能与其他客户存储库数据混合。
答案 0 :(得分:10)
2018年9月更新:今天,从Kafka v2.0开始,Kafka群集可以拥有数十万个主题。
经验法则是the number of Kafka topics can be in the thousands。
Jun Rao(Kafka提交者;现在Confluent,但他以前在LinkedIn的Kafka团队中)写道:
在LinkedIn,我们最大的群集拥有超过2K的主题。应该有5K主题 没事的。 [...]
如果有更多主题,您可能会达到以下限制之一:(1)允许使用#dirs 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/(由上述Jun Rao撰写)增加了更多细节,特别关注分区数量的影响。
恕我直言,您的用例/模型对于单个Kafka群集来说有点延伸,但对于Kafka来说并不一定如此。您分享的信息很少(我知道公共论坛不是敏感讨论的最佳场所:-P)我能为您提供的唯一不合时宜的评论是考虑使用多个Kafka集群,因为您提到过无论如何,客户数据必须非常孤立(包括处理步骤)。
我希望这有点帮助!
答案 1 :(得分:0)
考虑到Kafka是网络中的一个引人注目的选择,但它并非旨在通过有时拥塞且不可靠的Web移动和卫星网络有效地(最后很快)将数据分发给成千上万的消费者。插入实时API管理平台或使用其实时API管理平台,可以实现相同的数据聚合,但还可以通过特定用途来最大化公司网络外部的高效,选择性和高度可扩展的数据分发。实时api管理解决方案可以应对这些网络的挑战,并轻松地管理数十万个离散主题,而无需添加大量基础架构。