消费者消费过程解析
- cousumer 向boker 集群提交连接请求,返回 broker controller 的通信url
- consumer 指定要消费的topic 后, 向broker bontroller提交 消息请求
- broker controller 将consumer 分配一个或者多个 partition leader 。并且将对应的parittion的offset 发送给 consumer
- consumer 消费完消息后,消费者会向broker 发送一个消息被消费的反馈。也就是提交 该消息的offset
- 当broker 接收到 offset 后,会更新到对应的consumer_offset中
重复消费问题
当消费者消费能力较低 而引发了 消费超时的时候,就会形成重复消费。 当时间到达的时候,恰好有一个消息被消费掉了。但是没有提交offset
。就会出现重复消费的问题
将自动提交改成树洞提交。或者是延迟kafka的 提交时间
消费者提交offset
- 消费者的offset 具体存放到哪个partition中?
- 消费者都会随机生成一个消费者id 然后取hash。模50 得到一个下角标。存到对应的offset中。