数据结构论坛

首页 » 分类 » 分类 » 开源实时数据处理系统Pulsar一套搞定
TUhjnbcbe - 2025/2/15 18:13:00

编辑

Debra

本文整理自Streamlio核心创始人翟佳在QCon北京站的演讲,在本次演讲中,翟佳介绍了ApachePulsar的架构、特性和其生态系统的组成,并展示了ApachePulsar在消息、计算和存储三个方面进行的协调、抽象和统一。

Messaging:Pulsar对pub/sub和queue两种模式提供统一的支持,同时保证了一致性,高性能和易扩展性。

Computing:Pulsar内部的Pulsar-Functions提供了Stream-native的轻量级计算框架,保证了数据的即时流式处理。

Storage:Pulsar借助ApacheBookKeeper提供了以segment为中心的存储架构,保证了存储的性能,持久性和弹性。

实时数据处理在刚刚兴起的时候,一般企业会采用λ架构,维护两套系统:一套用来处理实时的数据;另一套用batch的方式处理历史数据。两套系统带来了资源的冗余占用和维护的不便。

为了消除冗余,逐渐演化出κ架构,使用一套系统来满足实时数据处理和历史数据处理的需求。

不管是λ架构还是κ架构,在实时处理的系统中,系统的核心由消息、计算和存储三个子系统组成,比如消息系统有Kafka、RabbitMQ、Flume等;计算系统有SparkStreaming、Flink、Heron等;存储系统有各种分布式的文件系统,DB、K/Vstore等。由于三个部分中,每个部分都有相应的不同产品,三个部分之间也相互分隔和独立很少关联,这带来了一些问题,比如需要更多人力维护,部署复杂,调优难度大,监管难,数据丢失风险大等等。

为什么要选择ApachePulsar?

面对消息,存储和计算三个部分分隔的现状,ApachePulsar在这三个方面进行了很好的协调、抽象和统一。具体到ApachePulsar内部,消息部分由PulsarBroker来负责;存储部分使用了ApacheBookKeeper,计算部分由PulsarFunctions来负责。

ApachePulsar是年yahoo开源的下一代大规模分布式消息系统,目前在Apache基金会下孵化。在Yahoo的生产环境中大规模部署并使用了近4年,服务于Mail、Finance、Sports、Flickr、theGeminiAdsplatform、Sherpa以及Yahoo的KV存储等,在Yahoo全球8个数据中心之间维护了全联通的复制,并包含了多万个Topics。

ApachePulsar有几个明显区别于其他消息系统的特点:

优秀的数据持久性和顺序性。每一条消息都提供了全局唯一的ID,多副本,并都是在实时刷盘后再返回给用户。

统一的消费模型:支持Stream(如Kafka)和Queue(如RabbitMQ)两种消费模型,支持exclusive、failover和shared三种消费模式。

灵活的扩展性:节点扩展的线性和瞬时完成,在扩展中不会有数据的拷贝和迁移。

高吞吐低延迟,在实时刷盘的前提下,依然提供了高带宽(万messages/秒)和低延迟(5msat99%)。

除了这些特性,ApachePulsar也具备了优秀的企业级特性,比如多机房互联互备(Geo-replication),多租户等。

ApachePulsar在架构上最明显的优势是采用了消息服务和消息存储分层的策略。它包括了无状态的消息服务层(broker节点)和消息存储层(BookKeeper中Bookie是基本的存储节点)。这为系统带来了极好的扩展性和健壮性。

在消息服务层和存储层,系统所

1
查看完整版本: 开源实时数据处理系统Pulsar一套搞定