这是我参与「第四届青训营」笔记创作活动的第3天
消息队列概述
消息队列应用场景
-
MQ 消息通道:异步解耦 削峰填谷 高可用 发布订阅
-
EventBridge 事件总线
- 事件源:将应用程序产生的事件消息发布到事件集
- 事件集:存储事件消息,根据规则将事件消息路由到事件目标
- 事件目标:消费事件消息
-
Data Platform 数据流平台
- 提供流批 数据处理能力
- 各类组件提伯那个各类Connect
- 提供Streaming/Function能力
- 根据数据schema灵活的进行数据预处理
- 主流消息队列介绍
Kafka 详解
Kafka 架构介绍
- Zookeeper集群
- Broker 接收、持久化模块 高可用
- Controller
- 选举(分布式锁,存在且唯一)
- 作用
- Coordinator 负责topic-partition到consumer的负载均衡,不同场景有不同的分布策略
Kafka 高可用
- 副本同步机制 AR/ISR(一直都在同步数据的副本,可以作为热备进行切换的副本,可用性和一致性之间寻找一个平衡)/OSR
- 副本切换机制
- kafka写入Ack机制(1/0/-1)
- Kafka副本同步
- Kafka副本选举:优先选取Isr中的副本作为leader 如果Isr中无可用副本,clean选举(注重一致性):则partition不可用 unclean:则选择其他存活副本(注重可用)
Kafka 集群扩缩容
- Topic维度
- partition在各个broker之间分布是均匀的
- 同一个partition的replica不会分布在一台broker
- Broker维度
- Broker之间replica的数量是均匀的(保证Broker之间负载是均匀的)
扩容步骤:
- 扩容Broker节点
- 计算均衡的Replica分布拓扑
- Controller负责新的副本分布元数据广播
- Broker负责新副本的数据同步
缩容步骤:
- 计算均衡的Replica分布拓扑
- Controller负责新的副本分布元数据广播
- Broker负责新副本的数据同步
- 下线缩容的Broker节点
扩缩容问题:扩缩容时间长,扩缩容期间集群不稳定,扩缩容期间无法执行其他操作
Kafka 未来演进之路
- 去除zookeeper依赖
- 使用KRaft作为元数据和数据存储介质
- 存储计算分离演进
Kafka 运维/调优经验介绍
- 单机吞吐
- 参数配置
- 指标可视化
- 扩缩容优化