kafka和ZK的关系

zk相当于是kafka的一个基础设施

Kafka是一种高吞吐量、可扩展的分布式发布订阅消息系统,ZooKeeper是一个分布式协调服务,用于管理和协调分布式系统中的各种资源

Zookeeper:管理broker,consumer

创建broker后,向zk注册新的broker信息,以及监测 partition  leader存活性,实现在服务器正常运行下的水平拓展,Topic的注册,zk会维护broker与topic的关系,通过/brokers/topics/topic.name节点来记录

Consumer可以使用group形式消费kafka中的数据,Zookeeper会给每个consumer group一个ID,即同一份数据可以被不同的用户ID多次消费。因此这就是单播与多播的实现。以单个消费者还是以组别的方式去消费数据,由用户自己去定义。Zookeeper管理consumer的offset跟踪当前消费的offset。

Zookeepr不管理producer

只是能够提供当前broker的相关信息,Producer向zookeeper中注册watcher,了解topic的partition的消息,以动态了解运行情况,实现负载均衡

具体而言,Kafka使用ZooKeeper来进行以下操作:

    协调管理:Kafka集群中的各个节点通过ZooKeeper来协调任务分配、负载均衡和故障恢复等操作。ZooKeeper充当了Kafka集群的协调者,确保集群的稳定运行。

    元数据存储:Kafka使用ZooKeeper来存储和管理关于主题(topics)、分区(partitions)和消费者(consumers)等元数据的信息。这些元数据包括主题的分区分配、分区的偏移量(offset)以及消费者组的成员关系等。

    服务发现:Kafka生产者和消费者在连接到Kafka集群时需要知道正确的Broker地址。ZooKeeper提供了服务发现功能,允许客户端动态地发现可用的Kafka Broker。

  • Broker 的上线、下线处理;
  • 新创建的 topic 或已有 topic 的分区扩容,处理分区副本的分配、leader选举;
  • 管理所有副本的状态机和分区的状态机,处理状态机的变化事件;
  • topic删除、副本迁移、leader切换等处理

总之,ZooKeeper在Kafka中充当了协调和元数据管理的角色,为Kafka提供了可靠性和高可用性的支持。Kafka依赖于ZooKeeper来保证集群的稳定运行,并利用其提供的功能来管理分布式系统中的各种资源

kafka使用zookeeper来实现动态的集群扩展,不需要更改客户端(producer和consumer)的配置。broker会在zookeeper注册并保持相关的元数据(topic,partition信息等)更新。而客户端会在zookeeper上注册相关的watcher。一旦zookeeper发生变化,客户端能及时感知并作出相应调整。这样就保证了添加或去除broker时,各broker间仍能自动实现负载均衡。这里的客户端指的是Kafka的消息生产端(Producer)和消息消费端(Consumer)
          

相关推荐

  1. Kafka中groupidauto.offset.reset关系

    2024-02-23 11:48:02       13 阅读
  2. ZKETCD产品对比差异

    2024-02-23 11:48:02       38 阅读
  3. 超实用Kafka集群搭建(有zk版)

    2024-02-23 11:48:02       48 阅读
  4. is==关系

    2024-02-23 11:48:02       9 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-02-23 11:48:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-23 11:48:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-23 11:48:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-23 11:48:02       18 阅读

热门阅读

  1. IP设置教程

    2024-02-23 11:48:02       32 阅读
  2. 我努力

    2024-02-23 11:48:02       23 阅读
  3. 10 个 Linux 中超方便的 Bash 别名

    2024-02-23 11:48:02       27 阅读
  4. 10.docker exec -it /bin/bash报错解决、sh与bash区别

    2024-02-23 11:48:02       23 阅读
  5. docker-集成测试搭建

    2024-02-23 11:48:02       28 阅读
  6. #LLM入门|Prompt#1.9_总结_Summary

    2024-02-23 11:48:02       22 阅读