Apache Pulsar:从消息系统到流原生平台

展开查看详情

1. COSCon ’ 2019 中国开源年年会 2019年年11⽉月2-11⽉月3⽇日 中国·上海海

2.Apache Pulsar 从消息系统到流原⽣生平台 翟佳

3.⾃自我介绍 • 翟佳 • 开源项⽬目爱好者: • Pulsar, BookKeeper, DistributedLog的PMC成员 • EMC -> StreamNative • 华中科⼤大 -> 中科院计算所 • StreamNative: Cloud-Native Event Streaming with Apache Pulsar

4.1 什什么是 Apache Pulsar

5.Pulsar 简介 2003 2010 2012 2006 2011

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

7.Pulsar 简介 —— 定义 Flexible Pub-Sub Messaging backed by durable log Storage

8.Pulsar 历史简介 • 2012: Pulsar idea started at Yahoo! • 5 years on production, 100+ applications, 10+ data centers • 2016/09 Yahoo open sourced Pulsar • 2017/06 Yahoo donated Pulsar to ASF • 2018/09 Pulsar graduated as a Top-Level project • 2018/09 InfoWorld Best Open Source Project • ~30 committers, 170+ contributors, 1000+ forks, 4300+ stars • Yahoo!, Yahoo! Japan, Tencent, Zhaopin, THG, OVH, … http://pulsar.apache.org/en/powered-by/

9.不不同 • 灵活的、统⼀一的消息模型:队列列 + 流 • 企业级特性 • 云原⽣生:存储(storage)和计算(serving/messaging)分离 • 降维:从分区到分⽚片

10.2 Apache Pulsar 的不不同

11.1. 灵活的、统⼀一的消息模型

12.1. 灵活的、统⼀一的消息模型

13.2. 企业级特性 — 多租户

14.2. 企业级特性 — Geo-replication Broker原⽣生 Pub/Sub⼀一体 管理理简单 配置灵活

15.3. 云原⽣生架构 • 存储和计算分离 • 独⽴立扩展 • 灵活扩容 • 快速容错

16.4. 降维:Partition 分⽚片 • 逻辑分区 • 分区分⽚片 • Size&Time • 存储均衡

17.5. 存储层: Apache BookKeeper 分布式⽇日志/流存储 • 低延时、⾼高吞吐、持久化 • 强⼀一致 (repeatable read consistency) • ⾼高可⽤用 • 单节点可以存储很多⽇日志 • I/O隔离

18. 5. 存储层: Apache BookKeeper • Ensemble • Write Quorum • Ack Quorum

19.6. 分层分⽚片 带来的好处

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

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

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

23.Rebalance https://jack-vanlightly.com/sketches/2018/10/2/kafka-vs-pulsar-rebalancing-sketch

24.3 Apache Pulsar 与流原⽣生

25.1. Partition分⽚片: Segmented Stream P0 Segment 1 Segment 2 Segment 3 Producers P1 Segment 1 Segment 2 Segment 3 Segment 4 P2 Segment 1 Segment 2 Segment 3 Consumers P3 Segment 1 Segment 2 Segment 3 Time

26.1. Partition分⽚片: Infinite Segmented Stream Segment Readers Producers Stream Segment 1 Segment 2 Segment 3 Segment 4 Segment 5 Segment 6 Consumers Time

27.1. 统⼀一的数据存储层

28.2. Schema Registry • 数据是有结构的,结构也是在变化 • ⽣生产者和消费者关于数据结构的⼀一个“合同” • 兼容性:向前、向后、全兼容、不不兼容 • 数据合法性的强制检查

29.2. Schema Type-Safe客户端 • 客户端与Schema Registry进⾏行行整合 • 端到端Type Safety — Broker进⾏行行Schema的验证保证数据合法性