翟佳 - ApachePulsar 特性及其系统架构

2019 年 6 月 1 日,Gitchat 在北京成功举办“分布式高可用消息队列的原理与实践”主题 meetup。翟佳受邀参加本次分享,发表“Apache Pulsar 特性及其系统架构”主题演讲。 Apache Pulsar 于 2016 年由雅虎开源,并于 2018 年成为 Apache 顶级项目。 Apache Pulsar 是云原生新一代的消息流数据平台,它具有统一的消息消费模型、存储计算分离的架构、高可用和高可扩展性、以及多租户等丰富的企业级特性。本篇介绍 Pulsar 的特性及其背后的系统架构。
展开查看详情

1.特性 & 架构 翟佳

2.⾃自我介绍 • 开源项⽬目爱好者: • Pulsar, BookKeeper的Committer 和 PMC成员 • EMC -> StreamNative • StreamNative Core Engineer • 华中科⼤大 -> 中科院计算所

3.• Pulsar 简介 • Pulsar的根本不不同 • Pulsar的分层分⽚片架构 • Pulsar的⽣生态和社区

4.Apache Pulsar是什什么 2003 2010 2012 2006 2011

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

6.为什什么要“造轮⼦子” • 没有系统能够解决遇到的问题和规模 • 多租户 - 百万Topics - 低延时 - 持久化 - 跨地域复制 • 已有的系统存在问题 • 分区模型紧耦合存储和计算,不不是云原⽣生(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.• Pulsar 简介 • Pulsar的根本不不同 • Pulsar的分层分⽚片架构 • Pulsar的⽣生态和社区

9.• Pulsar 简介 • Pulsar的根本不不同 • 统⼀一消费模型 • 企业级特性 • 分层分⽚片架构

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

11.Pulsar统⼀一模型 — 订阅 Broker Subscription1 Producer Topic … Write Ack Subscription Consumer readEntries ManagedLedger + Cursor Ack/N-Ack 1 2 3 4 5 6 7 1 2 3 4 5 6 7 -/+ BookKeeper 1 2 3 4 5 6 7 A B C D E Ledger stores Data Ledger stores Cursor changes

12.Pulsar统⼀一模型 — Key-Shared

13.• Pulsar 简介 • Pulsar的根本不不同 • 统⼀一消费模型 • 企业级特性 • 分层分⽚片架构

14.企业级特性

15.Pulsar的Geo-replication Beijing Shanghai Producer Producer (P1) Topic (T1) Topic (T1) (P2) Consumer SubscripEon (S1) SubscripEon (S1) Consumer (C1) (C2) Broker原⽣生 Producer Topic (T1) Pub/Sub⼀一体 (P3) 管理理简单 Guangzhou 配置灵活

16.• Pulsar 简介 • Pulsar的根本不不同 • 统⼀一消费模型 • 企业级特性 • 分层分⽚片架构

17.存储和计算分离 分层架构: Brokers & Bookies • 节点对等 • 独⽴立扩展 • 灵活容错 • 快速扩容

18.分层 + 分⽚片

19.• Pulsar 简介 • Pulsar的根本不不同 • Pulsar的分层分⽚片架构 • Pulsar的⽣生态和社区

20.存储层概念:Entry, Ledger & Log Log / Stream / Topic

21. 存储层:Apache BookKeeper • Parallel Quorum Replication • Ensemble • Write Quorum • Ack Quorum

22.分层 + 分⽚片

23.• Pulsar 简介 • Pulsar的根本不不同 • Pulsar的分层分⽚片架构 • 便便捷运维 + ⽆无感知容错 • IO的并发和隔离

24.Broker容错 ⽆无感知容错 零数据catchup

25.Bookie容错 应⽤用⽆无感知 并发可控 数据恢复

26. 存储扩容 应⽤用⽆无感知 数据均匀分布 ⽆无re-balance

27.分区 vs 分⽚片 https://jack-vanlightly.com/sketches/2018/10/2/kafka-vs-pulsar-rebalancing-sketch

28.• Pulsar 简介 • Pulsar的根本不不同 • Pulsar的分层分⽚片架构 • 便便捷运维 + ⽆无感知容错 • IO的并发和隔离

29.IO的并发和隔离 — Write Kafka Pulsar Broker Broker Broker Broker Broker Broker L1 Cache Partition Partition Partition (Leader) (Follower) (Follower) L2 Cache Write