请教,kafka设置的分区,消息分配到哪个分区是随机的,我如果读取一个分区的消息,不就没有意义了么。岂不是只能读取一个Topic的部分数据了?
2条回答 默认 最新
自由家 2023-06-26 15:14关注Kafka 中的 Partition 不是完全随机分配的,而是根据用户指定的 Partition Key 进行哈希分配。如果没有指定 Partition Key,默认会使用消息的 Key 进行哈希分配。换句话说,相同的 Partition Key 会被分配到同一个 Partition 中,这样同一个业务的数据就会被分配到同一组 Partition 中。
如果你需要指定读取某个 Partition 的消息,可以在消息的 offset 上设置。使用 Kafka 提供的 API,可以读取指定 Topic 的指定 Partition 的指定 Offset 到指定大小的消息。也可以使用 Kafka 提供的消费者组(Consumer Group),消费者组中的每个消费者可以负责消费一个或多个 Partition,并行消费同一个 Topic 的多个 Partition。这样,多个消费者一起消费一个 Topic 的不同 Partition,就可以读取到整个 Topic 的全部数据了。
本回答被题主选为最佳回答 , 对您是否有帮助呢?评论 打赏 举报解决 1无用