-
生产者(Producer)
Producer 将消息发送到 Broker -
代理节点(Borker)
Broker 负责将收到的消息存储到磁盘中 -
消费者(Consumer)
Consumer 负责从 Broker 订阅并消费消息 -
主题(Topic)
用于消费者订阅主题进行消费操作 -
分区(Partition)
一个主题下可以划分为多个分区组成 -
偏移量(offset)
一般是在一个分区中对push进来的消息进行排序标记的一张方式,并且不能跨分区使用 -
leader副本分区 && follower副本分区
一个分区可以有多个副本,副本分为leader和follower副本,但有且只有一个leader副本,follower副本可以有多个,leader负责消息的读写操作,follower负责同步leader中的消息,每个副本都在不同的Borker中。 - AR:所有分区副本(AR=ISE+OSR)
-
ISE: 所有与leader副本保持一定程度同步的(包括leader副本)
当leader副本宕机后,zookeeper会在ISE中重新选举新的leader副本进行消息的读写 -
OSR:与 leader 副本同步滞后过多的副本(不包括 leader 副本)
当OSR中某些副本追赶上leader消息的同步后会进入ISR集合,那么就具有了竞选leader的资格 -
HW:高水位
一个特定的偏移量,消费者只能消费0到HW位置之间的消息,以自己的理解为就是leader副本中消息和与之关联的所有follower副本都存在的消息的下一个偏移量位置。 -
LEO
日志文件中下一条待写入的消息offset,相当于leader副本消息中下一条待写入的消息的位置。
当HW=LEO代表所有副本都同步完成。
Zookeeper 在kafka中的作用:
其中 ZooKeeper 是 Kafka 用来负责集群元数据的管理、控制器的选举等操作的
Borker,Topic,Partition之间的关系(个人理解):
一个Topic中可以包含多个Borker,一个Topic中划分为几个分区,一个分区可以有多个副本,每个副本在不同的Borker中
?? kafka单机版中只有一个Borker,上述Topic,Partition等那一般应该只适用在kafka集群中