资料内容:
基础概念
Broker
Server. 包含多个 Topic , Partition, 和 Replica. 负责协调 Producer 和 Consumer
主从结构为: 主节点为 Controller, 从节点为从节点 Kafka 启动是会往 Zookeeper 中注册当前
Broker 信息. 谁先注册谁就是 Controller. 读取注册上来的从节点的数据(通过监听机制), 生成集群
的元数据信息, 之后把这些信息都分发给其他的服务器, 让其他服务器能感知到集群中其它成员的
存在
Topic
标准 MQ 中的 Queue. Kafka 中一个 Topic 的消息会保存在不同的 Partition (不同的 Broker)来保
证高可用
Partition (分区)
可以理解为将标准 MQ 的 Queue 的消息进行拆分, 来实现高可用
Producer 发送的 Message, 根据 key 和 partition 数进行 hash, 然后进行投递
一个分区只能被同一个 Consumer Group 中的一个 Consumer 消费. 分区内消费有序
Replica (备份)
每一个 Partition 的备份. Replica 的小于等于 Broker 的数量
Leader: Replica领导节点, 每一个 Partition 都有对应的 Leader 节点(Broker). Producer 写数据
时, 只会往 Leader 中写. Consumer 读数据也是从 Leader 中读 Follower: Replica跟随节点, 用于
复制领导节点的数据. 复制 Leader 消息采用 pull (拉)模式
# Broker 设置副本数量 默认为 3
default.replication.factor
# Topic 设置副本数量
replication-factor
ISR (In-Sync Replica)
Leader维护一个与其基本保持同步的Replica列表, 每个Partition都会有一个ISR, 而且是由leader
动态维护. 如果一个flower比一个leader落后太多, 或者超过一定时间未发起数据复制请求, 则
leader将其重ISR中移除. 当ISR中所有Replica都向Leader发送ACK时, leader才commit
Leader 宕机之后, 会从 ISR 选择数据最新的 Follower 来当做 Leader 如果 ISR 全部宕机, 则选择第
一个回复的 Replica 当做 Leader 节点 (消息可能会丢失或者重复消费)