kafka 中 zookeeper 具体是做什么的?

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 的关系。

原文地址:https://www.cnblogs.com/yogoup/p/12000545.html

时间: 2024-07-31 15:56:39

kafka 中 zookeeper 具体是做什么的?的相关文章

ZooKeeper 并不适合做注册中心

zookeeper 的 CP 模型不适合注册中心 zookeeper 是一个非常优秀的项目,非常成熟,被大量的团队使用,但对于服务发现来讲,zookeeper 真的是一个错误的方案. 在 CAP 模型中,zookeeper 是 CP,意味着面对网络分区时,为了保持一致性,他是不可用的. 因为 zookeeper 是一个分布式协调系统,如果使用最终一致性(AP)的话,将是一个糟糕的设计,他的核心算法是 Zab,所有设计都是为了一致性. 对于协调系统,这是非常正确的,但是对于服务发现,可用性是第一位

apache kafka中server.properties配置文件参数说明

每个kafka broker中配置文件server.properties默认必须配置的属性如下: [java] view plaincopy broker.id=0 num.network.threads=2 num.io.threads=8 socket.send.buffer.bytes=1048576 socket.receive.buffer.bytes=1048576 socket.request.max.bytes=104857600 log.dirs=/tmp/kafka-logs

kafka中对于zookeeper的理解和leader选举过程

1. 首先zookeeper是什么 zookeeper是一个开放源代码的分布式应用程序协调服务,可以把它看成是整个集群的管理者,监视者. 2. zookeeper能做什么 它可以实现诸如分布式应用配置管理.统一命名服务.状态同步服务.集群管理等功能. 3. zookeeper服务与kafka集群的联系 这里首先说一下broker的概念:Kafka 集群包含一个或多个服务器,这种服务器被称为 broker,每个broker服务器都要连接到zk服务. 一个典型的kafka集群中包含若干个produc

CentOS 7.2 中 Kafka,Zookeeper的单机部署,伪分布式部署以及真正的分布式部署

由于kafka依赖于zookeeper,所以这里先安装zookeeper. 安装环境 先列一下安装环境: 操作系统:centos 7.2 JDK版本:1.8.1 kafka版本:2.11-0.10.1.1 zookeeper版本:zookeeper-3.4.9 zookeeper的下载.配置.启动 zookeeper下载链接: http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.9/ zookeeper的安装路径:/usr/local/

storm问题记录(1) python 不断向kafka中写消息,spout做为消费者从kafka中读消息并emit给bolt,但是部分消息没有得到bolt的处理

一.问题背景 Python 写的脚本,不断从txt文件中读取一行数据封装成消息,作为producer发给kafka, storm的spout从kafka中读取这些消息后做一些处理发送给bolt,bolt最后将数据按既定的格式写入到HBASE 二.问题描述 一共14000条左右的数据,加调试信息观察到spout把消息都读到处理并发射了,但是bolt中只处理了一部分(2000多条,还有一万条显然没有处理到),写入HBASE的也只有2000多条,即Bolt读到的那些 出问题时的最后的log: OLT

Kafka学习之路 (五)Kafka在zookeeper中的存储

当kafka启动的时候,就会向zookeeper里面注册一些信息,这些数据也称为Kafka的元数据信息. 一.Kafka在zookeeper中存储结构图 二.分析 根目录下的结构 服务端开启的情况下,进入客户端的命令:{zookeeper目录}/bin/zkCli.sh # {zookeeper目录}/bin/zkCli.sh [zk: localhost:2181(CONNECTED) 1] ls / [cluster, controller_epoch, controller, broker

使用kafka bin目录中的zookeeper-shell.sh来查看kafka在zookeeper中的配置

cd kafka_2.11-0.10.2.1\bin\windowsecho ls /brokers/ids |  zookeeper-shell.bat localhost:2181 使用kafka bin目录中的zookeeper-shell.sh来查看kafka在zookeeper中的配置. 连接zookeeper: bin/zookeeper-shell.sh 127.0.0.1:2181 https://my.oschina.net/tongyufu/blog/1806196 http

Kafka中Topic级别配置

一.Kafka中topic级别配置 1.Topic级别配置 配置topic级别参数时,相同(参数)属性topic级别会覆盖全局的,否则默认为全局配置属性值. 创建topic参数可以设置一个或多个--config "Property(属性)",下面是创建一个topic名称为"my-topic"例子,它设置了2个参数max message size 和 flush rate. (A)创建topic时配置参数 bin/kafka-topics.sh --zookeeper

kafka与zookeeper管理之kafka-manager踩坑小记

在elk集群搭建过程中,为了极大程度的利用服务器资源,kafka.zookeeper.logstash规划混跑在了同一组服务器上.随着业务量的增加,要频繁增加调整kafka的topic,出现问题时还要去服务器敲命令查看kafka和zookeeper的相关信息,效率低而且不方便,于是就考虑到用kafka的管理工具kafka-manager,安装配好后,整个集群的状态一目了然,而且可以方便的进行topic的操作.消费情况的查询.broker各种状态指标的查询等,非常方便,各种信息一目了然,安装配置过