1、Broker注册
Broker是分布式部署并且相互之间相互独立,但是需要有一个注册系统能够将整个集群中的Broker管理起来,此时就使用到了Zookeeper。在Zookeeper上会有一个专门用来进行Broker服务器列表记录的节点:
/brokers/ids
每个Broker在启动时,都会到Zookeeper上进行注册,即到/brokers/ids下创建属于自己的节点,如/brokers/ids/[0...N]。
Kafka使用了全局唯一的数字来指代每个Broker服务器,不同的Broker必须使用不同的Broker ID进行注册,创建完节点后,每个Broker就会将自己的IP地址和端口信息记录到该节点中去。其中,Broker创建的节点类型是临时节点,一旦Broker宕机,则对应的临时节点也会被自动删除。
2、Topic注册
在Kafka中,同一个Topic的消息会被分成多个分区并将其分布在多个Broker上,这些分区信息及与Broker的对应关系也都是由Zookeeper在维护,由专门的节点来记录,如:
/brokers/topics
Kafka中每个Topic都会以/brokers/topics/[topic]的形式被记录,如/brokers/topics/login和/brokers/topics/search等。Broker服务器启动后,会到对应Topic节点(/brokers/topics)上注册自己的Broker ID并写入针对该Topic的分区总数,如/brokers/topics/login/3->2,这个节点表示Broker ID为3的一个Broker服务器,对于"login"这个Topic的消息,提供了2个分区进行消息存储,同样,这个分区节点也是临时节点。
3、生产者负载均衡
由于同一个Topic消息会被分区并将其分布在多个Broker上,因此,生产者需要将消息合理地发送到这些分布式的Broker上,那么如何实现生产者的负载均衡,Kafka支持传统的四层负载均衡,也支持Zookeeper方式实现负载均衡。
(1) 四层负载均衡,根据生产者的IP地址和端口来为其确定一个相关联的Broker。通常,一个生产者只会对应单个Broker,然后该生产者产生的消息都发往该Broker。这种方式逻辑简单,每个生产者不需要同其他系统建立额外的TCP连接,只需要和Broker维护单个TCP连接即可。但是,其无法做到真正的负载均衡,因为实际系统中的每个生产者产生的消息量及每个Broker的消息存储量都是不一样的,如果有些生产者产生的消息远多于其他生产者的话,那么会导致不同的Broker接收到的消息总数差异巨大,同时,生产者也无法实时感知到Broker的新增和删除。
(2) 使用Zookeeper进行负载均衡,由于每个Broker启动时,都会完成Broker注册过程,生产者会通过该节点的变化来动态地感知到Broker服务器列表的变更,这样就可以实现动态的负载均衡机制。
4、消费者负载均衡
与生产者类似,Kafka中的消费者同样需要进行负载均衡来实现多个消费者合理地从对应的Broker服务器上接收消息,每个消费者分组包含若干消费者,每条消息都只会发送给分组中的一个消费者,不同的消费者分组消费自己特定的Topic下面的消息,互不干扰。
5、消费分区与消费者的关系
对于每个消费者分组,Kafka都会为其分配一个全局唯一的Group ID,同一个消费者分组内部的所有消费者共享该ID。同时,Kafka为每个消费者分配一个Consumer ID,通常采用"Hostname:UUID"形式表示。在Kafka中,规定了每个消息分区有且只能同时有一个消费者进行消费,因此,需要在Zookeeper上记录消息分区与消费者之间的关系,每个消费者一旦确定了对一个消息分区的消费权力,需要将其Consumer ID 写入到对应消息分区的临时节点上,例如:
/consumers/[group_id]/owners/[topic]/[broker_id-partition_id]
其中,[broker_id-partition_id]就是一个消息分区的标识,节点内容就是该消费分区上消息消费者的Consumer ID。
6、消息消费进度Offset记录
在消费者对指定消息分区进行消息消费的过程中,需要定时地将分区消息的消费进度Offset记录到Zookeeper上,以便在该消费者进行重启或者其他消费者重新接管该消息分区的消息消费后,能够从之前的进度开始继续进行消息消费。Offset在Zookeeper中由一个专门节点进行记录,其节点路径为:
/consumers/[group_id]/offsets/[topic]/[broker_id-partition_id]
节点内容就是Offset的值。
7、消费者注册
消费者服务器在初始化启动时加入消费者分组的步骤如下
- 注册到消费者分组。每个消费者服务器启动时,都会到Zookeeper的指定节点下创建一个属于自己的消费者节点,例如/consumers/[group_id]/ids/[consumer_id],完成节点创建后,消费者就会将自己订阅的Topic信息写入该临时节点。
- 对消费者分组中的消费者的变化注册监听。每个消费者都需要关注所属消费者分组中其他消费者服务器的变化情况,即对/consumers/[group_id]/ids节点注册子节点变化的Watcher监听,一旦发现消费者新增或减少,就触发消费者的负载均衡。
- 对Broker服务器变化注册监听。消费者需要对/broker/ids/[0-N]中的节点进行监听,如果发现Broker服务器列表发生变化,那么就根据具体情况来决定是否需要进行消费者负载均衡。
- 进行消费者负载均衡。为了让同一个Topic下不同分区的消息尽量均衡地被多个消费者消费而进行消费者与消息分区分配的过程,通常,对于一个消费者分组,如果组内的消费者服务器发生变更或Broker服务器发生变更,会发出消费者负载均衡。
以下是kafka在zookeep中的详细存储结构图:
![]()
kafka在zookeep中的存结构
相关推荐
F5高可用HA配置详情
F5 HA详细配置
Kafka实战(一)搭建 ZooKeeper 环境
Zookeeper 集群搭建 最详细的实战
硬件测试之—纹波测试为什么不要使用接地夹子
示波器为什么不推荐使用接地夹
消息队列kafka及zookeeper机制
本文主要讲解kafka消息队列以及zookeeper的使用,讲解了zookeeper的部署、kafka的部署以及如何排查错误。讲解了kafka的工作原理以及特点、讲解了zookeeper的工作原理以及特点、
从零到一:Quartus II连接开发板实战,打通绘图、管脚分配、编译与下载全链路
本文详细介绍了使用Quartus II软件连接FPGA开发板并完成首个项目的全流程。从硬件连接到驱动安装,到绘制电路框图、精准分配管脚,再到编译设置与最终下载,手把手指导您打通从设计到硬件实现的完整链路,是FPGA初学者的实战入门指南。
Autosar中CAN信号传输的模块化解析与实战应用
本文深入解析了AUTOSAR架构下CAN信号传输的模块化流程,详细阐述了从应用层软件组件(SWC)到COM模块打包、PduR路由、CanIf硬件抽象直至Can Driver驱动的完整“流水线”。文章通过实战案例,重点说明了模块化设计如何实现解耦与可移植性,并提供了关键模块配置要点与调试技巧,旨在帮助开发者构建高可靠、实时的车载通信系统。
kafka以及zookeeper的搭建
11
【纯血鸿蒙】安装hdc工具
参考资料:
Kafka本机搭建、常用命令、以及Rest模式||Kafka在zookeeper中的注册关系
Kafka简单教程
Nvidia Jetson 编解码开发(3)解决H265解码报错“PPS id out of range”
基于之前的开发程序通过Jetson Xavier NX 硬编码的H265发出后,上位机断点播放发出来的H265码流,会报“PPS id out of range” 错误。
华为OD机试真题2025双机位C卷 Java&Go 实现【统计员工影响力分数】
华为OD机试真题2025双机位C卷 C语言 实现【统计员工影响力分数】假设你是大型科技公司的数据分析师,负责分析公司内部员工的社交网络。你需要编写一个函数来计算每个员工的影响力分数。影响力分数定义为该员工直接和间接影响的员工数量。 输入描述
kafka集群安装配置,外置zookeeper
一:准备工作: 1、集群划分: 2、安装包下载: Kafka安装包下载: Apache Kafka 将安装包放在:/home/KYJ/soft文件下面 Zookeeper安装包下载: http://zookeeper.apache.org 将安装包放在:/home/KYJ/soft文件下面 二:解压安装包 使用命令: tar -zxvf kafka_2.12-3.0.0.tgz tar -zxvf apache-zookeeper-3.7....
机器人轨迹规划——梯形速度轨迹(超详细)
机器人轨迹 这一系列轨迹教程将主要包括以下内容: 点到点轨迹(P2P) 五次多项式插值轨迹 三次多项式插值轨迹 梯形速度曲线轨迹 双S形速度曲线轨迹 多个自由度轨迹的时间同步 在线轨迹规划 多项式在线轨迹规划 梯形在线轨迹规划 双S形在线轨迹规划 非线性实时轨迹滤波 多点轨迹(Multi-point) 三次样条曲线(cubic spline) 贝赛尔曲线(Bezier Curve) B样条曲线(BSpline) 时间最优轨迹 三次样条时间最优轨迹 任意路径下的时间最优轨迹 时间
Zookeeper+kafka的应用及部署
Zookeeper+kafka的应用及部署
蓝牙模块HM-10手册
蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。
STM32F407中文手册
STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。
ZooKeeper在Hadoop和Kafka中的应用
ZooKeeper被越来越广泛地应用在大型分布式系统中,比如Hadoop、HBase和Kafka等。以下主要介绍一个ZooKeeper在Hadoop和Kafka中的应用。 01、Hadoop 1、ZooKeeper在Hadoop是什么作用? 在Hadoop中,ZooKeeper主要用于实现HA(High Availability),这部分逻辑主要集中在Hadoop Common的HA模块中,HDF...
锂电池充电器电路设计 里面有电路
锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。
Zookeeper在Kafka中的应用
Kafka介绍 Kafka的介绍可参考:http://blog.youkuaiyun.com/eric_sunah/article/details/44201711 Zookeeper在Kafka中的使用 从上面的介绍可以看出Kafka是一个分布式的消息系统,分布式主要体现在Producer,Broker,Consumer的分布式,下面章节主要讲解Zookeeper如何支持相关对
ET2012新版免狗免安装绿色软件
ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,
Zookeeper(66)Zookeeper在Kafka中的应用是什么?
Broker 发现:保存 Kafka 集群中所有 Broker 的信息。Topic 和分区管理:维护 Kafka 中所有 Topic 和分区的信息。消费者组协调:管理消费者组的成员信息和偏移量信息。控制器选举:选举 Kafka 集群中的控制器节点。通过以上方法,可以在 Kafka 中使用 Zookeeper 实现高效稳定的分布式协调和管理。根据实际情况和需求,选择适合你的实现方法并进行实施。
Zookeeper与Kafka集成与应用
1.背景介绍 Zookeeper和Kafka都是Apache基金会所开发的开源项目,它们在分布式系统中发挥着重要作用。Zookeeper是一个高性能的分布式协调服务,用于实现分布式应用中的一致性、可用性和原子性。Kafka是一个分布式流处理平台,用于构建实时数据流管道和流处理应用。在现代分布式系统中,Zookeeper和Kafka之间存在紧密的联系和互补性,它们可以共同解决分布式系统中的复杂问题...
Kafka在ZooKeeper中的应用
以下是kafka在zookeep中的详细存储结构图: 1.Broker注册 Kafka是一个分布式的消息系统。Kafka 集群包含一个或多个服务器,服务器节点称为broker。虽然Broker是分布式部署并且相互之间独立运行的,但是还需要一个注册系统能够将整个集群中的Broker服务器都管理起来。 在ZooKeeper上有一个专门用来进行Broker服务器列表记录的节点,下文中我们称之为“Broker节点”,其节点路径为/brokers/ids。 每个Broker服务器在启动时,都会到Zo.
【zookeeper、kafka部署及java项目应用实战】
小白快速入门kafka
ZooKeeper 在 Kafka 中的应用
Apache ZooKeeper 在 Apache Kafka 的架构中扮演着至关重要的角色。作为一个分布式协调服务,ZooKeeper 提供一致性和同步,确保 Kafka 集群的稳定性和高效运行。本文将深入探讨 ZooKeeper 在 Kafka 中的应用,并提供一个简单的 Java 代码示例来展示它们如何一起工作。
kafka依赖zookeeper原因解析及应用场景
kafka简介: kafka是一个发布订阅消息系统,由topic区分消息种类,每个topic中可以有多个partition,每个kafka集群有一个多个broker服务器组成,producer可以发布消息到kafka中,consumer可以消费kafka中的数据。kafka就是生产者和消费者中间的一个暂存区,可以保存一段时间的数据保证使用。 kafka+zookeeper zookeeper...
Apache kafka 中zookeeper 的应用
正如ZooKeeper用于分布式系统的协调和促进,Kafka使用ZooKeeper也是基于相同的原因。ZooKeeper用于管理、协调Kafka代理。每个Kafka代理都通过ZooKeeper协调其它Kafka代理。当Kafka系统中新增了代理或者某个代理故障失效时,ZooKeeper服务将通知生产者和消费者。生产者和消费者据此开始与其它代理协调工作。Kafka整体系统架构如图所示。 下
分布式应用之zookeeper集群+消息队列Kafka
Kafka 是一个分布式的基于发布/订阅模式的消息队列(MQ,Message Queue),主要应用于大数据领域的实时计算以及日志收集。
3022



被折叠的 条评论
为什么被折叠?



