我可以在 Kafka 集群中拥有数百个或数千个主题吗?

2023-12-31

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

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


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

*“Kafka Raft 元数据模式”的缩写;从 Kafka v2.8 开始处于抢先体验阶段,现已全面上市,并考虑量产。 Kafka 4.0 计划完全删除用于启动 Kafka 的 Zookeeper 选项。


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


以下为后代的初步答案:

经验法则是Kafka 主题的数量可以达到数千个 http://grokbase.com/t/kafka/users/133v60ng6v/limit-on-number-of-kafka-topic.

Jun Rao(Kafka 提交者;现在在汇合 http://www.confluent.io/但他之前是 LinkedIn 的 Kafka 团队)写道:

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

对于更多主题,您可能会遇到以下限制之一:(1) 允许的目录数 FS; (2) 打开文件处理程序(我们在代理中保持所有日志段打开); (3)ZK节点。

The 卡夫卡常见问题解答 https://cwiki.apache.org/confluence/display/KAFKA/FAQ#FAQ-HowmanytopicscanIhave?给出以下抽象指南:

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

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

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

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

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

我希望这个能有一点帮助!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我可以在 Kafka 集群中拥有数百个或数千个主题吗? 的相关文章

  • 无法向 Kafka 发送大消息

    我想从生产者向 Kafka 发送一条大消息 因此我更改了以下属性 代理 服务器 属性 replica fetch max bytes 317344026 message max bytes 317344026 max message byt
  • 带有 kafka-avro-console-consumer 的未知魔法字节

    我一直在尝试将 Confluence 中的 kafka avro console consumer 连接到我们的旧版 Kafka 集群 该集群是在没有 Confluence Schema Registry 的情况下部署的 我使用以下属性显式
  • 具有替代方案的重载方法值表

    我有编译器抱怨的以下代码 val state KTable String String builder table BARY PATH Materialized as PATH STORE 错误信息 error home developer
  • 在 WSL2 中通过 IDE 连接到 kafka 服务器时出错

    我无法通过在 Windows 上运行的 intellij 或 vscode 连接到在 ubuntu 上运行的 kafka 服务器 我在 WSL2 上尝试的第一个服务器 我什至尝试使用虚拟机的IP 但没有成功 据我了解 我们应该能够根据此文档
  • 在 Confluence 4.1 + Kafka 1.1 中为 Kafka Connect 打包自定义 Java `partitioner.class` 插件?

    我已经成功地将用 Java 编写的简单自定义 Partitioner 类用于 Confluence 3 2 x Kafka 0 10 x 上的 Kafka Connect 接收器 我想升级到 Confluence 4 1 Kafka 1 1
  • Grafana/prometheus 中没有 kafka 指标

    我成功部署了 Helm Chart普罗米修斯操作员 https github com coreos prometheus operator tree master helm prometheus operator kube 普罗米修斯 ht
  • Kafka 0.8.2 中是否可以向现有主题添加分区

    我有一个Kafka https kafka apache org 集群运行有 2 个分区 我一直在寻找一种将分区计数增加到 3 的方法 但是 我不想丢失有关该主题的现有消息 我尝试停下来Kafka https kafka apache or
  • 无法向 kafka 主题发送消息

    我正在使用 Kafka Play 以及 Scala 这是我的代码 我想在其中发送消息到kafka服务器 主题名称是 测试主题 尽管我没有在主题中看到我发送的消息 但我没有收到任何错误 这里有什么问题吗 import kafka produc
  • 找不到 io.confluence:kafka-protobuf-serializer:6.0.0

    直接的问题是 为什么 Gradle 没有解决我添加的这个依赖关系 dependencies kafka protobuf serializer implementation io confluent kafka protobuf seria
  • Kafka Streams 内部数据管理

    在我的公司 我们广泛使用 Kafka 但出于容错的原因 我们一直使用关系数据库来存储多个中间转换和聚合的结果 现在我们正在探索 Kafka Streams 作为一种更自然的方式来做到这一点 通常 我们的需求非常简单 其中一个例子是 监听输入
  • Apache kafka - 消费者延迟选项

    我想在 Kafka 中为特定主题稍稍延迟启动一个消费者 具体来说 我希望消费者在从生成消息的时间起经过特定的时间延迟后开始使用该主题的消息 Kafka 中有任何属性或选项可以启用它吗 我们对火花流做了同样的事情 我希望 这种方法也适合您 这
  • Kafka 分区键无法正常工作

    我正在努力解决如何正确使用分区键机制的问题 我的逻辑是设置分区号为3 然后创建三个分区键为 0 1 2 然后使用分区键创建三个KeyedMessage 例如 KeyedMessage 主题 0 消息 KeyedMessage 主题 1 消息
  • 通过SOCKS代理连接Kafka

    我有一个在 AWS 上运行的 Kafka 集群 我想用标准连接到集群卡夫卡控制台消费者从我的应用程序服务器 应用程序服务器可以通过 SOCKS 代理访问互联网 无需身份验证 如何告诉 Kafka 客户端通过代理进行连接 我尝试了很多事情 包
  • kafka 连接 s3 源无法与 Minio 一起使用

    我已经验证了与 minio 的连接 确保凭据工作正常并且可以访问 minio 另外 如果我尝试任何其他值store url http minio 9000我无法保存配置 所以我猜想在可见性方面不存在问题卡夫卡连接容器和minio容器 我不确
  • 调试自定义 Kafka 连接器的简单有效的方法是什么?

    我正在使用几个 Kafka 连接器 在控制台输出中没有看到它们的创建 部署有任何错误 但是我没有得到我正在寻找的结果 没有任何结果 无论是期望的还是否则 我基于 Kafka 的示例 FileStream 连接器制作了这些连接器 因此我的调试
  • Apache Kafka Streams 将 KTable 物化到主题似乎很慢

    我正在使用 kafka 流 并试图将 KTable 具体化为一个主题 它有效 但似乎每 30 秒左右完成一次 Kafka Stream 如何 何时决定将 KTable 的当前状态具体化为主题 有没有什么办法可以缩短这个时间 让其更加 实时
  • 使用表白名单选项更新 Debezium MySQL 连接器

    我正在使用 Debezium 0 7 5 MySQL 连接器 并且我试图了解如果我想使用以下选项更新此配置 最好的方法是什么table whitelist 假设我创建了一个连接器 如下所示 curl i X POST H Accept ap
  • TopologyTestDriver 在 KTable 聚合上发送错误消息

    我有一个聚合在 KTable 上的拓扑 这是我创建的通用方法 用于根据我拥有的不同主题构建此拓扑 public static
  • Spark shell (spark 3.0.0) 添加包 confluence kafka 5.5.1 javax.ws.rs-api 问题

    我本地的win10 WSL回到ubuntu 在ubuntu上 我安装了spark3 0 0 confluence平台5 5 1 手动下载 当我尝试运行spark shell或spark submit时 下面是shell示例 spark sh
  • Kafka Streams - 如何扩展 Kafka 存储生成的变更日志主题

    我有多个冗余应用程序实例 它们想要使用主题的所有事件并独立存储它们以进行磁盘查找 通过rocksdb 为了便于论证 我们假设这些冗余消费者正在服务无状态 http 请求 因此 负载不是使用 kafka 共享的 而是使用 kafka 将数据从

随机推荐

  • 如何将“~/default.aspx”转换为“http://www.website.com/default.aspx”C#?

    我知道 ASP NET 自动执行此操作 但由于某种原因我似乎找不到该方法 帮助任何人吗 就像标题说的那样 如果我执行 Response Redirect Default aspx 它可以工作 但我不想重定向该网站 我只想要完整的网址 谁能帮
  • SQL 查询获取具有列最大值的表的行详细信息

    我有两张桌子 表格1 Num 1 2 3 Table 2 Num Date Amount 1 12 31 30 1 12 30 31 1 12 29 20 2 12 31 100 2 12 30 90 3 12 31 12 4 11 1 1
  • 烤宽面条自动编码器:如何使用解码器部分?

    假设我在烤宽面条中有一个自动编码器 有两个编码层和两个 InverseLayers 作为解码器 input InputLayer l1 Conv1DLayer input l2 DenseLayer l1 decoder part l2p
  • capybara-webkit:自动保存 RSpec 测试失败的屏幕截图

    当使用 capybara webkit 和 Rspec 测试失败时 如何自动保存 html 和屏幕截图 当 RSpec 测试失败时如何执行回调 加分点 如何避免出现以下错误 Capybara Driver Webkit WebkitInva
  • JS mouseenter 触发两次

    问题是关于事件 mouseenter 被触发两次 代码在这里 http jsfiddle net xyrhacom http jsfiddle net xyrhacom HTML div class elt text1 div class
  • Java、JPA、Glassfish、无效资源:jdbc/__default__pm

    我使用 Glassfish 3 1 2 2 构建 5 JPA EclipseLink MySQL 我通过 Glassfish 管理面板创建了 MySQL 池 从 GF 管理面板 Ping 到 MySQL 正常 我使用 persistence
  • 从 iframe 触发 jQuery 事件

    这是场景 我在 iframe 内发生了事件 到目前为止一切都运行良好 我刚刚遇到了一个问题 我想将事件从 iframe 分派到父级 我用它来触发 iframe 中的事件 body window parent document trigger
  • CMake:找到用 MinGW/MSYS 构建的 wxWidgets?

    我使用 MinGW 编译了 wxWidgets 2 8 12 为了实际进行构建 我通过 MSYS shell 调用了随 wxWidgets 一起分发的 autotools 构建文件 使用安装前缀为 H MinGW libs 这样做的结果是我
  • Android 拼写检查器设置意图

    在 Android 中 我可以启动键盘与输入设置对话框使用ACTION INPUT METHOD SETTINGS intent getPresenter startActivity new Intent Settings ACTION I
  • 如何找出 R 函数调用中使用了哪些参数值?

    我想知道是否有一个 Base R 函数来提取特定函数调用中使用的参数值 例如 对于每个对象x y and z下面 是否有一种通用的方法来提取参数名称 例如 n sd rate scale 正在使用和值 例如 1e4 for n 由用户或系统
  • Java:如何通过管道将InputStream传输到标准输出?

    有没有一种简单 因此快速 的方法来实现这一点 基本上只需要一些输入流 可能类似于socket getInputStream 并让流的缓冲区自动重定向到标准输出 没有简单的方法可以做到这一点 因为InputStream有一个拉式界面 当Out
  • 为什么重写方法不能抛出比被重写方法更广泛的异常?

    我正在阅读 Kathe Sierra 的 SCJP 6 书 并发现了关于在重写方法中抛出异常的解释 我完全没听懂 谁能给我解释一下吗 重写方法不得抛出新的已检查异常 或者比被重写方法声明的更广泛 例如 一个 声明 FileNotFoundE
  • PHP implode 数组生成 mysql IN 标准

    我有一个如下所示的函数 public function foo cities array anaheim baker colfax db global instance of Zend Db Adapter Pdo Mysql query
  • 模拟用户输入

    android 可以模拟用户输入吗 例如 有一些服务或一些线程将在后台工作并启动一些模拟用户输入的东西 因此如果我们在主屏幕上并且发生了模拟输入 假设单击 那么如果模拟的坐标是应用程序应该启动单击指向主屏幕上的某个图标 或者如果模拟输入指向
  • 微调器中的默认文本填充是什么

    我有一个微调器和一个风格类似于微调器的文本视图 我想对齐两者中的文本 但我不知道微调器中的文本有多少填充 你可以找到一件事安卓风格 https android googlesource com platform frameworks bas
  • 如何使用 Python 访问 Ring 0?

    这个答案指出Python中类的命名不是由于特殊特权而完成的 here https stackoverflow com questions 5602439 reasons behind naming in easy to confuse py
  • 如何比较 4 列

    我正在使用 Excel 中的表格 以下是工作表的示例 A B C D al id id id df id desc desc df id id desc df id id id ff desc id desc ff desc id desc
  • OS X 上的 sed - 似乎无法在正则表达式中使用 +

    现在根据所有文献 echo 1234abcd sed s 0 9 g 应该输出 abcd 和 echo abcd sed s 0 9 g 应该输出abcd 但在 OS X 10 4 11 上 第一个表达式输出 1234abcd 在第一个示例
  • SSLSocket 创建时发生 Java 异常

    在代码中 System setProperty javax net ssl trustStore cacerts System setProperty javax net ssl trustStorePassword pwdCacerts
  • 我可以在 Kafka 集群中拥有数百个或数千个主题吗?

    我有一个数据流用例 我希望根据每个客户存储库定义主题 可能约为 100 000 个 每个数据流将是一个带有分区的主题 约为几个 10 定义流程的不同阶段 Kafka 适合这样的场景吗 如果不是 我将如何重塑我的用例来处理此类场景 此外 即使