学kafka之前必须先了解的结果角色,这里先简单介绍一下有哪些角色以及做什么用的。
- broker
即代表的一个kafka的server服务器。
- topic
kafka下的消息逻辑概念,可以看成众多的消息的集合。
- partition分区
一个topic先可以多个分区,不同的分区可以分别部署在broker中。
- Replica副本
同一个分区的不同副本保存相同的数据,副本之间是一主多从,Leader和Follower角色。Leader副本负责读写请求,Folower只与Leader副本消息同步。Leader副本出现故障后,则从Follower副本中选举Leader副本对外提供服务。可以通过提高副本数量,可以提高容灾能力。
- controller leader控制器组件
kafka的核心组件,由一个Broker担任,行使其管理和协调的职责。它的主要作用是在 Apache ZooKeeper 的帮助下管理和协调整个 Kafka 集群。(追踪集群中的其他Broker,处理新加入的和失败的Broker节点、Rebalance分区、分配新的分区leader,创建、删除主题的功能)
- partition leader
因为一个分区会有多个副本,所以要选举出来谁作为分区的leader来对外提供服务。
ISR、OSR、AR、LW、HW、LEO
* ISR (IN-SYNC replicas) 指符合副本的概念的follower分区
* OSR (OUT-SYNC replicas) 指不符合副本概念的follower分区
* AR = ISR + OSR 指所有存活的分区
* LW (LOW water) 低水位 指在AR broker节点中所有拥有的最小的logStartOffset值
* HW (High water) 高水位 指在AR节点中可以对外提供的offset。
* LEO (log end offset) 当前broker节点的最新的一个offset节点。