从 Kafka 到 Pulsar:数据流演进之路(2) | 青训营笔记

198 阅读2分钟

image.png

这是我参与「第四届青训营 」笔记创作活动的的第13天

03.Pulsa详解

3.1 Pulsar架构介绍

1660201651094.png

3.1.1 Pulsar Proxy

1660201705111.png

3.1.2 Pulsar Broker

1660201785456.png

  • Pulsar Broker无状态组件,负责运行两个模块 . Http 服务器 ·暴露了restful接口,提供生产者和消费者topic查找api
  • 调度分发器 ·异步的tcp服务器,通过自定义二进制协议进行数据传输
  • Pulsar Broker作为数据层代理 . Bookie通讯 ·作为Ledger代理负责和Bookie进行通讯 ·流量代理 ·消息写入Ledger存储到Bookie .消息缓存在堆外,负责快速响应

3.1.3 Pulsar Storage

image.png

3.1.4. Pulsar IO连接器

image.png

3.1.5 Pulsar Functions(轻量级计算框架)

GG2JXKTQX%)3P89KAQR.png

3.2.1 Bookeeper 整体架构

3.2.3.1.Bookkeeper新建Ledger

3.2.3.2.Bookkeeper Ledger分布

1660202777712.png

右边的吞吐量要比左边高

3.2.4.1 Bookkeeper读写分离、读写优化

  • 写入优化: ·写入时,不但会写入到Journal中还会写入到缓存(memtable)中,定期会做刷盘(刷盘前会做排序,通过聚合+排序优化读取性能)
  • 读取优化: ·先读 Memtable,没命中再通过索引读磁盘 .Ledger Device中会维护一个索引结构,存储在RocksDB中,它会将(Ledgerld,Entryld)映射到(EntryLogld,文件中的偏移量) image.png

3.2.4.2.Bookkeeper写一致性

1660202835333.png LastAddPushed/LastAddConfirmed/Fencing 避免脑裂

3.2.4.3.Bookkeeper读一致性

3.3 Pulsar功能介绍

3.3.1.Pulsar生产模式

image.png

3.3.2.Pulsar消费模式

1660203300546.png

3.3.2.2.Failover消费模式

1660203354306.png

3.3.2.3.Shared消费模式

1660203397608.png

3.3.2.4.Key_Shared消费模式

1660203435537.png

3.3.3 Pulsar多租户

Pulsar多租户体现在Url中 1660203506456.png

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

1660203558253.png

3.3.5 Pulsar GEO Relication

做跨地域多机房容灾,在另一个地域提供服务
·跨数据中心复制
·消费其他地域数据

image.png

3.4.1 Pulsar HA & Scale-up

Topic<->Bundle完成映射
·Bundle分配给 Broker

image.png

3.5 Pulsar VS Kafka

  • 存储架构
    ·存储计算分离之后带来的优劣势
    ·多层架构,状态分离之后的优势
  • 运维操作
    ·应对突发流量变化,集群扩缩容是否便捷
    ·运维任务是否影响可用性
    ·集群部署是否灵活
  • 功能特性
    多语言&多协议·多租户管理·生产消费模式
  • 生态集成

3.5.1存储计算分离

  • 计算层
    ·对于写入的数据,可以做预处理,简单ETL
    ·可以做数据缓存,应对高扇出度场景
    ·无状态,扩缩容之后,能快速完成负载均衡Balance

  • 分层架构优势
    ·流量代理层和数据存储层解耦
    ·流量代理层无状态,可快速扩缩容(k8s等弹性平台)
    ·流量代理层可以对接海量的客户端连接
    ·存储层负责数据存储,可以使用多级存储

  • 存储层

    ·按照数据冷热进行存储介质区分,降低成本
    ·历史数据可海量保存,数据无价
    .可直接通过存储层接口读取数据,批式计算

image.png