主要是在zk的/brokers/[0...N] 路径上建立该Broker的信息,并且该节点是ZK中的Ephemeral Node,当此Broker离线的时候,zk上对应的节点也就消失了,那么其它Broker可以及时发现该Broker的异常。class KafkaHealthcheck(private val brokerId: Int, private val advertisedHost: String, private val advertisedPort: Int, private val zkSessionTimeoutMs: Int, private val zkClient: ZkClient) extends Logging { val brokerIdPath = ZkUtils.BrokerIdsPath + "/" + brokerId val sessionExpireListener = new SessionExpireListener def startup() { zkClient.subscribeStateChanges(sessionExpireListener) register() } def shutdown() { zkClient.unsubscribeStateChanges(sessionExpireListener) ZkUtils.deregisterBrokerInZk(zkClient, brokerId) } def register() { val advertisedHostName = if(advertisedHost == null || advertisedHost.trim.i
kafka源码解析之十三KafkaHealthcheck
最新推荐文章于 2022-03-17 12:11:52 发布