Apache Pulsar各个组件进行深入剖析其基本原理和适用场景,让开发和运维消息流系统变得更加简单,可靠易维护。

注脚

展开查看详情

1.Cloud-Native Messaging & Streaming 翟佳 — Streamlio

2.• Pulsar 简介 • Pulsar的根本不不同 — Cloud Native • ⽣生态,社区与规划

3.Apache Pulsar是什什么

4. Apache Pulsar是什什么 “Flexible Pub/Sub messaging backed by durable log/stream storage”

5. “造轮⼦子” — 需求 • 没有系统能够解决遇到的问题和规模 • 多租户 • 百万Topics • 低延时 • 持久化 • 跨地域复制

6. “造轮⼦子” — 问题 • 已有的系统存在问题 • 分区模型紧耦合存储和计算,不不是云原⽣生(Cloud Native)的设计 • 存储模型过于简单,强依赖于⽂文件系统 • 想开持久化保证数据不不丢,或者,增加Topics的数量量,性能下降太厉害 • IO不不隔离:消费者在清除Backlog的时候会影响其他⽣生产者和消费者 • 运维太痛苦 - 替换机器器、服务扩容都需要很漫⻓长的重新均衡数据的过程

7. Apache Pulsar 特性 Durability Ordering Delivery Guarantees Data replicated and Guaranteed ordering At least once, at most synced to disk once and effectively once High throughput Low Latency Unified messaging Can reach 1.8 M Low publish latency of model messages/s in a 5ms at 99pct Support both single partition Streaming and Queuing Multi-tenancy Geo-replication Highly scalable & A single cluster can Out of box support for available support many tenants geographically Can support millions of and use cases distributed topics applications HA

8. 项⽬目状态 • 2012在Yahoo内部启动,经历了了⽆无数的迭代 • 2016年年九⽉月Yahoo将Pulsar开源 • 2017年年六⽉月Yahoo将Pulsar捐献给了了Apache软件基⾦金金会 • 2018年年九⽉月Pulsar毕业成为顶级项⽬目 • 2400+ commits - 22 Yahoo releases - 9 Apache releases • 24 committers from 8 companies, 78 contributors • 30+ companies on production 8

9.• Pulsar 简介 • Pulsar的根本不不同 — Cloud Native • ⽣生态,社区与规划

10.多租户

11.Pulsar统⼀一模型 队列列 + 流

12.存储和服务分离 分层架构: Brokers & Bookies • 独⽴立扩展 • 灵活容错 • 快速扩容

13.• 存储层 — BookKeeper

14. Apache BookKeeper 分布式⽇日志/流存储 • 低延时多复本复制: • Quorum Parallel Replication • 持久化: 所有操作保证刷盘后才进⾏行行ACK • 强⼀一致性: • 可重复读的⼀一致性 (Repeatable Read Consistency) • 读写⾼高可⽤用 • 存储节点的读写隔离

15. Apache BookKeeper Log: Source of Truth of Everything … • HDFS NameNode • Databases: • Twitter Manhattan, Salesforce NewSQL Database • Messaging: • Twitter EventBus, Pulsar

16.概念:Entry, Ledger & Log Log / Stream / Topic

17. 多副本复制(1) • Parallel Quorum Replication • Ensemble • Write Quorum • Ack Quorum

18.多副本复制(2)

19. 多副本复制(3) • Ensemble: 控制⼀一个Ledger的读写带宽 • Write Quorum:控制⼀一条记录的复本数量量 • Ack Quorum:写每条记录需要等待的Ack数量量,控制时延 • 灵活性: • 增加Ensemble,可以增加读写带宽 • 减少Ack Quorum,可以减少⻓长尾时延

20. ⼀一致性(1)—可重复读 • LastAddPushed • LastAddConfirmed • Fencing避免脑裂

21.⼀一致性(2) Raft BK

22.⼀一致性(3) Raft BK

23. 读写⾼高可⽤用 • 写⾼高可⽤用 - Ensemble Change • 最⼤大化数据放置可能性 • 读⾼高可⽤用 - Speculative Reads • 没有主节点 • 每个副本都可以提供读 • 通过Speculative减少⻓长尾时延

24.存储节点的读写隔离

25.• 分层读写流程

26.读写流程 (1) (1) ⽣生产者发送消息给Broker

27.读写流程 (2) (2) Broker并发写N个副本

28. 读写流程 (3) (3) Broker等待来⾃自于Bookies的Quorum Acks

29. 读写流程 (4) (4) Broker返回确认给⽣生产者,并投递给消费者