美文网首页kafka
ZooKeeper为kafka做负载均衡

ZooKeeper为kafka做负载均衡

作者: bobcorbett | 来源:发表于2017-11-22 10:00 被阅读1553次

    消息生产者: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上去

    相关文章

      网友评论

        本文标题:ZooKeeper为kafka做负载均衡

        本文链接:https://www.haomeiwen.com/subject/fuhnvxtx.html