Kafka消费者跟踪它在每个分区消费的最大偏移量,并且能够提交偏移量,以便在重新启动的时候可以从这些偏移量中恢复。Kafka提供了在指定broker(针对该组)中将给定消费者组的所有偏移量存储为group coordinator的选项。即,改消费者组中的任何消费者实例应将其偏移量提交和提取发送给该group coordinator。消费者可以通过任何Kafka broker发出FindCoordinatorRequest并读取包含包含协调器详细信息的FindCoordinatorResponse来查找其协调器。然后,消费者可以继续从coordinator broker处理提交或者获取偏移量。在coordinator 移动的情况下,消费者需要重新发现coordinator。偏移调教可以由消费者实例自动或手动完成。
当组协调器收到OffsetCommitRequest时,它会将请求附加到名为__consumer_offsets的特殊的压缩的Kafka主题中。仅在偏移主题的所有副本都接收到偏移量后,代理才会向消费者发送成功的偏移提交响应。如果偏移量在可配置的超时时间内无法复制,则偏移提交将失败,并且消费者可以在回滚后重试提交。代理定期压缩偏移主题,因为它只需要维护每个分区的最新提交的便宜。协调器还将偏移缓存在内存表中,以便提供快速的偏移提取。