总体图
时间轮
但task不在第一轮范围距离该任务的到期时间还有45ms,不能执行任务。我们将其重新提交到层级时间轮中,此时第一层时间轮跨度依然不够,但是第二层时间轮的跨度足够,该任务会被放到第二层时间轮第三个时间格中等待执行。如此往复几次,高层时间轮的任务会慢慢移动到低层时间轮上,最终任务到期执行。
SystemTimer是Kafka中的定时器实现,它在TimeWheel的基础上添加了执行到期任务、阻塞等待最近到 期任务的功能。 Kafka使用DelayedOperation抽象类表示延迟操作,它对TimeTask进行了扩展,除了有定时执行的功能,还提供了检测其他执行条件的功能。 DelayedOperationPurgatory是一个辅助类,提供了管理DelayedOperation以及处理到期DelayedOperation 的功能。
副本管理
副本分类
- “本地副本”是指副本对应的Log分配在当前的Broker上
- “远程副本”则是指副本对应的Log分配在其他的Broker上,在当前Broker上仅仅维护了副本的LEO等信息
Broker会根据KafkaController发送的LeaderAndISRRequest请求控制副本的Leader/Follower角色切换。副本新建后,当Follower副本的LEO追赶上Leader副本的LEO,此时该Follower副本就有资格进入ISR集合。
通过ReplicaManager管理一个Broker范围内的Partition信息
KafkaController
多个Broker中,有且只有一个 Broker会被选举为Controller Leader,负责管理整个集群中所有的分区和副本的状态; -当某分区的Leader副本出现故障时,由Controller负责为该分区重新选举新的Leader副本;
- 管理分区的重新分配
- 分区的ISR集合发生变化时,由Controller通知集群中所有的Broker更新其MetadataCache信息
属性清单(3.1)
https://download.csdn.net/download/weixin_40455124/84437007
|