【发布时间】:2020-10-11 10:35:51
【问题描述】:
假设:
- Kakfa 消费者从其分配的分区 P 中读取消息 M
- 它与代理进行网络分区
- Kafka 检测到这一点并将 P 重新分配给另一台机器上的消费者。
- 网络分区已修复,第一个消费者尝试提交消息 M 的偏移量
第 4 步会抛出异常吗?是否有一项检查检测到第一个消费者不再被分配分区 P,因此不应为其提交偏移量?
【问题讨论】:
标签: apache-kafka kafka-consumer-api
假设:
第 4 步会抛出异常吗?是否有一项检查检测到第一个消费者不再被分配分区 P,因此不应为其提交偏移量?
【问题讨论】:
标签: apache-kafka kafka-consumer-api
在这种情况下,第一个消费者不能再提交offset。它分配的分区将被撤销,当它再次加入消费者组时,将触发重新平衡过程。所以答案是肯定的。
【讨论】:
https://cwiki.apache.org/confluence/display/KAFKA/A+Guide+To+The+Kafka+Protocol
给定消费者组的偏移量由称为组协调器的特定代理维护。即,消费者需要向该特定代理发出其偏移提交和获取请求
由于一个组协调员负责,它知道哪些消费者分配了分区,哪些消费者不再分配分区
当他们重新加入时,他们的待遇与加入消费组的全新消费者相同。他们将通过重新平衡获得一个或多个分区(这可能与他们上次读取的分区完全不同),consumer_offset 主题将告知他们从哪里开始读取。
【讨论】: