Apache Pulsar - Intro

展开查看详情

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. 分区 vs 分⽚片 物理理分区 逻辑分区 Segment 1 Segment 2 Segment 3 Segment n Broker Broker Broker Broker Broker Broker 分区 存储和计算 紧耦合 分区 分布 (主副本) (拷⻉贝) (从拷⻉贝) 分离 Segment 1 Segment 2 Segment 3 Segment 1 Segment 2 Segment 3 Segment 1 Segment 2 .
. .
. .
. .
. Segment n Segment n Segment n Segment n 分区架构 ! 物理理分区 分⽚片架构 ! 存储和计算紧耦合 ! 容错恢复需要拷⻉贝物理理分区 ! 逻辑分区,“物理理”分⽚片 ! 扩容需要迁移物理理分区来达到负载均衡 ! 存储和计算分离 ! 失效处理理相互分离,快速、⽆无痛点 ! 弹性扩容

24.“我拿EBS作为Kafka/RocketMQ Broker的硬盘, 是不不是也可以达到你要的存储和计算分离?”

25.“多了了⼀一层,是不不是时延就⾼高了了,性能就不不好了了”

26.分区 vs 分⽚片 逻辑分区 物理理分区 Broker Broker Broker Broker Broker Broker 分区 分区 分布 (主副本) (拷⻉贝) (从拷⻉贝)

27.“太多的移动部件了了,运维复杂了了?”

28.云原⽣生 • 弹性计算和存储资源 • 容器器时代,Kubernetes化势不不可挡 • 云原⽣生架构不不是为物理理机设计的,⽽而是为容器器化设计 • 存储和计算分离是云原⽣生的架构设计 • Pulsar + Kubernetes == 完美

29.Pulsar其他特性 • 丰富的客户端:Java, C, C++, Python, Go, WebSocket • 丰富的Policy:存储配额,流量量控制,数据保留留策略略,TTL等 • 灵活的租户控制:软件隔离,物理理隔离 • 多机房、跨地域复制:异步复制,同步复制 • 机架感知、地域感知的数据放置策略略