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