PULSAR-从消息系统到流原生数据平台

PULSAR-从消息系统到流原生数据平台
展开查看详情

1.从消息系统到流原⽣生数据平台 Sijie Guo —- twitter: @sijieg wechat: guosijie_

2.Who am I • Sijie Guo • 开源项⽬目爱好者:Pulsar, BookKeeper, Hive, HBase, … • Streamlio联合创始⼈人 • Yahoo -> Twitter -> Streamlio • 华中科⼤大 -> 中科院计算所

3.Pulsar于九⽉月从Apache Incubator毕业成为顶级项⽬目

4.什什么是Apache Pulsar

5.2003 2010 2012 2006 2011

6. “Flexible Pub/Sub messaging backed by durable log/stream storage”

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

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

9.为什什么要“造轮⼦子” (3) • 基础架构从物理理机时代往容器器化转型 • 需要⼀一个新的⾯面向容器器编排设计的原⽣生系统

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

11.简介

12.不不同在哪⾥里里 • 灵活的、统⼀一的消息模型:队列列 + 流 • 云原⽣生:存储(storage)和计算(serving/messaging)分离 • 降维:从物理理分区到逻辑分⽚片

13.Pulsar概念

14.Pulsar概念 (2)

15.队列列 + 流

16.流:独占式订阅

17.流:灾备式订阅

18.队列列:共享式订阅

19.例例⼦子: Event Center

20.例例⼦子: Event Center (2)

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

22. 分⽚片存储 • 分区(Partition)是逻辑上的⼀一个概念 • 分区按照时间或者⼤大⼩小被切成分⽚片 (Segment) • 分⽚片被打散存放到集群中的所有节点

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

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

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

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

27.Broker容错

28.Bookie容错

29.扩容