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

Kafka主题分区0未被使用

仇迪
2023-03-14

我创建了一个包含3个分区的主题

Topic:fixtures  PartitionCount:3    ReplicationFactor:1 Configs:
    Topic: fixtures Partition: 0    Leader: 0   Replicas: 0 Isr: 0
    Topic: fixtures Partition: 1    Leader: 0   Replicas: 0 Isr: 0
    Topic: fixtures Partition: 2    Leader: 0   Replicas: 0 Isr: 0

我使用Java制作人同步写入主题

producer.send(new ProducerRecord<>(KafkaProperties.TOPIC_FIXTURES, key, value)).get();

我有一个Java的用户订阅并阅读它

Consumer<String, String> kafkaConsumer = new KafkaConsumer<>(configs);
kafkaConsumer.subscribe(Collections.singletonList(KafkaProperties.TOPIC_FIXTURES));

我的键总是一组固定的3个不同的字符串(k1、k2、k3)。但是我的消息总是去分区1或分区2——k1和k2去分区1,k3去分区2。

为什么分区0未使用?

共有1个答案

子车飞文
2023-03-14

对于键控消息,默认分区程序根据键的哈希值计算分区。

对于许多密钥,使用密钥哈希是在分区之间均匀分布消息的有效方法。

但是如果您只有很少几个不同的键(或者如果键的数量接近分区的数量),则可能不会使用所有分区。

如果是这种情况,那么您可以使用partitioner.class配置将自己的分区程序提供给生产者,例如进行循环

 类似资料:
  • Kafka主题分区偏移位置始终从0或随机值开始,如何确保使用者记录是分区中的第一条记录?有没有办法找出答案?如果有的话,请让我知道。谢谢。

  • 简单问题: 假设我有一个具有3个分区的主题:Topic:StateEvents P1、P2和P3。 让我们假设生产者生成20条消息: 1, 2, 3, ..........20 我的问题是: 当制作人生成这些消息时: 1)每个消息将只在且仅在1个分区?也就是说,1在P1,2在P2,3在P3,然后4在P1,5在P2,6在P3,以此类推? 2)如果#1为真,当消费者订阅时,它将订阅所有分区,以便获得所

  • 通过Kafka文档和各种其他资源,我了解到Kafka中的消息被组织成主题。此外,主题可以分解为多个分区,每个分区可以托管在不同的服务器上。这提供了冗余和可伸缩性。 我不确定这里的“破碎”这个词是什么意思。这是否意味着,如果添加到主题的消息是,例如“1 2 3 4 5 6 7”,那么在将其分解为分区后,我们将有一个分区仅包含整个主题的子部分。就像一个分区有“1 2 3”,而另一个分区有“4 5 6”

  • null camel-kafka中是否有任何配置,我们可以使用它来增加kafka主题分区计数?

  • 我开始学习Kafka用于企业解决方案。 在我阅读的过程中,我脑海中浮现出一些问题: > 当一个生产者正在生成一个消息--它会指定它想要将消息发送到的主题,是这样吗?它关心分区吗? 当订阅服务器运行时-它是否指定其组id,以便它可以是同一主题的使用者集群的一部分,或者是该组使用者感兴趣的几个主题的一部分? 每个消费者组在代理上有一个对应的分区还是每个消费者都有一个? 分区是由代理创建的,因此不是消费

  • 我找不到任何可以添加到Kafka的与配置相关的更改