大数据kafka玩转大数据

KafkaController分析1-选主和Failover

2017-01-11  本文已影响640人  扫帚的影子

选主

Kafkak中有多处涉及到选主和failover, 比如Controller, 比如Partition leader. 我们先来看下和选主有关的类;

LeaderElector

This trait defines a leader elector If the existing leader is dead, this class will handle automatic re-election and if it succeeds, it invokes the leader state change callback

trait LeaderElector extends Logging {
       def startup // 启动
       def amILeader : Boolean //标识是否为主
       def elect: Boolean //选主
       def close  //关闭
}

ZookeeperLeaderElector

def startup {
    inLock(controllerContext.controllerLock) {
      controllerContext.zkUtils.zkClient.subscribeDataChanges(electionPath, leaderChangeListener)
      elect
    }
  }
zookeeper_leader_elect.png
1. 临时节点数据发生变化handleDataChange: 如果改变前是leader, 改变后不是leader, 则回调onResigningAsLeader();
2. 临时节点被删除handleDataDeleted: 如果当前是leader, 则回调onResigningAsLeader()并同次调用elect开始抢占式选主;

KafkaController的选主与Failover

private val controllerElector = new ZookeeperLeaderElector(controllerContext, ZkUtils.ControllerPath, onControllerFailover,
    onControllerResignation, config.brokerId)
def startup() = {
    inLock(controllerContext.controllerLock) {
      info("Controller starting up")
      registerSessionExpirationListener()
      isRunning = true
      controllerElector.startup
      info("Controller startup complete")
    }
  }

其中
registerSessionExpirationListener() 注册zk连接的状态回调,处理SessionExpiration;
controllerElector.startup 开始选主和Failover;

This callback is invoked by the zookeeper leader elector on electing the current broker as the new controller.
It does the following things on the become-controller state change -
1. Register controller epoch changed listener
2. Increments the controller epoch
3. Initializes the controller's context object that holds cache objects for current topics, live brokers and leaders for all existing partitions.
4. Starts the controller's channel manager
5. Starts the replica state machine
6. Starts the partition state machine

KafkaController分析2-NetworkClient分析
Kafka源码分析-汇总
上一篇 下一篇

猜你喜欢

热点阅读