Pulsar系统架构:分层+分片

Apache Pulsar和一些传统老派的消息系统最大不同的地方在于其采用计算和存储分离的分层架构。 Apache Pulsar集群由瞬时伸缩的无状态消息服务层(Brokers)和高可用、强一致、低延时的分布式存储层(Bookies) 组成。这种将存储从消息服务中抽离出来,使用更细粒度的分片(Segment)替代粗粒度的分区(Partition),为Pulsar提供了更高的可用性,更灵活的扩展能力,和解决了很多运维过程中的痛点。 本次演讲,翟佳会深入分析Pulsar以分片为中心的分层架构,以及Pulsar如何在设计中考虑和解决用户使用和运维过程中的痛点,以及底层的具体设计和实现。
展开查看详情

1.系统架构——分层 + 分⽚片 演讲者/streamlio 翟佳

2. 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

3.分层架构 分层架构: Brokers & Bookies • 独⽴立扩展 • 灵活容错 • 快速扩容

4.分层架构 — Brokers

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

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

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

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

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

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

11.Broker容错

12.Bookie容错

13.扩容

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

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

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

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

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

19.多副本复制(2)

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

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

22.⼀一致性(2) Raft BK

23.⼀一致性(3) Raft BK

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

25.存储节点的读写隔离

26. Benchmark https://github.com/openmessaging/openmessaging-benchmark

27.Throughput

28.Latency

29.Latency

StreamNative 是一家围绕 Apache Pulsar 和 Apache BookKeeper 打造下一代流数据平台的开源基础软件公司。秉承 Event Streaming 是大数据的未来基石、开源是基础软件的未来这两个理念,专注于开源生态和社区的构建,致力于前沿技术。