分区重分配完整版
2021-12-11 11:52:12 0 举报
分区重分配完整版
作者其他创作
大纲/内容
校验leader是否存活并且创建日志文件
内存中标记topic,防止删除
释放对topic的标记
与leader通信,拉取数据
否
发送LeaderAndIsr请求给RS所在broker
分区重分配任务是否已完成
将分区重分配任务写入zk
校验数据及读取配置
根据副本是否同步,是否限速,是否到限速值来判断是否发送请求
发送FetchRequest给leader所在的broker同步数据
开始
结束
分区重分配客户端入口:ReassignPartitionsCommand
更新zk中broker下的限流配置
执行分区重分配脚本
将针对broker限流的配置写入zk
将针对topic有关的限流配置写入zk
状态机修改新加副本为NewReplica状态
服务端Controller所在的broker,执行kafka/controller/KafkaController.scala#processZkPartitionReassignment方法
是否有分区重分配任务
更新controllerContext数据
如果原leader在移除副本中,则重选leader
更新zk及元数据
校验request及分区的epoch
状态机修改新加副本为上线状态
处理fetchResponse,更新hw
是
内存及zk中写入需要添加及删除的副本
ReplicaFetcherThread
副本同步线程同步数据,入口为ReplicaFetcherThread#maybeFetch
校验数据,针对zk写入的重分配策略逐个处理
调用makeFollowers方法
0 条评论
下一页