yangyang12138

导航

kafka(四)

1.副本机制

  副本本身只是一个分区的指代,即副本对象Replica都最终指向一个Partition。

  在一个分区的Leader副本中会维护自身以及所有follower副本的状态,follower副本只维护自己的状态,在leader中partition的副本分两种localReplica和RemoteReplica。

  RemoteReplica指向一个follower上的LocalReplica。

  核心字段:

    brokerId,partition:此副本对应的分区,log:本地副本的log对象。

  

 

2.分区

  核心字段:

    topic和partitionId:此Partition对象代表的topic名称和分区编号。

    localBrokerId:当前brokerId

    logManager:当前broker的logmanager

    leaderEpoch:leader副本的年代信息

    leaderReplicaIdOpt:该分区的leader副本的id

    inSyncReplicas:该分区的isr集合

    assignedReplicaMap:该分区的全部分区集合

  核心方法:

    获取Replica:getOrCreateReplica方法

    副本角色切换:makeLeader和makeFollower

    isr集合:maybeExpandIsr

    调用日志存储:appendMessageToLeader

    检测HW的位置:checkEnoughReplicasReachOffset

3.ReplicationManager

  主要负责分区的管理,分区内周期性任务的调度。

4.KafkaController

  主要负责协调各个broker之间的关系,broker的leader和follower状态都是controller在维护。主要功能

  选举leader,并维护当前broker的状态

  上下文信息,缓存了整个zookeeper的中整个集群的元信息

  维护与集群中其他broker的连接

  topic的管理

  分区和副本的状态管理

  zookeeper的监听器

  故障转移

  分区的负载均衡

  

 

posted on 2020-08-03 01:46  杨杨09265  阅读(82)  评论(0编辑  收藏  举报