1 Producer

生产者:消息的发送一方,负责将消息投递到Kafka

2 Consumer

消费者:消息的接收一方,负责从Kafka中消费消息

3 Broker

服务代理节点:Broker可以看作Kafka的一个独立节点

4 Topic

主题:Kafka中的消费按主题为单为进行分类,生产者将消息发送到特定的主题,消费者订阅主题并进行消费

5 Partition

分区:主题是逻辑的概念,可以细分为多个分区,一个分区只能属于一个主题,分区在存储层面可以看成一个可追加的日志文件。如果一个主题仅对应一个文件,将产生I/O瓶颈,分成多个文件(分区)并将分区均匀的分布在多个Broker中,将可解决该问题

6 Offset

偏移量:消息被追加到分区日志文件(Log)后,会分配一个偏移量(offset),offset是消息在分区中的唯一标识,Kafka保证了分区消息的有序,但不保证主题中的消息有序。

7 Replica

副本:
Kafka通过多副本的机制提高了容灾能力,副本之间是一主多从的关系,其中leader副本负责处理读写请求,follwer负责与leader进行消息同步,副本处理不同的broker中,当leader副本出现故障,将从follower中重新选举产生新的leader。
同一分区的不同副本的消息内容是一致的,但是不保证同一时刻是完全一样,分区中所有的副本称为AR(Assigned Replicas),与Leader保持同步的副本称为ISR(In-Sync Replicas),与Leader同步滞后过多的副本称为OSR(Out-of-Sync Replicas),AR = ISR + OSR,Leader会负责维护副本的滞后状态,如果落后太多,会将ISR易到OSR,如果OSR跟上了,就将加入ISR,只有ISR的副本有资格参与Leader的选举

HW:
HW是High Watermark的缩写,俗称高水位,它标识了一个特定的消息偏移量,消费者只能拉取到这个offset之前的消息

LEO:
LEO是Log End Offset的缩写,它标识当前的日志文件下一条待写入消息的offset

分区中ISR集合中的每个副本都会维护自身的LEO,ISR集合中最小的LEO即为分区的HW,对消费者而言只能消费到HW之前的消息

image.png
图1:Producer向Leader副本写入3和4消息

image.png
图2:Leader副本写入3和4消息后,Follower副本进行消息同步

image.png
图3:Follower1同步了3和4,Follower2只同步了3,此时HW即为4(3+1)

image.png
图4:Follower2也同步成功了4,此时HW = LEO = 5 (4+1)