Kafka 详解 | 青训营笔记
这是我参与「第四届青训营 」笔记创作活动的的第14天
消息队列概述
1. 消息队列应用场景
1.1 MQ 消息通道:
1.2 EventBridge 事件总线:
-
事件源:将云服务、自定义应用、SaaS应用等应用程序产生的事件消息发布到事件集。
-
事件集:存储接收到的事件消息,并根据事件规则将事件消息路由到事件目标。
-
事件目标:消费事件消息。
1.3 Data Platform 数据流平台:
- 提供批/流数据处理能力
- 各类组件提供各类Connect
- 提供Streaming/Function能力
- 根据数据schema灵活的进行数据预处理
2. 主流消息队列介绍
- RabbitMQ
- RocketMQ
- Kafka
- Pulsar
Kafka 详解
1. Kafka 架构介绍
1.1 Zookeeper
- 选举机制:Paxos机制
- 提供一致性:写入(强一致性)、读取(会话一致性)
- 提供可用性:一半以上节点存活即可读写
- 提供功能:watch机制、持久/临时节点能力
1.2 Broker
Broker角色:
- 若干个Broker节点组成Kafka集群
- Broker作为消息的接收模块,使用React网络模型进行消息数据的接收
- Broker作为消息的持久化模块,进行消息的副本复制以及持久化
- Broker作为高可用模块,通过副本间的Failover进行高可用保证
1.3 Controller
Conrroller选举:
- Broker启动会尝试去zk中注册controller节点
- 注册上此controller节点的broker即为controller
- 其余broker会watch controller节点,节点出现异常进行重新注册
Controller作用:
- roker重启/宕机时,负责副本的Failover切换
- Topic创建/删除时,负责Topic meta 信息广播
- 集群阔缩容时,进行状态维护
- Partition/Replica状态机维护
1.4 Coordinator
- 负责topic-partition <-> consumer 的负载均衡
- 根据不同的场景提供不同的分配策略
- Dynamic Membership Protocol
- Static Membership Protocol
- Incremental Cooperative Rebalance
2. Kafka 高可用
- 副本同步机制
- 提供lsr副本复制机制,提供热备功能
- 写入端提供ack=0,-1,1机制,控制副本同步强弱
- 副本切换机制
- 提供clean/unclean副本选举机制
2.1 Kafka 副本 ISR 机制
- AR
- Assign Replica,已经分配的所有副本
- OSR
- Out Sync Replica
- 很久没有同步数据的副本
- ISR
- 一直都在同步数据的副本
- 可以作为热备进行切换的副本
- min.insync.replica 最少isr数量配置
2.2 Kafka 写入 Ack 机制
- Ack = 1
- Leader 副本写入成功,Producer 即认为写成功
- Ack = 0
- OneWay 模式
- Producer 发送后即为成功
- Ack = -1 -ISR 中所有副本都成功,Producer 才认为写成功