13|从基础功能拆解Pulsar的架构设计与实现
该思维导图由 AI 生成,仅供参考
Pulsar 系统架构
- 深入了解
- 翻译
- 解释
- 总结
Pulsar的架构设计与实现是本文的主题,文章首先介绍了Pulsar的系统架构,包括计算层和存储层的设计。与Kafka相比,Pulsar采用了计算存储分离的思想,使用BookKeeper作为存储层,而Broker集群作为计算层。在架构部署上,存储层和计算层是独立的,且可以共用一套ZooKeeper集群。此外,Pulsar还引入了一些新概念,如Bundle、Bookie、Ledger等,以满足其架构设计的需求。 文章接着分析了Pulsar Broker的协议和网络模块,指出Pulsar Broker的协议是自定义的私有协议,采用行格式解析,同时使用Protobuf组织部分元数据。此外,Pulsar Broker的网络层基于Netty框架开发实现。 最后,文章介绍了Pulsar的数据存储,包括元数据存储和消息数据存储两部分。Pulsar的元数据存储目前主要依赖于ZooKeeper,但也支持可插拔的元数据存储框架,以缓解ZooKeeper的压力。 Pulsar的架构设计与实现充分体现了其与Kafka的差异和创新之处。文章内容涵盖了Pulsar的架构设计、协议与网络模块以及数据存储等方面,对于想要了解Pulsar技术特点的读者来说,是一份全面而深入的技术资料。 Pulsar的架构设计与实现充分体现了其与Kafka的差异和创新之处。文章内容涵盖了Pulsar的架构设计、协议与网络模块以及数据存储等方面,对于想要了解Pulsar技术特点的读者来说,是一份全面而深入的技术资料。
《深入拆解消息队列 47 讲》,新⼈⾸单¥59
全部留言(4)
- 最新
- 精选
- 虚竹老师好,作为新一代的mq,为何pulsar会在明知zk会成为瓶颈的情况下,依然选择zk呢?另外,pulsar的明显优势是哪些呢?
作者回复: 我说一下我个人的技术判断。 在我看来,跟项目发展的时间点、业务需求、数据量有关。 有个前提我们需要知道,zookeeper可能会有一些隐患和不足,但是作为一个分布式协调服务,它的功能和稳定性都是很优秀的。比如Kafka 也是选择了zookeeper作为其协调和元数据存储服务。kafka是在2010年开发的,至今的架构中zookeeper还是很重要。 也就是说 zookeeper 完全可以满足作为一个分布式系统的协调服务,只是存在一些不足和隐患。 Pulsar 由 Pulsar Broker 和 Bookkeeper两个部分组成,Pulsar 和 Bookeeper都是雅虎内部孵化的。Bookeeper是2009年开始开发的,Pulsar是2015年开始开发的。 在09年的时候,Bookeeper选择zookeeper作为其协调服务是一个很标准的架构设计,也是一个被验证可行的技术方案。而pulsar 在2015年开发的时候,依赖zookeeper也成了一个顺其自然的选择。 另外,就是依赖zookeeper来实现架构,可以节省很多工作量,极大的加快项目周期。一个开源的项目,总是先有,再优化。按照这个思路来思考,就比较容易理解的。 最后一点就是,随着 Pulsar 功能和架构的迭代,越来越多的数据存在了zookeeper 中。这样无形放大了zookeeper的劣势,让问题更加明显。 当存在zookeeper中的数据量不大的时候,其实现网问题暴露的并不明显,zookeeper是很好用的。
2023-10-10归属地:北京21 - 张申傲请教下强哥:像Pulsar这类存算分离架构,存储性能不会存在瓶颈吗?像RocketMQ、Kafka消息都是存本地文件,最多就是一次磁盘IO,而Pulsar要存远程BookKeeper,相当于是网络IO+磁盘IO,虽然会有PageCache、WAL顺序写等优化机制,但是理论上性能还是不如本地存储吧? 还是说存算分离架构就是要牺牲存储性能来换取架构的弹性?2023-07-19归属地:北京11
- 陈Pulsar底层也是一个分区数据一个文件存放的,为什么能支持百万topic?不会产生随机IO带来的性能影响吗?2023-07-31归属地:广东1
- Geek_ec80d2",TTL 仅用于 ACK 掉在 TTL 范围内应被 ACK 的消息,不执行删除操作。真正删除的操作是依靠 Retention 策略来执行的" 这个帮忙代码上确定一下,看日志,5分钟周期ack消息后,马上把满足条件的ledger删除,而不是走retention的删除周期,多谢。2023-07-20归属地:北京