当前位置: 首页 > 知识库问答 >
问题:

Kafka使用1键或多键流性能

曾云
2023-03-14

我使用的是1.5.4 spring boot,Java8和kafka 2.2.0版本。我有5个代理和4个不同的主题,每个50个分区。

我有一个这样的系统

因为使用相同的键,我所有内部主题的消息都在同一个分区,对吗?并且只有1个线程可以从该分区使用

如果我分发到50个分区,我会像50个分区那样做批处理工作,并分发到50个分区,我的代码性能是否会像x2x3x4倍那样增加?我能知道点什么吗

共有1个答案

羊舌赞
2023-03-14

我的问题是,如果我用不同的密钥将消息分发到不同的分区(现在我有密钥A1、A2、A3、A4....A50),我能获得良好的性能吗?

增加分区可以提高性能。通常800字节的msg,单个分区提供U24KMsgs/秒。如果u有2个部分,这将变成48K msgs/秒

它的利弊是什么?我的意思是,如果我使用1个分区,kafka是否在服务器上使用更少的磁盘操作和更少的网络成本?

kafka使用者并行读取每个分区。这意味着jvm1上可能有一个消费者在消费分区1;而JVM2上的消费者2使用Paralell中的分区2。另外,消费者1和消费者2不需要以相同的速度消费。

 类似资料:
  • 假设我有三个Kafka主题,其中充满了表示不同聚合中发生的业务事件的事件(事件源应用程序)。这些事件允许构建具有以下属性的聚合: 用户:usedId,名称 应用程序的模块:moduleId,name 授予用户应用程序模块:grantId、userId、moduleId、作用域 现在,我想创建一个包含所有授权的流,其中包含用户和产品的名称(而不是id)。我想这么做: 通过按用户ID对事件进行分组,为

  • 问题内容: 我整个上午都在搜索,但是大多数合并示例仅基于一个键,而在多个键上却找不到任何东西。 pid = 111,sid = 6,eid = 123的值在x和y中都匹配,然后合并为一条记录。如果它们不匹配,只需将其原样带过来。 我想要的最终结果: 问题答案: 这是从元组中重新锁定:

  • 我最近在一个streams应用程序中遇到了一个以前没有遇到过的问题,它很难跟踪与键控/连接相关的问题(以及更新后的分区问题)。 我有两个主题(raw_events和processed_users),这两个主题的密钥相同,但是当我试图对这两个主题执行连接时,尽管密钥相同,但只有一些连接是成功的。 为简洁起见,应用程序的基本工作流程如下: null 问题本身是在步骤5中产生的。由于主题和主题之间的连接

  • 这将产生以下结果 我所感兴趣的实际上只是上面结果中的列表,我希望理想地将其作为groupby操作的一部分来完成。我知道这是可以做到的,例如,通过循环结果映射结构。但是有没有一种方法可以使用流来实现它呢?

  • 问题内容: 我想在不需要时禁用它,因为我不喜欢焦点放在导航上时的外观。它使用与相同的样式并且令人困惑。但是我不想为使用键盘的人摆脱它。 我当时想在按Tab时在正文上添加一个类,然后添加一个类,但这将为每个具有焦点的元素添加很多额外的CSS。然后,首先将鼠标从身体上移开该类。 我将如何处理?有更好的解决方案吗? 问题答案: 这种优良制品由罗马科马罗夫构成用于实现可行的解决方案 仅键盘聚焦样式 为 按

  • 问题内容: 我试图在Flink中的KeyedStream上执行映射操作: JsonToObjectMapper运算符的输出是 MessageObject 类的POJO,它具有String字段“ keyfield ”。然后,将流键入此字段。 MessageProcessorStateful是一个RichMapFunction,如下所示: 该代码引发NullPointer异常: 尽管我已经验证了’ke