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

Kafka会允许“无平衡”分区吗?

殳俊晤
2023-03-14

系统设计中提出的一个问题是,如果消息键的选择方式在数据流中经常发生,这是否意味着只有一个主题分区将专门接收这些消息,即使这会在分区如何填充数据的方式上造成不平衡?

Kafka是否有一种机制可以在多个分区之间“拆分”具有相同键的消息,从而在这种情况下牺牲顺序?

或者键中没有例外 -


共有1个答案

仰雅昶
2023-03-14

要回答您在主题中的问题,答案是肯定的,kafka将允许不平衡的分区。

您可以定义自己的partioner类来决定将消息发送到的位置,在默认体系结构中,它使用murmur2算法来决定将每个密钥发送到何处,因此如果您的用例不需要在事件之间进行排序,则它将在同一分区中具有相同的密钥,您可能根本不需要发送密钥, 并且消息将分布在分区之间,在上次更新中,kafka“批处理”消息从生产者发送到同一分区,以具有更好的吞吐量...

为了说明这一点,Kafka并不要求你为一条信息发送一个密钥

 类似资料:
  • 当我们的kafka主题中有多个分区时,分区重新平衡是一件常见的事情吗? 这并不一定意味着我们的应用程序存在延迟或问题? 我一直看到分区被撤销和重新分配的日志。

  • 首先,很抱歉,如果我的术语不准确,我对Kafka很陌生,我已经尽可能多地读过了。我们有一个使用kafkastreams的服务,kafka版本:2.3.1。流应用程序具有一个流拓扑,该流拓扑从“topica”读取,执行转换并发布到另一个主题“topicb”,然后由拓扑的另一个流消费,并使用Ktable(localstore)聚合它。侦听器将ktable更改发布到另一个主题中。 主题有24个分区。我们

  • 在消费者之间重新平衡分区的代价有多大。我期待着每隔几秒钟就有一个新的消费者结束或加入同一个消费者群体。所以我只想知道一个再平衡操作的开销和延迟。 假设使用者C1具有分配给它的分区P1、P2、P3,并且它正在处理来自分区P1的消息M1。现在消费者C2加入了这个群体。C1和C2之间的分区是如何划分的。是否有可能拒绝C1的(可能需要一些时间将其消息提交给Kafka)对M1的提交,而M1将被视为一个新的消

  • 假设答案是,是的,Kafka不会再平衡,那么有什么解决方案可以让Kafka在各种情况下平衡

  • 我遇到了一件关于Kafka再平衡的奇怪事情。如果我增加某个主题的分区,而该主题是由一些java使用者(在同一个组中)订阅的,则不会发生使用者再平衡。在那之后,我试图通过启动一个新的消费者(或杀死一个消费者)来实现重新平衡,但在这个重新平衡中无法分配新增加的分区。我发现只有在停止所有使用者并启动它们之后,才能分配新分区。我不知道这是正常还是有任何解释。 下面是我在电脑上的测试: 1.启动Kafka,

  • 我对再平衡有些怀疑。现在,我正在手动将分区分配给使用者。因此,根据文件,如果消费者离开/崩溃在一个消费群体中,就不会有再平衡。 假设同一组中有3个分区和3个使用者,每个分区都是手动分配给每个使用者的。一段时间后,第三个消费者倒下了。既然没有再平衡,我可以采取什么措施来确保停机时间最小化?我是否需要更改前两个分区中任何一个的配置,以从第三个分区或其他分区开始使用?