这是我参与「第四届青训营」笔记创作活动的第15天。
写在前面
消息队列与数据流中间件是在现代大数据框架与解耦的服务架构中必不可少的工具,赋予了各个功能模块以自由的数据和通讯方式,让开发更加自由与高效,是当前的研究热点。
笔记正文
1. 消息队列概述
1. 应用场景
- MQ消息通道
- 异步解耦
- 削峰填谷
- 高可用
- 发布订阅
- EventBridge事件总线
- 事件源
- 事件集
- 事件目标
- Data PlatForm流数据平台
- 提供批/流数据处理能力
- 各类组件提供各类Connect
- 提供Streaming/Function能力
- 根据数据Schema灵活进行数据预处理
2. 主流消息队列相关介绍
- RabbitMQ
- RocketMQ
- Kafka
- Pulsar
2. Kafka详解
1. 架构介绍
- Zookeeper
- 选举:paxos机制
- 一致性
- 写入 强一致
- 读取 会话强一致
- 可用性
- 一半以上节点存活即可读写
- 功能
- watch机制
- 持久/临时节点能力
- 存储数据
- broker meta
- controller
- topicga
- config
- Broker
- Controller选举
- 作用
- failover切换
- Topic meta广播
- 状态控制
- 状态机维护
- 作用
- Coordinator
2. Kafka高可用
- 副本同步机制
- 副本切换机制
3. Kafka集群扩缩容
目标
- Topic维度
- partition在各个broker之间均匀分布
- 同一个partition的replica不会在一个broker
- Broker维度
- broker之间的replica数量均匀
扩容步骤
- 扩容Broker节点
- 计算均衡的Replica分布拓扑
- Controller负责新的副本分布源数据广播
- broker负责新副本的数据同步
缩容步骤
- 计算均衡的Replica分布拓扑
- Controller负责新的副本分布源数据广播
- broker负责新副本的数据同步
- 下线缩容的Broker节点
扩缩容遇到的问题
- 扩缩容时间长
- 扩缩容期间集群不稳定
- 扩缩容期间无法执行其他操作
4. Kafka未来
- 去除Zookeeper依赖
- 存储计算分离演进
- 使用KRaft作为元数据和数据存储介质
5. Kafka运维/调优经验介绍
- 单机吞吐
- 参数配置
- 指标可视化
- 扩缩容优化