pulsar是 yahoo开发并开源的 分布式 pub-sub消息. 相比于 kafka/rocketmq, 最大的差异就是 存储上的不同. kafka 和 rocketmq 存储在 本地机器上, pulsar却是存储在 bookkeeper, 一种容错、低延迟、容错的存储服务, 专门为 append-only 类型进行优化. 这样的做法,可以实现存储层和计算层隔离, Broker 动态变化不依赖于数据的迁移,方便了扩容缩容.

pulsar实现上的主要特点:

  • 消息内容的数据写入到 bookkeeper. 封装的数据结构: ManagedLedgerImpl
  • 消费的cursor 写入到 bookkeeper. 封装的数据结构: ManagedCursorImpl
  • 消费的订阅关系 维护在 zk中. 封装的数据结构: MetaStoreImplZookeeper consumer类型: Exclusive/Failover 主要处理逻辑封装在 AbstractDispatcherSingleActiveConsumer, Shared 封装逻辑主要在 PersistentDispatcherMultipleConsumers.
  • 支持partitioned topic
  • 基于Netty的网络处理逻辑.