上一篇我们聊完了kafka生产者,现在我们来聊一聊kafka中另一个重要的角色,kafka消费者。
- 消费者和消费者群组
kafka消费者分为消费者群组 和 消费者。每一个kafka消费者都隶属于一个kafka消费者群组。每个消费者群组可以对应一个或多个topic,每个topic内的分区只能对应消费者群组内的一个消费者,当消费者比topic中的分区数多时,多余的消费者不会接收topic中的信息。这种方式有利于系统的伸缩性。当消费者群组中的消费者数量发生变化时会触发消费者群组的再平衡,再平衡由每个消费者群组中第一个加入的消费者负责处理,他负责向群组中的其他消费者分配分区。每个消费者群组中的成员向一个指定的broker发送心跳,用于维持通信,该broker被称为群组协调器,不同的消费者群组可以由不同的群组协调器。 - offset
kafka中会记录每个topic分区中被消费的offset,该提交可以由系统自动完成,但这种方式并不是一个特别好的方法,相对来说最好由用户自己来进行控制提交offset的时机,一般是在消息被消费后进行提交,提交的方式可以选择使用同步或异步两种方式。kafka通过offset来记录消费者群组在topic分区上的读取进度。消费者可以提交指定的offset,同时也可以提交指定的offset。 - 反序列化
和消费者在发送消息前对消息进行序列化相对应的,消费者在接收到消息的时候需要对消息进行反序列化,把消息转化为程序能够处理的格式。