优雅刺客 2023-06-26 15:11 采纳率: 81.8%
浏览 16
已结题

kafka partition分区数据读取的问题

请教,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条)

报告相同问题?

问题事件

  • 系统已结题 7月4日
  • 已采纳回答 6月26日
  • 创建了问题 6月26日