这是我参与「第四届青训营 」笔记创作活动的的第7天。本篇笔记对于8.4日鲁仕林老师讲授的《从 Kafka 到 Pulsar:数据流演进之路》内容做一个复习总结。
消息队列概述
- 消息队列的应用场景:
- MQ 消息通道:异步解耦(下游无需关注上游)、削峰填谷(MQ带缓存)、发布订阅(下游订阅即可消费)、高可用(各模块可用性独立)
- EventBridge 事件总线:
- 事件源:将云服务、SaaS应用等产生的事件消息发布到事件集
- 事件集:存储所接收的事件消息,根据规则将其路由到事件目标
- 事件目标:消费事件消息。
- Fata Platform 流数据平台
- 提供批/流数据处理能力
- 各类组件连接接口
- 提供 Streaming/Function 能力
- 根据数据 schema xxx
- 主流消息队列的相关介绍:RabbitMQ -> RocketMQ -> Kafka -> Pulsar,随发展单机吞吐量提高,后两者采用分布式架构
Kafka 详解(待补充)
- xxx
- Zookeeper
- Broker
- controller:(特殊的 Broker)
- Kafka 高可用
- 副本同步机制
- 副本ISR机制:AR( Assign Replica,已分配的所有副本)、OSR、ISR
- 写入 ACK 机制:ACK = 1()、= 0()、= -1()
- 问题:3副本情况下
- ISR 间的副本同步:LEO()、HW
- 副本切换机制:提供 clean 和 unclean 两种选举。clean 选举优先选取 ISR 中的副本作 leader,无可用则 partition 不可用;unclean 若无可用则选择其他存活副本。两者为一致性和可用性的抉择。
- 副本同步机制
- Kafka 集群扩缩容
- Topic 维度需要 partition 在各个 broker 之间分布是均匀的,同一个 partition xxx
- 扩容步骤:
- 扩缩容的问题:扩缩容时间长(数据迁移)、扩缩容期间机群不稳定( disk / net / cpu 负载高)、扩缩容期间xxx
- Kafka 未来方向
- Kafka 去除 zookeeper 依赖
- 元数据存取困难
- 元数据更新网络开销大
- 强耦合违背软件设计原则
- 网络分区复杂度高
- 并发访问 zk 问题多
- 解决方式-依赖 KRaft:
- Kafka 去除 zookeeper 依赖
- Kafka 单机吞吐:
Pulsar 详解
- 整体架构: