下一代消息队列pulsar

前言

最近由于业务需求,接触了一个新的中间件,Apache Pulsar。

什么是pulsar? 它是做什么的? 它与kafka 有什么区别?

1、什么是pulsar?

Apache Pulsar是由Yahoo开发并开源的下一代发布订阅消息系统。Pulsar用于解决现有开源消息系统的不足,并已在Yahoo的生产环境中运行了三年多时间,助力Yahoo的主要应用,如Yahoo Mail、Yahoo Finance、Yahoo Sports、Flickr、Gemini广告平台和Yahoo的分布式键值存储系统Sherpa。Pulsar于2016年底开源,目前是Apache软件基金会的孵化器项目 。

2、 它是做什么的?

Pulsar 是一个用于服务器到服务器的消息系统,具有多租户、高性能等优势。

Pulsar 的关键特性如下:



Pulsar 的单个实例原生支持多个集群,可跨机房在集群间无缝地完成消息复制。

极低的发布延迟和端到端延迟。

可无缝扩展到超过一百万个 topic。

简单的客户端 API,支持 Java、Go、Python 和 C++。

支持多种 topic 订阅模式(独占订阅、共享订阅、故障转移订阅)。

通过 Apache BookKeeper 提供的持久化消息存储机制保证消息传递 。

由轻量级的 serverless 计算框架 Pulsar Functions 实现流原生的数据处理。
基于 Pulsar Functions 的 serverless connector 框架 Pulsar IO 使得数据更易移入、移出 Apache Pulsar。

分层式存储可在数据陈旧时,将数据从热存储卸载到冷/长期存储(如S3、GCS)中。
3、 它与kafka 有什么区别?

组件
Pulsar 有 3 个重要组件:broker、Apache BookKeeper 和 Apache ZooKeeper。Broker 是无状态服务,客户端需要连接到 broker 进行核心消息传递。而 BookKeeper 和 ZooKeeper 是有状态服务。
BookKeeper 节点(bookie)存储消息和游标,ZooKeeper 则只用于为 broker 和 bookie 存储元数据。另外,BookKeeper 使用 RocksDB 作为内嵌数据库,用于存储内部索引,但不能独立于 BookKeeper 单独管理 RocksDB。

在这里插入图片描述

Kafka 采用单片架构模型,将服务与存储紧密结合,而 Pulsar 采用了多层架构,各层可以单独管理。Pulsar 在 broker 计算层进行计算,在 bookie 存储层管理有状态存储。

表面上来看,Pulsar 的架构似乎比 Kafka 的架构更为复杂,但实际情况并非如此。架构设计需要权衡利弊,Pulsar 采用了 BookKeeper,因此伸缩性更灵活,速度更快,性能更一致,运维开销更小。

在这里插入图片描述

参考:https://pulsar.apache.org/docs/zh-CN/concepts-architecture-overview/
https://cloud.tencent.com/developer/article/1515270
https://www.jianshu.com/p/f8c41fb28386

猜你喜欢

转载自blog.csdn.net/weixin_43975771/article/details/120648460