开发学院

您的位置:首页>教程>正文

教程正文

Apache Kafka 基础

  在深入Kafka之前,你必须了解主要的术语,如主题(Topic)、经纪人(Broker)、生产者(Producer)和消费者(Consumer)。下图说明了主要术语,表格详细描述了图表组件。

001.jpg

  在上图中,一个主题被配置为三个分区。分区1有两个偏移因子0和1。分区2有四个偏移因子0、1、2和3。分区3有一个偏移因子0。副本的id与承载它的服务器的id相同。

  假设,如果主题的复制因子设置为3,那么Kafka将为每个分区创建3个完全相同的副本,并将它们放在集群中,以供其所有操作使用。为了平衡集群中的负载,每个代理存储一个或多个分区。多个生产者和消费者可以同时发布和检索消息。

组件和描述

主题(Topic)

  属于特定类别的消息流称为主题。数据存储在主题中。

  主题被分成多个分区。对于每一个话题,Kafka都对一个分区保持最小化。每个这样的分区包含不可变有序序列的消息。分区被实现为一组大小相等的段文件。

分区(Partition)

  主题可能有许多分区,因此它可以处理任意数量的数据。

分区偏移量

  每个分区的消息都有一个唯一的序列id,称为偏移量。

分区副本

  副本只不过是分区的备份。副本绝不是读写数据。它们用于防止数据丢失。

经纪人(Broker)

  经纪人是负责维护发布数据的系统。每个代理的每个主题可能有零个或多个分区。假设,如果一个主题中有N个分区和N个代理,每个代理将有一个分区。

  假设一个主题中有N个分区和超过N个代理(n + m),第一个N个代理将有一个分区,下一个M个代理将没有该特定主题的任何分区。

  假设一个主题中有N个分区,并且少于N个代理(n-m),那么每个代理之间将有一个或多个分区共享。由于代理之间的负载分配不平等,因此不建议使用这种情况。

Kafka集群

  Kafka集群包含多个经纪人。Kafka集群可以在不停机的情况下扩展。这些集群用于管理消息数据的持久性和复制。

生产者(Producer)

  生产者是一个或多个Kafka主题的信息发布者。生产者向Kafka经纪人发送数据。每当生产者向代理发布消息时,代理只需将消息附加到最后一个段文件。实际上,消息将被附加到一个分区。生产者也可以向他们选择的分区发送消息。

消费者(Consumer)

  消费者从经纪人那里读取数据。消费者订阅一个或多个主题,并通过从代理获取数据来消费已发布的消息。 

Leader

  Leader是负责指定分区的节点的读写。每个分区都有一台服务器充当领导者。

Follower

  遵循Leader指令的节点称为Follower。如果Leader失败,其中一个Follower将自动成为新的Leader。Follower充当普通消费者,获取消息并更新自己的数据存储。