这是我参与「第四届青训营 」笔记创作活动的第16天
从 Kafka 到 Pulsar:数据流演进之路
01.消息队列概述
1.1消息队列的应用场景
MQ消息通道
优点:上下游解耦、削峰填谷、发布订阅、高可用
EventBridge事件总线
Data Platform流数据平台
1.2主流消息队列
02.Kafka详解
1.架构介绍
2.高可用
副本同步机制
提供sr副本复制机制,提供热备功能
写入端提供ack=0,-1,1机制,控制副本同步强弱
副本切换机制
提供clean/unclean副本选举机制
Kafka副本ISR机制:AR/ISR/OSR
Kafka写入Ack机制:
Ack = 1
Leader副本写入成功,Producer即认为写成功
Ack = 0
OneWay模式
Producer发送后即为成功
Ack = -1
SR中所有副本都成功,Producer才认为写成功
Kafka副本同步
Kafka副本选举
Clean选举
优先选取lsr中的副本作为leader
如果lsr中无可用副本,则partition不可用
Unclean选举
优先选取lsr中的副本作为leader
如果lsr中无可用副本,则选择其他存活副本
运维↓
3.集群扩缩容
扩容:
扩容Broker节点
- Leader副本写入成功,Producer即认为写成功
计算均衡的Replica 分布拓扑
保证Topic的partition在broker间分布均匀
保证Broker之间Replica分布均匀
Controller负责新的副本分布元数据广播
Controller将新的leade / follower信息广播给broker
Broker负责新副本的数据同步
Broker上有需要同步数据的副本则进行数据同步
缩容:
计算均衡的Replica 分布拓扑
保证Topic的Ipartition在broker间分布均匀
保证Broker之间Replica分布均匀
Controller 负责新的副本分布元数据广播
- Controller 将新的leade // follower信息广播给broker
Broker负责新副本的数据同步
- Broker上有需要同步数据的副本则进行数据同步
下线缩容的Broker节点
- 数据同步完毕之后下线缩容的Broker节点
4.未来演进之路
5.运维/调优经验介绍
03.Pulsar详解
1.架构介绍
2.Bookkeeper介绍
Ledger :k的一个基本存储单元,BK Client的读写操作都是以Ledger为粒度的
Fragment :Bk的最小分布单元(实际上也是物理上的最小 存储单元),也是Ledger 的组成单位,默认情况下一个 Ledger会对应的一个Fragment (一个Ledger也可能由多个Fragment 组成
Entry :每条日志都是一个Entry,它代表一个record ,每条record都会有一个对应的entry id
3.Pulsar功能介绍
生产模式:
消费模式:Exclusive 、Failover 、Shared 、Key_Shared
多租户:体现在Url中
Plugin:
GEO Relication:
4.集群HA&Scale-up
5.Pulsar vs Kafka
存储架构
存储计算分离之后带来的优劣势
多层架构,状态分离之后的优势
运维操作
应对突发流量变化,集群扩缩容是否便捷
运维任务是否影响可用性
集群部署是否灵活
功能特性
多语言&多协议
多租户管理
生产消费模式
生态集成