【问题标题】:Difference between Consumer level offset and Consumer group offset in KafkaKafka中消费者级别偏移和消费者组偏移之间的区别
【发布时间】:2020-06-11 22:08:39
【问题描述】:
试图了解消费者中的偏移量和消费者组的偏移量。
下面的堆栈溢出链接提供了对消费者组偏移管理的很好理解。
What determines Kafka consumer offset?
现在在这里提问,
场景:
我们在消费者组 group1 中有消费者 (c1)。
- 偏移值是否将存储在消费者 (c1) 和组 (group1) 两个级别?或者如果消费者将属于任何消费者组,偏移量将存储在仅消费者组级别?
- 如果将偏移值存储在两个级别中,那么消费者级别的偏移值是否会覆盖消费者组级别的偏移值。
示例
消费级偏移值 - 5
消费者组级偏移值 - 8
8点系统什么时候重启?
反向:
消费级偏移值 - 8
消费者组级别偏移值 - 5
系统什么时候从5重启?
【问题讨论】:
标签:
apache-kafka
kafka-consumer-api
【解决方案1】:
这取决于 Kafka consumer group management,如果使用 group.id 启用消费者组管理,偏移量将存储在消费者组级别,以便在重新平衡时新的消费者可以从偏移量中读取。
如果消费者组管理被禁用,偏移量存储在消费者下,如果用户不提供,默认group.id为空,因此没有机会在两个级别上存储偏移量
此版本中的偏移过期语义略有变化。根据新语义,组中的分区偏移量不会在组订阅相应主题并且仍处于活动状态(具有活动消费者)时被删除。如果组为空,其所有偏移量将在默认偏移保留期(或经纪人设置的保留期)过去后被删除(除非该组再次变为活动状态)。 与不使用 Kafka 组管理的独立(简单)消费者关联的偏移量将在自上次提交后经过默认偏移量保留期(或代理设置的保留期)后被删除。
group.id:
标识此消费者所属的消费者组的唯一字符串。如果消费者使用 subscribe(topic) 或基于 Kafka 的偏移管理来使用组管理功能,则此属性是必需的
战略。
Type: stringDefault: nullValid Values:Importance: high