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

请添加图片描述

简单来说就是一句话. zk在kafka集群中主要是用来管理broker和consumer, 因为他们在zk上都真实的存了具体数据; 而Producer端直接连接broker,不在zk上存任何数据,只注册监听,监听broker和topic信息。

A: zk管理kafk集群的brokers, 主要是做了以下工作:

  1. broker的注册
  • zk记录了kafka集群所有brokers的存活状态(在/brokers/ids 维护),broker会向zk发送心跳请求来上报自己的状态.
  • 请添加图片描述
  1. 控制器选举
  • kafka集群有多个broker, 其中一个会被选举为控制器(在/controller中维护), 控制器负责 brokers的上下线, 管理整个集群所有分区和副本的状态, 如果某个分区的leader故障了, 控制器会选举出新的leader.

  • 请添加图片描述

  • Leader的选举过程:

    • 请添加图片描述
  1. 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集群的消费者, 主要做了以下工作:

  1. consumer的注册

    1. 和brokers一样, consumer也需要注册, 它会自动注册, 方式也是创建一个临时间点, 当consumer down了之后就是自动销毁.
    2. 这个consumer节点的路径是维护在/consumers/消费者组-随机编号/ids
    3. 请添加图片描述
  2. 分区的注册

    1. kafka的每个partition只能被某个消费者组的同一个consumer消费, kafka必须知道所有的partition与consumer的关系.
  3. 记录消费位置(offset)

    1. kafka 老版本中,consumer 的消费偏移量是默认存储在 zookeeper 中的。新版本中,这个工作由 kafka 自己做了,kafka 专门做了一个 offset manager。

请结合 二, Kafka架构深入2.4.3 小节一起食用更佳.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值