这是我参与「第四届青训营 」笔记创作活动的的第12天
一、消息队列概述
消息队列的应用场景
- MQ消息通道
- EventBridge事件总线
- Data Platform流数据平台
MQ消息通道
- 异步解耦
- 削峰填谷
- 高可用
- 发布订阅
EventBridge事件总线
- 事件源:
- 将云服务、自定义应用、SaaS 应用等应用程序产生的事件消息发布到事件集。
- 事件集:
- 存储接收到的事件消息,并根据事件规则将事件消息路由到事件目标。事件目标:消费事件消息。
Data Platform 流数据平台
- 提供批流数据处理能力
- 各类组件提供各类Connect
- 提供Streaming/Function能力
- 根据数据schema灵活的进行数据预处理
二、Kafka详解
Zookeeper
Kafka存储数据:
- Broker Meta信息(临时节点)
- Controller信息(|临时节点)
- Topic信息(持久节点)
- Config信息(持久节点)
- 选举机制: Paxos机制
- 提供一致性 :
- 写入(强一致性)
- 读取(会话一致性)
- 提供可用性:
- 一半以上节点存活即可读写
- 提供功能
- watch机制
- 持久/临时节点能力
Broker
Broker角色
- 若干个Broker节点组成Kafka集群
- Broker作为消息的接收模块,使用React网络模型进行消息数据的接收
- Broker作为消息的持久化模块,进行消息的副本复制以及持久化
- Broker作为高可用模块,通过副本间的Failover进行高可用保证
Controller选举
- Broker启动会尝试去zk中注册controller 节点
- 注册上controller节点的broker即为controller
- 其余broker会watch controller节点,节点出现异常则进行重新注册
Kafka高可用
副本同步机制
- 提供lsr副本复制机制,提供热备功能
- 写入端提供ack=0,-1,1机制,控制副本同步强弱
副本切换机制
- 提供clean/unclean副本选举机制
三、Pulsar详解
Pulsar Proxy
Pulsar Proxy的作用及应用场景
- 部分场景无法知道Broker地址,如云环境或者Kubernetes环境
- Proxy提供类似GateWay代理能力,解耦客户端和Broker,保障Broker安全
Pulsar客户端连接集群的两种方式
- Pulsar Client -> Broker
- Pulsar Client -> Proxy
Bookkeeper基本概念
- Ledger: BK的一个基本存储单元,BK Client的读写操作都是以Ledger为粒度的
- Fragment: BK的最小分布单元(实际上也是物理上的最小存储单元),也是Ledger的组成单位,默认情况下一个Ledger会对应的一个Fragment (一个Ledger也可能由多个Fragment组成)
- Entry:每条日志都是一个Entry,它代表一个record,每条record都会有一个对应的entry id