本节介绍kafka的组成部分的基本概念。单个kafka节点主要包括3个模块,producer,topic,consumer,其中把topic划分为多个分区partition组成。
在分布式kafka集群中,每个节点称之为broker,每个broker又由多个partition组成。
下面介绍kafka中几个重要的概念帮助理解kafka的工作原理。
producer 生产者
在kafka中,producer是生产者,它是向kafka中发送消息的角色,用于消息的写入。
consumer 消费者
它是消息队列消费的一方,用于消息的读取。
topic 主题
topic被称为主题,topic是一个逻辑上的概念,它是对消息进行逻辑上的分类,它像数据库中的一张表。组成topic的partition是物理上的概念。
partition 分区
partition是组成topic的分区或者称为数据段segment,1个topic可以由多个partition组成,partition也可以存储在不同的broker中。
partition 是最小的存储单元,每个 partition 都是一个单独的 log 文件,每条记录都以追加的形式写入。
不同的partition分区中的消息是无序的,同一个partition分区是有序的。
offset 偏移量
在partition分区中,每条消息记录都由一个id号来标记且是有序的,它就是offset。
offset用于解决消费者上次读取的位置记录。比如消费者因为某种故障宕机,只需要从offset处开始读取即可。
replication 副本
replication 副本 就是对每个分区的备份,一个分区可以有多个副本,分布在不同的broker中。提供数据冗余防止机器故障宕机引起的数据丢失。
副本分为Leader 和 Follower,Kafka 生产者只会把数据发往 Leader, 然后 Follower 找 Leader 进行同步数据。副本的详情概念请参考 kafka副本机制和相关概念 。