1、Producer
生产者,即数据的发布者,该角色将数据发布到Kafka的Topic中。Broker接受到生产者发送的数据后,会将该消息追加到当前的segment文件中。生产者发布的消息,将被存储在一个partition中,同时,生产者也可以指定要存储数据的partition。
2、Consumer
消费者,消费者可以从Broker中读取数据。消费者可以消费多个topic的数据,但是同一个消费组内的消费者同一时间只能消费一个partition中的数据。
3、Topic
在Kafka中,使用Topic来划分数据的所属,划分数据的这个类被称为Topic。可以将topic理解为数据库内的一张表。
4、Partition
一个Topic内的数据可以分割为一个或多个partition,每个topic内最少含有一个partition,每个partition内的数据使用多个segment文件来存储。在一个Topic内,Kafka保证partition内数据有序(生产时序),但是不保证多个partition间的数据有序。因此,如果业务场景要求保证严格消费顺序的情况下,此时partition数量应为1。
5、Partition Offset
Partition内的每条消息都有一个当前Partition下唯一的64字节的offset信息,指明该条消息的偏移位置。
6、Replication
副本是基于partition存在的,只用来备份和容灾,不会被消费者所消费。即消费者不会从followr的partition中消费数据,只会从leader的partition中消费。副本是一主多从的关系。
7、Broker
Broker即Kafka的物理节点。Broker用于存储实际的消息数据。通常情况下,多partition的topic,每个partition将会对应一台Broker。因此,不建议partition的数量超过broker的数量。
8、Leader和Follower
如果一个partition拥有多个replication,那么这些replication中有且仅有一个作为Leader(主),该角色用于消费者的消费,其他replcation作为Follower,这些角色仅用于备份和容灾,消费者不可消费。
9、Zookeeper
Zookeeper在Kafka集群中负责维护和协调Broker的状态。
10、AR(Assigned Replication)
分区内的所有副本统称为AR。
11、ISR(In-Sync Replication)
所有与Leader保持一致的副本(包括Leader在内)组成ISR。
12、OSR(Out-of-Sync Replication)
未能与Leader保持一致的滞后过多的副本的统称。
13、HW(Hight Watermark)
高水位标识,标识了一个特定的offset,消费者只能拉取该offset之前的数据。用于保证数据的一致性。
14、LEO(Log End Offset)
即日志的末端位移,记录了该副本底层日志中的吓一条数据的位移值。例如某副本内保存了10条消息,那么该LEO值为10,位移范围为[0,9]。