producer 生产者 发送消息
consumer 消费者 消费消息(主动拉取)
broker (消息服务)
kafka 集群: 由多个broker 和 zookeeper (集群) 组成
producer: 发送消息到 broker 中 consumer从 broker 中主动拉取消息消费
topic:主题kafka中消息发送和消费 只有主题(topic)模式。每个消息都会按照主题归类,存储在各个broker中,而消费者会按照topic去消费消息
partition:分区(每个topic 有多个分区),partition会按照规则分布在各个broker 中,每个分区可以看做是一个可以追加的log文件,每次接受消息,都会按照规则分布在各个分区中,在文件末尾增加消息
(分区规则后续补充 分区扩容 后续补充)
如下 4个分区 每次新增消息都是在按照顺序增加的
消息在各个分区中是有顺序的 ,但是这个顺序不能夸分区。 消息分发是按照消息id分发的,相同的消息id会放在同一分区之中。
多副本机制:(多副本机制分配规则,lader宕机后选举策略 后续补充)
每个分区都会有多个副本(副本因子决定,在创建队列的时候确定参数,之后也可以分区扩容 和修改副本个数),如下 4个broker 3个分区 3个副本(1个lader 副本2个follower副本)
多副本机制用于 broker 宕机的时候 取代 lader副本 保证消息不丢失(能保证到什么程度,看配置 后续补充)
根据消息确认机制的设置,follower 副本会比lader 副本滞后一些,
offset消息偏移量:lader 副本中 最后一条消息的位置(每个分区都有 各自独立)
LEO:offset+1 下一条数据插入的位置(每个分区都有 各自独立)
HW: 消费者能拉取的最大offset的消息位置(lader 副本 和 follower 副本中 最小的LEO)