这是我参与「第四届青训营 」笔记创作活动的第12天,在第十二节课中主要了解到了Kafka,Pulsar有关的内容。
一、消息队列概述
消息队列的应用场景
- MQ消息通道
- EventBridge事件总线
- Data Platform流数据平台
主流消息队列的相关介绍
二、Kafka详解
Kafka架构介绍
Zookeeper
Kafka存储数据:
- Broker Meta信息
- Controller信息
- Topic信息
- Config信息 选举机制:Paxos机制
- 提供一致性:写入、读取
- 提供可用性:一半以上节点存活即可读写
- 提供功能:watch机制、持久/临时节点能力
Broker
Broker角色:
- 若干Broker节点组成Kaflka集群
- Broker作为消息的接收模块,使用 Controller选举:
- Broker启动会尝试去zk中注册controller节点
- 注册上controller节点的broker即为controller
- 其余broker会watch controller节点,节点出现异常则进行重新注册 Controller作用:
- Broker重启时,负责副本的Failover切换
- Topic创建/删除时,负责Topic meta信息广播
- 集群扩缩容时,进行状态控制
- Partition/Replica状态机维护
Kafka高可用
Kafka副本ISR机制
AR:
- Assign Replica OSR:
- Out Sync Replica ISR:
- 一直都在同步数据的副本
- 可以作为热备进行切换的副本
Kafka写入Ack机制
Ack=1:
- Leader副本写入成功 Ack=0
- OneWay模式
- Producer发送后即为成功 Ack=-1
- ISR中所有副本都成功,Producer才认为写成功
Kafka副本同步
LEO
- Log End Offset,日志最末尾的数据 HW
- ISR中最小的LEO作为HW
- HW的消息为Consumer可见的消息
Kafka副本选举
Kafka集群扩缩容
Kafka集群扩缩容之后的目标
Topic维度:
- partition在各个broker之间分布是均匀的
- 同一个partition的repica不会分布在一台broker Broker维度
- Broker之间replica的数量是均匀的
Kafka依赖KRaft
- Process.Roles = Broker
三、Pulsar详解
Pulsar架构介绍
四、周边和生态
周边生态概览
- Pulsar IO
- Kafka Schema
- Pulsar SQL