热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

kafka利用zookeeper干了什么

Kafka与zk的关系及连接参数bootstrap.server的正确理解zk在kafka中的作用kafka消费组如上图所示,kafka的运行离不开zookeep

Kafka与zk的关系及连接参数bootstrap.server的正确理解

zk在kafka中的作用

kafka消费组

在这里插入图片描述
如上图所示,kafka的运行离不开zookeeper,主要在以下方面依赖zookeeper:

集群和生产者相关

1,集群管理,broker的动态上下线。

每个broker在启动成功后会在zookeeper建立临时节点,controller节点监听节点的变化,完成leader的重新选举和消费者的重新负载均衡。

broker上线前在zookeeper中查看:

[zk: localhost:2181(CONNECTED) 79] ls /brokers/ids
[]

broker上线后:

[zk: localhost:2181(CONNECTED) 80] ls /brokers/ids
[0, 1, 2]

保存这个各个broker的地址信息。

2,各个topic的分区信息

[zk: localhost:2181(CONNECTED) 70] get /brokers/topics/input-kafka
{"version":2,"partitions":{"2":[0,1,2],"1":[2,0,1],"0":[1,2,0]},"adding_replicas":{},"removing_replicas":{}}

如上,topic:input-kafka包括三个分区,每个分区有三个副本,还标明了每个分区所在broker信息,如分区“2”分别存放在三个不同的broker上:[0,1,2]

3,分区信息信息、leader信息、leader-follower同步组信息

topic的分区信息:

[zk: localhost:2181(CONNECTED) 82] ls /brokers/topics/input-kafka/partitions
[0, 1, 2]

各个分区的副本信息、leader、leader-follower同步组信息

[zk: localhost:2181(CONNECTED) 84] get /brokers/topics/input-kafka/partitions/0/state
{"controller_epoch":250,"leader":2,"version":1,"leader_epoch":46,"isr":[2,0,1]}
cZxid = 0xa200000110
ctime = Sat Jun 05 23:27:02 HKT 2021
mZxid = 0xb8000001c8
mtime = Fri Jun 25 18:36:08 HKT 2021
pZxid = 0xa200000110
cversion = 0
dataVersion = 76
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 79
numChildren = 0

  • “isr”:[2,0,1] 表示三个副本都是同步的,这里解释下同步的意思,因为是分布式,leader分片写入成功后,副本分片会从leader拉取数据,这中间会有时间延迟,默认是10s,在10s之后follower和leader仍然不同步,则会被溢出isr队列

  • 生产者会获取分区信息,拿到各个分区的leader信息,根据负载均衡策略向broker写入消息


消费者相关

注意,消费相关在kafka 0.9以前是保存在zookeeper中,0.9以后不再保存在zookeeper中了,kafka自己保存,可以用kafka tool工具查看。

1,消费进度

以消费者组为单位,统计消费者消费的进度,记录的是分区的偏移量。

0.9以前保存在zookeeper中,0.9以后保存在内建的topic:__consumer_offsets

Kafka 如何读取offset topic内容 (__consumer_offsets)

在这里插入图片描述

2,topic分区和消费组的关系

__consumer_offsets 中保存着消费者组、topic、topic分区和offset的信息。


推荐阅读
author-avatar
--多么哇噻的姑娘
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有