这是我参与「第四届青训营 」笔记创作活动的的第13天
03.Pulsa详解
3.1 Pulsar架构介绍
3.1.1 Pulsar Proxy
3.1.2 Pulsar Broker
- Pulsar Broker无状态组件,负责运行两个模块 . Http 服务器 ·暴露了restful接口,提供生产者和消费者topic查找api
- 调度分发器 ·异步的tcp服务器,通过自定义二进制协议进行数据传输
- Pulsar Broker作为数据层代理 . Bookie通讯 ·作为Ledger代理负责和Bookie进行通讯 ·流量代理 ·消息写入Ledger存储到Bookie .消息缓存在堆外,负责快速响应
3.1.3 Pulsar Storage
3.1.4. Pulsar IO连接器
3.1.5 Pulsar Functions(轻量级计算框架)
3.2.1 Bookeeper 整体架构
3.2.3.1.Bookkeeper新建Ledger
3.2.3.2.Bookkeeper Ledger分布
右边的吞吐量要比左边高
3.2.4.1 Bookkeeper读写分离、读写优化
- 写入优化: ·写入时,不但会写入到Journal中还会写入到缓存(memtable)中,定期会做刷盘(刷盘前会做排序,通过聚合+排序优化读取性能)
- 读取优化:
·先读 Memtable,没命中再通过索引读磁盘
.Ledger Device中会维护一个索引结构,存储在RocksDB中,它会将(Ledgerld,Entryld)映射到(EntryLogld,文件中的偏移量)
3.2.4.2.Bookkeeper写一致性
LastAddPushed/LastAddConfirmed/Fencing 避免脑裂
3.2.4.3.Bookkeeper读一致性
3.3 Pulsar功能介绍
3.3.1.Pulsar生产模式
3.3.2.Pulsar消费模式
3.3.2.2.Failover消费模式
3.3.2.3.Shared消费模式
3.3.2.4.Key_Shared消费模式
3.3.3 Pulsar多租户
Pulsar多租户体现在Url中
3.3.4. Pulsar Plugin
- 当前支持 Plugin类型
·KOP (Kafka on Pulsar)
·ROP (RocketMQ on Pulsar)
·AOP(AMQP on Pulsar)
·Mop (MQTT on Pulsar) - 实现 Plugin需要支持的功能
·路由查询
·Message Protocol
·Offset & Msgld
3.3.5 Pulsar GEO Relication
做跨地域多机房容灾,在另一个地域提供服务
·跨数据中心复制
·消费其他地域数据
3.4.1 Pulsar HA & Scale-up
Topic<->Bundle完成映射
·Bundle分配给 Broker
3.5 Pulsar VS Kafka
- 存储架构
·存储计算分离之后带来的优劣势
·多层架构,状态分离之后的优势 - 运维操作
·应对突发流量变化,集群扩缩容是否便捷
·运维任务是否影响可用性
·集群部署是否灵活 - 功能特性
多语言&多协议·多租户管理·生产消费模式 - 生态集成
3.5.1存储计算分离
-
计算层
·对于写入的数据,可以做预处理,简单ETL
·可以做数据缓存,应对高扇出度场景
·无状态,扩缩容之后,能快速完成负载均衡Balance -
分层架构优势
·流量代理层和数据存储层解耦
·流量代理层无状态,可快速扩缩容(k8s等弹性平台)
·流量代理层可以对接海量的客户端连接
·存储层负责数据存储,可以使用多级存储 -
存储层
·按照数据冷热进行存储介质区分,降低成本
·历史数据可海量保存,数据无价
.可直接通过存储层接口读取数据,批式计算