【问题标题】:Kafka Topic PartitionKafka 主题分区
【发布时间】:2016-10-01 16:19:49
【问题描述】:

Kafka Topic Partition偏移位置总是从0或随机值开始,如何保证消费者记录是分区中的第一条记录?有什么办法可以查到吗?如果有请告诉我。谢谢。

【问题讨论】:

  • 您的具体疑问是什么?文档清楚地指出:“每个分区都是一个有序的 [...] 消息序列”(在 kafka.apache.org/documentation.html 上搜索“order”)。您是否不确定订单,或者您是否想在第二次或第三次开始时重新定位消费者?

标签: apache-kafka kafka-consumer-api


【解决方案1】:

是和不是。

当您开始一个新主题时,偏移量从零开始。根据您使用的 Kafka 版本,偏移量为

此外,旧的日志条目会被可配置的条件清除:

因此,如果旧消息被删除,第一个偏移量可能不为零。此外,如果您打开 log-compaction,可能会丢失一些偏移量。

在任何情况下,您始终可以安全地寻找任何偏移量,因为 Kafka 可以确定偏移量是否有效。对于无效偏移量,会自动前进到下一个有效偏移量。 因此,如果您寻求偏移零,您将始终获得存储的最旧消息。

【讨论】:

    【解决方案2】:

    是的,Kafka 偏移量从 0 开始,以完整记录的字节长度结束,然后下一条记录从那里开始选择偏移量。

    由于 Kafka 是分布式的,所以我们不能保证 Consumer 会以有序的方式获取数据。

    【讨论】:

    • 请阅读kafka.apache.org/documentation.html 以发现*Kafka 也比传统消息传递系统具有更强的排序保证。 * 如果我们谈论消息没有被排序,那么这不是由于分布,而是由于分区,我会说。
    • 当我们谈论消费者时,所有数据都没有必要以有序的方式到达目标。
    猜你喜欢
    • 2015-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-15
    • 2017-10-17
    • 2016-10-27
    • 2019-02-25
    相关资源
    最近更新 更多