Apache Pulsar 多层抽象layer2-broker、

2020-06-29  本文已影响0人  QuinnSun

broker简介:

pulsar broker是无状态的,Bookeeper集群本身并不执行复制,每个Bookies只是一个跟随者被领导者同志做什么,领导人是Pulsar Broker。每个Topic都由一个Pulsar Broker拥有,该Broker提供Topic的所有读写操作。

写操作

Pulsar 的写流程如下图:


image.png

Pulsar Broker 接收到 client 的请求后,依据 Topic 所使用的 Ensemble 集合以及相关参数,把数据写入 Qw 个 Bookie,收到 Qa 个 Bookie 的回应后,可以认为写成功并向生产者客户端发送确认。至于 Ensemble 的选择,则由 Pulsar Broker Leader相应的策略在创建 Topic 的时候从 Bookie 集合中选择。
如果写流程中有 Bookie 返回错误或者超时没有返回,则 Broker 会用新的 Bookie 替换,并把数据写入其中的 Ledger/Fragment上。通过这个 Ensemble Change 的方法能够保证 Pulsar 肯定能够写成功,而不是由于某个节点故障导致写流程阻塞住进而影响后面 Entry 的写流程。

读操作

Pulsar Consumer 读取消息的不需要关心数据数据存储所在的介质,因为 Pulsar 很好的使用了缓存功能以提高读取速度,并利用分级方式降低存储成本。


image.png

Pulsar 的读流程如下图:


image.png

Cursor追踪

每个Subscription都存储一个Cursor。Cursor是日志中的当前偏移量。Subscription将其Cursor存储至BookKeeper的Ledger中。这使Cursor跟踪可以像Topic一样进行扩展。

上一篇 下一篇

猜你喜欢

热点阅读