随着企业面临日益复杂的 IT 和数据环境,他们依靠消息传递和流式数据平台来确保跨应用程序、系统和服务进行快速、可靠的数据交换。随着实时数据分析成为可操作的洞察分析的关键驱动因素,加快数据流和数据处理的速度成为重中之重。根据 IDC 2025 年的数据,接受调查的企业表示,63% 的用例必须在数分钟内处理数据才能发挥作用。
Pulsar 融合传统消息系统与发布/订阅系统特性,特别适用于微服务、即时通讯及数据集成场景。Pulsar 的多功能性得益于异地复制、多租户隔离与分层存储等核心功能。
Apache Pulsar 最初由雅虎开发,2016 年由 Apache 软件基金会开源,现为全球头部企业日均管理数千亿事件。
要理解 Apache Pulsar 的重要性,需先明晰消息与事件流平台的工作原理。
消息是应用程序创建的供其他应用程序使用的数据包。这些数据包按传输顺序使用,直到使用数据包的应用程序处理它们。
消息传递系统有助于这些消息的交换。传统的消息传递系统是中间件解决方案(也称为面向消息的中间件或 MOM)。这些解决方案通常支持两种消息分发模式:点对点消息传递和发布/订阅消息传递。
在点对点消息传递中,一个应用程序(称为发送方)将消息提交到所谓的消息队列,该队列存储该消息。然后,另一个应用程序(称为接收方或使用方)从队列接收消息并进行处理。每条消息只能被使用一次。
在发布/订阅消息传递过程中,生成消息的应用程序称为发布方。使用它的应用程序被称为订阅方。每条消息都会发布到一个称为主题的类别,订阅该主题的每个应用程序都会收到发布到主题的所有消息的副本。
分区和分区主题可以加速消息处理。发布到分区主题上的信息会在多个代理之间分发。
发布/订阅消息系统专为“一对多”广播式通信设计。点对点消息传递(顾名思义)则在单一发送方与接收方间交换信息。
在传统的消息传递系统中,开源平台 RabbitMQ 经常被认为是最受欢迎的。
事件流平台实时捕获来自应用程序、数据库及 IoT 设备的数据。然后,将其传输至不同目的地供即时处理、分析或存储。
事件流平台以可扩展性著称,能将记录流按主题排序并存储预设时长。然而,与传统消息传递系统不同,事件流平台无法保证消息传递,也无法追踪哪些使用者已接收消息。其依赖发布/订阅消息传递模式,而非点对点消息分发,且在消息路由方面灵活性较低。
在事件流平台中,Apache Kafka 的使用最为广泛。
Apache Pulsar 将 RabbitMQ 和 Apache Kafka 等平台的功能整合到一个解决方案中。它可以流式传输事件并像 Kafka 一样将消息传递给多个使用者;它支持队列,并可以像 RabbitMQ 一样向单个使用者发送消息。
但是,Pulsar 不仅仅是其前代产品的总和。Yahoo 最初开发该平台是为了满足自身的组织需求,因此从一开始就具有一定的竞争优势。此后的几年里,其他改进进一步增强了 Pulsar 作为高性能消息传递和流数据平台的能力。
如今,Apache Pulsar 一些最引人注目的功能包括:
将消息复制到远程位置对于支持灾难恢复或使应用程序能够在全球范围内运行非常重要。与其他平台不同,Pulsar 不需要复杂的配置或附加组件来实现此功能。
通过地理复制,应用程序可以连接到本地 Pulsar 集群,并仍然发送到世界各地的集群。如果生产者向复制的命名空间中的主题发布消息,该消息将自动复制到配置的一个或多个远程地理位置。
Pulsar 架构将消息传送组件(消息代理)和消息存储层分开。消息由 Apache BookKeeper 存储,这是持久日志存储解决方案领域众所周知的领导者。
为提升性能,BookKeeper 将数据分布至多台服务器(即 Bookie)。(BookKeeper 账本元数据存储于 Apache ZooKeeper 中。)可按需扩展 Bookie,实现支撑海量数据的水平扩展能力。该架构使 Pulsar 兼具低延迟与高吞吐特性——短时间内传输大规模数据。
Pulsar 架构亦属云原生架构。Pulsar 与云计算共通的存算分离设计。此外,Pulsar 可以部署于 Kubernetes(现代云基础设施核心组件,开源 容器编排 平台)。
Apache Pulsar 还具有分层存储功能。此能力允许较旧的待办事项数据从 Apache BookKeeper 移动至成本较低的长期存储空间,同时仍允许 Pulsar 客户端访问待办事项。
Pulsar 分层存储使用 Apache jclouds(Java 平台的开源多云工具包)通过 AWS S3(Amazon S3)、GCS(Google 云存储空间)、Azure 和阿里云等解决方案来支持长期存储。
借助 Pulsar IO 连接器,Apache Pulsar 可轻松与外部系统配合使用。这些连接器充当 Pulsar 与其他系统(例如流处理引擎、数据管道 API 和其他消息传递平台)之间的桥梁。
Pulsar 连接器有两种类型:源和汇。源连接器将数据从外部系统传输到 Pulsar,而汇连接器则相反,将数据从 Pulsar 传输到外部系统。常用的 Pulsar 连接器包括 MySQL、MongoDB、Cassandra、RabbitMQ、Kafka、Flume 和 Redis。
Apache Pulsar 支持四种不同的 订阅类型1,供用户配置消息传递模式:
Pulsar 其他值得注意的功能包括:
代理负载均衡:Pulsar 监控 Pulsar 代理节点的 CPU、内存及网络使用率,按需迁移工作负载以实现最优平衡,避免单节点过载。
架构注册表:Pulsar 的架构注册表使 Pulsar 客户端能够按主题上传数据架构,以确保生产者和使用者使用兼容的消息格式。
客户端库:客户端库是预构建的函数和程序,可简化应用程序与 API、数据库和服务之间的交互。Pulsar 支持特定编程语言的库(包括 Java、C++、Python 和 Node.js 的库)和与语言无关的库(REST 和 WebSocket)。
消息保存策略:传统系统在消息使用后立即删除。Pulsar 则允许设置保存策略,即使消息已被使用仍可存储,此特性支持事件驱动架构模型。
Apache 软件基金会的以下用例有助于说明 Apache Pulsar 的实用性和多功能性。2
当企业决定整合消息传递技术时,Apache Pulsar 往往成为首选平台,因其同时支持多种消息传递应用场景(包括消息队列和流处理),并具备多租户能力,使得多个团队都能以最符合需求的方式使用该平台。
寻求关键应用程序(如金融交易)数据零丢失保障的企业,可借助 Apache Pulsar 的故障容错特性。具体而言,经 Pulsar 传输的消息会复制到多个 BookKeeper 节点。此外,硬件故障时仍确保消息不会丢失。
Apache Pulsar 通过间接 API 调用支持微服务之间所需的持续通信。 服务向其他服务订阅的主题发送消息。尽管其他消息传递系统具备类似功能,但 Pulsar 凭借水平扩展功能脱颖而出——该平台可在数分钟内扩容应对突发请求洪流。
消息系统普遍支持任务队列(即异步执行后台作业且不影响应用性能的机制)。Apache Pulsar 通过其共享订阅(可将消息分发给多个使用者)和消息确认机制支持任务队列系统,该机制能确认任务的完成状态。
企业要想蓬勃发展,就必须利用数据建立客户忠诚度,实现业务流程自动化,并利用 AI 驱动的解决方案进行创新。
通过 IBM Consulting 发掘企业数据的价值,建立以洞察分析为导向的组织,实现业务优势。
推出 Cognos Analytics 12.0,人工智能驱动洞察分析可以更好地做出决策。