kafka的分区状态通过PartitionStateMachine来进行维护,下面通过源码来对这个类进行探究:
一 该类成员变量部分:
private val controllerContext = controller.controllerContext
private val controllerId = controller.config.brokerId
private val zkUtils = controllerContext.zkUtils
private val partitionState: mutable.Map[TopicAndPartition, PartitionState] = mutable.Map.empty
private val brokerRequestBatch = new ControllerBrokerRequestBatch(controller)
private val noOpPartitionLeaderSelector = new NoOpLeaderSelector(controllerContext)
private val stateChangeLogger = KafkaController.stateChangeLogger
this.logIdent = "[Partition state machine on Controller " + controllerId + "]: "
二
def startup() {
initializePartitionState()
triggerOnlinePartitionStateChange()
info("Started partition state machine with initial stat