zookeeper 是 kafka 不可分割的一部分,可见其重要程度,所以我们有必要了解一下 zookeeper 在 kafka 中的具体工作内容。

而且,这也是面试时经常问的。

zookeeper 存储了一些关于 consumer 和 broker 的信息,那么就从这两方面说明 zookeeper 的作用。

1. broker

  • 状态

zookeeper 记录了所有 broker 的存活状态,broker 会向 zookeeper 发送心跳请求来上报自己的状态。

zookeeper 维护了一个正在运行并且属于集群的 broker 列表。

  • 控制器选举

kafka 集群中有多个 broker,其中有一个会被选举为控制器。

控制器负责管理整个集群所有分区和副本的状态,例如某个分区的 leader 故障了,控制器会选举新的 leader。

从多个 broker 中选出控制器,这个工作就是 zookeeper 负责的。

  • 限额权限

kafka 允许一些 client 有不同的生产和消费的限额。

这些限额配置信息是保存在 zookeeper 里面的。

所有 topic 的访问控制信息也是由 zookeeper 维护的。

  • 记录 ISR

ISR(in-sync replica) 是 partition 的一组同步集合,就是所有 follower 里面同步最积极的那部分。

一条消息只有被 ISR 中的成员都接收到,才被视为“已同步”状态。

只有处于 ISR 集合中的副本才有资格被选举为 leader。

zookeeper 记录着 ISR 的信息,而且是实时更新的,只要发现其中有成员不正常,马上移除。

  • node 和 topic 注册

zookeeper 保存了所有 node 和 topic 的注册信息,可以方便的找到每个 broker 持有哪些 topic。

node 和 topic 在 zookeeper 中是以临时节点的形式存在的,只要与 zookeeper 的 session 一关闭,他们的信息就没有了。

  • topic 配置

zookeeper 保存了 topic 相关配置,例如 topic 列表、每个 topic 的 partition 数量、副本的位置等等。

2. consumer

  • offset

kafka 老版本中,consumer 的消费偏移量是默认存储在 zookeeper 中的。

新版本中,这个工作由 kafka 自己做了,kafka 专门做了一个 offset manager。

  • 注册

和 broker 一样,consumer 也需要注册。

consumer 会自动注册,注册的方式也是创建一个临时节点,consumer down 了之后就会自动销毁。

  • 分区注册

kafka 的每个 partition 只能被消费组中的一个 consumer 消费,kafka 必须知道所有 partition 与 consumer 的关系。

最新文章

  1. 从零开始用gulp
  2. spring注解scheduled实现定时任务
  3. UITextField中文搜索
  4. TCP与UDP的不同接包处理方式
  5. R之pryr
  6. java socket编程基础
  7. rpm包的管理
  8. 未能加载文件或程序集“Report.Basic”或它的某一个依赖项。试图加载格式不正确的程序
  9. oracle一些函数
  10. hdu1358Period
  11. Openlayer 3 最简单的弹出框
  12. NSConditionLock
  13. time.setToNow() 取当前时间,月份有误
  14. 简易RPC框架-过滤器机制
  15. staticmethod、classmethod的使用
  16. 微信小程序保存图片到相册
  17. angular.lowercase()
  18. jquery.validator 手机号验证
  19. LeetCode刷题:第七题 整数翻转 第九题 回文数
  20. Jdk1.6编译,1.7执行,1.7中没有需要的类,为何不会报错

热门文章

  1. 51nod 挑剔的美食家
  2. HDU - 5015 233 Matrix (矩阵快速幂)
  3. HDU - 3530 Subsequence (单调队列)
  4. http://mirror2.openwrt.org/sources/
  5. 29(30).socket网络基础
  6. spring-redis-session 自定义 key 和过期时间
  7. java中把某个字符串中的单引号替换成双引号
  8. TCP/IP||UDP广播和多播
  9. SQL MAX()函数处理字符型字段
  10. HBase学习笔记(一)——基础入门