热门标签 | 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的信息。


推荐阅读
  • ubuntu用sqoop将数据从hive导入mysql时,命令: ... [详细]
  • 本文介绍了在Linux下安装和配置Kafka的方法,包括安装JDK、下载和解压Kafka、配置Kafka的参数,以及配置Kafka的日志目录、服务器IP和日志存放路径等。同时还提供了单机配置部署的方法和zookeeper地址和端口的配置。通过实操成功的案例,帮助读者快速完成Kafka的安装和配置。 ... [详细]
  • 本文介绍了在iOS开发中使用UITextField实现字符限制的方法,包括利用代理方法和使用BNTextField-Limit库的实现策略。通过这些方法,开发者可以方便地限制UITextField的字符个数和输入规则。 ... [详细]
  • wpf+mvvm代码组织结构及实现方式
    本文介绍了wpf+mvvm代码组织结构的由来和实现方式。作者回顾了自己大学时期接触wpf开发和mvvm模式的经历,认为mvvm模式使得开发更加专注于业务且高效。与此同时,作者指出mvvm模式相较于mvc模式的优势。文章还提到了当没有mvvm时处理数据和UI交互的例子,以及前后端分离和组件化的概念。作者希望能够只关注原始数据结构,将数据交给UI自行改变,从而解放劳动力,避免加班。 ... [详细]
  • 本文总结了初学者在使用dubbo设计架构过程中遇到的问题,并提供了相应的解决方法。问题包括传输字节流限制、分布式事务、序列化、多点部署、zk端口冲突、服务失败请求3次机制以及启动时检查。通过解决这些问题,初学者能够更好地理解和应用dubbo设计架构。 ... [详细]
  • 本文讨论了在使用Git进行版本控制时,如何提供类似CVS中自动增加版本号的功能。作者介绍了Git中的其他版本表示方式,如git describe命令,并提供了使用这些表示方式来确定文件更新情况的示例。此外,文章还介绍了启用$Id:$功能的方法,并讨论了一些开发者在使用Git时的需求和使用场景。 ... [详细]
  • 云原生应用最佳开发实践之十二原则(12factor)
    目录简介一、基准代码二、依赖三、配置四、后端配置五、构建、发布、运行六、进程七、端口绑定八、并发九、易处理十、开发与线上环境等价十一、日志十二、进程管理当 ... [详细]
  • 本文介绍了一个Magento模块,其主要功能是实现前台用户利用表单给管理员发送邮件。通过阅读该模块的代码,可以了解到一些有关Magento的细节,例如如何获取系统标签id、如何使用Magento默认的提示信息以及如何使用smtp服务等。文章还提到了安装SMTP Pro插件的方法,并给出了前台页面的代码示例。 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • 本文介绍了一个题目的解法,通过二分答案来解决问题,但困难在于如何进行检查。文章提供了一种逃逸方式,通过移动最慢的宿管来锁门时跑到更居中的位置,从而使所有合格的寝室都居中。文章还提到可以分开判断两边的情况,并使用前缀和的方式来求出在任意时刻能够到达宿管即将锁门的寝室的人数。最后,文章提到可以改成O(n)的直接枚举来解决问题。 ... [详细]
  • 本文详细介绍了如何使用MySQL来显示SQL语句的执行时间,并通过MySQL Query Profiler获取CPU和内存使用量以及系统锁和表锁的时间。同时介绍了效能分析的三种方法:瓶颈分析、工作负载分析和基于比率的分析。 ... [详细]
  • Ihavethefollowingonhtml我在html上有以下内容<html><head><scriptsrc..3003_Tes ... [详细]
  • 如何在php文件中添加图片?
    本文详细解答了如何在php文件中添加图片的问题,包括插入图片的代码、使用PHPword在载入模板中插入图片的方法,以及使用gd库生成不同类型的图像文件的示例。同时还介绍了如何生成一个正方形文件的步骤。希望对大家有所帮助。 ... [详细]
  • 本文介绍了Java后台Jsonp处理方法及其应用场景。首先解释了Jsonp是一个非官方的协议,它允许在服务器端通过Script tags返回至客户端,并通过javascript callback的形式实现跨域访问。然后介绍了JSON系统开发方法,它是一种面向数据结构的分析和设计方法,以活动为中心,将一连串的活动顺序组合成一个完整的工作进程。接着给出了一个客户端示例代码,使用了jQuery的ajax方法请求一个Jsonp数据。 ... [详细]
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社区 版权所有