生产者(producer): 构造需要处理的信息, 并发给broker
消费者(consumer): 处理生产者构造的信息, 从broker中拉取需要处理的信息
经纪人(broker):kafka实例, 消息数据存放在broker中, 解耦生产者和消费者
主题(topic): 逻辑上的一个概念, 消息通过主题来分类
分区(partition): 主题可以细分为分区, 一个主题可以有多个分区, 但一个分区只属于一个主题. 同一主题的不同分区数据不一样(单指同一主题下的所有leader分支)
副本因子(replice-factor): 分区的总数量, 包括一个leader副本和若干个follower副本, 副本因子数量不要超过集群中broker的数量, 同一分区的副本不能存在于同一broker上.
高水位(HW): 标识分区内可拉取(消费)消息偏移量的最大值(不包含), HW的具体值取的是该分区所有副本HW的最小值, 消息同步时, 所有副本同步消息的进度可能不同.
偏移量(offset): 消息在分区内的唯一标识
LEO(log end offset):当前日志文件中,下一条待写入消息的offset
AR(assigned replicas): 分区中的所有副本 , AR=ISR+OSR
ISR(in-sync replicas): 与leader副本保持一定程度同步的副本(基本和leader副本的数据一致), 副本可能从ISR转换为OSR. leader副本挂掉后, 默认情况下只会从ISR中选举新的leader副本.
OSR(out-of-sync replicas): 与leader副本同步滞后过多的副本(和leader副本的数据差的比较多), 副本可能从OSR转换为ISR.
数据在broker, 主题, 分区,副本因子之间的流转关系. 配置信息:一个主题(T), 3个分区(P), 3个副本因子(R), 集群中共有3个broker(B)
假设:一个主题有三个分区, 每个分区又有3个副本(一个leader, 两个follower), 共9个副本会分配到这3个broker上, 且每个broker上的每个分区副本不重复. 当一条数据发往broker时,其流转顺序为: 找到数据所属的topic, 根据分配策略选出所属分区的leader副本并将该消息发给选中的leader副本, 该分区的其他follower副本同步消息leader副本中的消息.