ZooKeeper为kafka做负载均衡

消息生产者:producer
消息消费者:consumer
主题:即Topic,由用户定义并配置在Kafka服务端,用于建立生产者和消费者之间的订阅关系:生产者发送消息到指定Topic下,消费者从这个Topic下消费消息。
Broker:即Kafka服务器,用于存储消息,在消息中间件中通常被称为Broker
消费者分组:Group
Offset:消息存储在Kafka的Broker上,消费者拉取消息数据的过程中需要知道消息在文件中的偏移量,这个偏移量就是所谓的Offset

ZooKeeper负责管理所有Broker服务器列表,并且建立了对应路径来对其进行管理/brokers/ids

每个Broker服务器在启动时,都会到ZooKeeper上进行注册,其节点路径为/broker/ids/[0...N]

Topic注册:Kafka当中,会将同一个Topic的消息分成多个区,分布到多个Broker上,这些分区信息和Broker的对应关系由ZooKeeper来维护

ZooKeeper负载均衡实现:
  • 每当一个Broker启动时,会首先完成Broker注册过程,在ZooKeeper的节点列表里保存Broker。
  • Kafka的生产者会对ZooKeeper上的“Broker的新增与减少”、“Topic的新增和减少”和“Broker和Topic关联关系的变化”等事件注册Watcher监听
  • 通过ZooKeeper的Watcher通知能够让生产者动态的获取Broker和Topic的变化情况
  • Kafka有消费者分组的概念,每个消费者分组包含了若干个消费者,每一条消息只会发送给分组内的一个消费者,不同消费者分组消费自己特定的Topic下面的消息,互不干扰
  • Kafka会为每个消费者分配全局唯一的Consumer ID,采用“Hostname:UUID”形式来表示
  • 每个消费者一旦确定了对一个消息分区的消费权利,ZooKeeper会将其Consumer ID写入到对应消息分区的临时节点上
  • 消费进度管理:Kafka需要定时地将分区消息的消费进度,即Offset记录到ZooKeeper上去

推荐阅读更多精彩内容

  • 姓名:周小蓬 16019110037 转载自:http://blog.csdn.net/YChenFeng/art...
    aeytifiw阅读 25,612评论 13 386
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 89,606评论 13 124
  • kafka的定义:是一个分布式消息系统,由LinkedIn使用Scala编写,用作LinkedIn的活动流(Act...
    时待吾阅读 3,708评论 1 15
  • 一、入门1、简介Kafka is a distributed,partitioned,replicated com...
    HxLiang阅读 2,067评论 0 8
  • Kafka入门经典教程-Kafka-about云开发 http://www.aboutyun.com/threa...
    葡萄喃喃呓语阅读 7,027评论 4 53