怎样建立网站目录结构,钟村免费建站公司,陕西省建设网三类人员,建设学习网站消费分区
资料来源于网络 消费者订阅的入口#xff1a;KafkaConsumer#subscribe 消费者消费的入口#xff1a;KafkaConsumer#poll 处理流程#xff1a; 对元数据重平衡处理#xff1a;KafkaConsumer#updateAssignmentMetadataIfNeeded 协调器的拉取处理#xff1a;onsum…消费分区
资料来源于网络 消费者订阅的入口KafkaConsumer#subscribe 消费者消费的入口KafkaConsumer#poll 处理流程 对元数据重平衡处理KafkaConsumer#updateAssignmentMetadataIfNeeded 协调器的拉取处理onsumerCoordinator#poll
执行已完成的【消费进度】提交请求的回调函数invokeCompletedOffsetCommitCallbacks()重平衡之前提交自己当前消费的信息 更新发送心跳相关的时间pollHeartbeat
确保消费者组活跃AbstractCoordinator#ensureActiveGroup 是否需要加入组joinGroupIfNeeded(timer); 发送入组请求initiateJoinGroup、AbstractCoordinator#sendJoinGroupRequest
处理入组响应JoinGroupResponseHandler 入组成功自己被选为分配分区的 leaderAbstractCoordinator#onJoinComplete 重新分配分区AbstractPartitionAssignor#performAssignmentAbstractPartitionAssignor.assign
拉取消息 拉取消息org.apache.kafka.clients.consumer.KafkaConsumer#pollForFetches 本地拉取fetcher.collectFetch() 远程拉取sendFetches();、client.poll 拦截返回interceptors.onConsume
重平衡
作用是让组内所有的消费者知道自己应该消费那个分区或者它可以不用消费分区或者消费多个分区都是由重平衡机制来保证的。 也就是相当于是消费者的管家给他派发消费那个分区的任务。 这下面这些时刻会触发
组员变化加入退出闪退主题数量变化主题分区数变化
要想实现消费者的重平衡势必要和broker进行通信在Kafka中是通过心跳机制来实现的平衡的步骤
JoinGroup 在发送请求的时候:
请求当broker 告诉broker我要消费那个主题并且协调器会收到以后会放入队列。 当所以的消费者都发送JoinGroup以后这个时候所有信息已经收集到协调者然后协调者来选一个leader。
协调者的响应 协调者会选一个leader一般是先发起JoinGroup的消费者这个时候协调器会告诉这个消费者去进行分区方案的生成。
SyncGroup 在发送请求的是时候有下面这两种情况 1 如果是leader 将分配好的方案给到协调器。 2 如果是非leader 只是要就协调者告诉自己应该消费那些分区。 协调者响应 告诉消费者消费那些分区 图片源于网络