kafka架构

本节介绍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。

kafka offset

offset用于解决消费者上次读取的位置记录。比如消费者因为某种故障宕机,只需要从offset处开始读取即可。

replication 副本

replication 副本 就是对每个分区的备份,一个分区可以有多个副本,分布在不同的broker中。提供数据冗余防止机器故障宕机引起的数据丢失。

副本分为Leader 和 Follower,Kafka 生产者只会把数据发往 Leader, 然后 Follower 找 Leader 进行同步数据。副本的详情概念请参考 kafka副本机制和相关概念 。