二-1, zookeeper在kafka集群中的作用

简单来说就是一句话. zk在kafka集群中主要是用来管理broker和consumer, 因为他们在zk上都真实的存了具体数据; 而Producer端直接连接broker,不在zk上存任何数据,只注册监听,监听broker和topic信息。
A: zk管理kafk集群的brokers, 主要是做了以下工作:
- broker的注册
- zk记录了kafka集群所有brokers的存活状态(在/brokers/ids 维护),broker会向zk发送心跳请求来上报自己的状态.
 
- 控制器选举
-  kafka集群有多个broker, 其中一个会被选举为控制器(在/controller中维护), 控制器负责 brokers的上下线, 管理整个集群所有分区和副本的状态, 如果某个分区的leader故障了, 控制器会选举出新的leader. 
-   
-  Leader的选举过程: 
- topic的注册和配置
-  zk(在/brokers节点下)存储了所有的topic的注册信息, 包括topic列表, 每个topic 的partition数量, 副本在哪一个broker(ISR)等等 
-   
-  同时,在zk的 /brokers/topics/主题/分区号路径下, 我们可以看到每个分区的leader以及这个分区的ISR.
-  ISR(in-sync replica) 是 partition 的一组同步集合,就是所有 follower 里面同步最积极的那部分。 
-  一条消息只有被 ISR 中的成员都接收到,才被视为“已同步”状态。 
-  只有处于 ISR 集合中的副本才有资格被选举为 leader。 
-  zookeeper 记录着 ISR 的信息,而且是实时更新的,只要发现其中有成员不正常,马上移除。**** 
B: zk管理kafka集群的消费者, 主要做了以下工作:
-  consumer的注册- 和brokers一样, consumer也需要注册, 它会自动注册, 方式也是创建一个临时间点, 当consumer down了之后就是自动销毁.
- 这个consumer节点的路径是维护在/consumers/消费者组-随机编号/ids
 
 
-  分区的注册- kafka的每个partition只能被某个消费者组的同一个consumer消费, kafka必须知道所有的partition与consumer的关系.
 
-  记录消费位置(offset)- kafka 老版本中,consumer 的消费偏移量是默认存储在 zookeeper 中的。新版本中,这个工作由 kafka 自己做了,kafka 专门做了一个 offset manager。
 
请结合 二, Kafka架构深入2.4.3 小节一起食用更佳.
 
                     
                    
                 
                    
                

 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号