kafka学习笔记5-kafka中的角色

  学习kafka有一段时间了,但是对kafka架构中的各个角色以及起到的作用还是没有一个比较清晰的脉络,专门找了点时间把现在接触到的各个角色及其作用作一个简单的梳理,后续随着更加深入的学习再进一步进行完善。
  各个角色和角色之间的关系如下图所示:

  从上图我们可以看到kafka主要由zookeeper,生产者,broker(也就是kafka实例),消费者还有消费者群组。broker还会承担不同的职责,下面一一进行介绍。
zookeeper: 用来保存kafka集群的元数据信息并选择kafka集群中的一个broker作为kafka集群的控制器。同时zookeeper会检测各个broker的心跳,判断其是否存活,当有broker挂掉或有新的broker加入时通知kafka集群中的其他broker。

生产者: 产生消息并发送到kafka集群中。

broker: 一个broker就是一个kafka实例,每一个broker上都运行着一个kafka程序。同时每一个broker有可能承担着以下角色

  1. 控制器: 用于管理kafka集群,当集群中有broker退出时如果该broker上有分区的leader,就会对该分区重新选择分区leader并通知该分区的其他副本。加入kafka集群的第一个broker会成为控制器,如果控制器挂掉,会重新选择新的broker作为控制器。
  2. 群组协调器: 用于维持消费者群组和消费者的从属关系,当有新的消费者加入群组或从群组中移除时,会触发消费者群组的再均衡(重新分配分区和消费者对应关系)从而实现消费者群组的动态伸缩。
  3. 分区leader: 每个topic的分区都会有一个broker充当分区leader,针对该分区的所有生产和消费都是通过分区leader完成,分区leader再将状态同步到其他副本

消费者群组和消费者: 每个消费者都隶属于一个消费者群组,每一个消费者群组中都有一个群主用于分配分区和对应的消费者。每一个消费者是实际消费信息的主体。

原文地址:https://www.cnblogs.com/Rostov/p/13601322.html