深度剖析 Apache Pulsar:架构、优势与选型指南

Apache Pulsar 是一款云原生分布式消息流平台,融合了消息队列、流处理和存储能力,采用独特的“存储计算分离”架构(Broker 无状态 + BookKeeper 持久化存储)。以下从核心特性、对比优势及适用场景展开分析:

  • 一、Pulsar 的核心架构与特性
  • 二、对比主流消息队列的优劣势
    • 优势总结
    • 局限性
  • 三、典型应用场景
  • 四、选型建议

在这里插入图片描述

一、Pulsar 的核心架构与特性

  1. 分层架构设计

    • 计算层(Broker):无状态代理节点,负责消息路由、负载均衡,支持秒级水平扩容。
    • 存储层(BookKeeper):分布式日志存储,数据分片(Ledger)多副本强一致,故障时自动迁移数据,保障金融级可靠性。
    • 元数据层(ZooKeeper):管理集群配置和状态(社区正逐步减少依赖)。
  2. 关键特性

    • 多租户隔离:租户(Tenant)与命名空间(Namespace)天然隔离资源,支持独立配置策略(如权限、TTL)。
    • 订阅模式灵活
      • 独占(Exclusive)、共享(Shared)、灾备(Failover)、Key-Shared(按消息Key分区消费)。
    • 百万级Topic支持:Topic数量增长不影响性能,无需预分区(Kafka万级Topic后性能下降)。
    • 流批一体:分层存储(Hot/Cold Data)支持实时流处理与历史批处理统一平台。
    • 多协议兼容:原生支持Kafka(KoP)、RabbitMQ(AMQP)、MQTT协议,迁移成本低。

二、对比主流消息队列的优劣势

维度PulsarKafkaRabbitMQRocketMQ
架构存储计算分离,扩展性强存储计算耦合,扩容需数据迁移单体架构,扩展复杂存储计算半分离(5.0+优化)
性能低延迟(<5ms)且高吞吐(百万QPS)高吞吐但分区数增多时延迟飙升中小规模吞吐,延迟稳定高吞吐,延迟中等
可靠性强一致(Quorum写入)多地域复制依赖副本同步,跨地域复制复杂依赖镜像队列,性能损耗大主从复制,故障切换慢
功能丰富度内置延迟消息、死信队列、事务消息需外部组件支持延迟消息支持延迟队列,无原生事务支持事务、顺序消息
运维成本自动负载均衡,支持K8s部署分区Rebalance开销大,运维复杂集群管理复杂需手动调整分区
优势总结
  • 扩展性碾压:Broker无状态扩容秒级完成,BookKeeper存储层独立扩展。
  • 场景覆盖广:兼顾队列模型(Queue)和流模型(Stream),替代多套中间件。
  • 金融级容灾:跨地域复制(Geo-Replication)支持异步/同步强一致模式。
  • 云原生友好:Serverless化设计,按需弹性和计费(如腾讯云TDMQ)。
局限性
  • 部署复杂度高:依赖ZooKeeper+BookKeeper,组件较多(社区正简化)。
  • 生态成熟度:Kafka生态更庞大(Connectors、Streams),Pulsar生态快速追赶中。

三、典型应用场景

  1. 金融交易系统
    • 腾讯计费平台用Pulsar处理每天数亿美元交易,依赖其强一致性和跨地域容灾。
  2. 实时数仓与流批一体
    • 分层存储将热数据实时处理(Flink)+ 冷数据批分析(Spark),避免数据搬迁。
  3. 物联网海量设备接入
    • 百万级Topic支持每个设备独立通道,共享集群资源。
  4. 微服务异步解耦
    • 延迟消息(订单超时关单)、死信队列(异常重试)原生支持。

四、选型建议

  • 选 Pulsar
    ✅ 需超大规模扩展(如百万Topic)
    ✅ 强一致性与跨地域容灾是关键需求
    ✅ 流批一体降低架构复杂度
    ✅ 混合协议(Kafka/MQTT等)迁移场景
  • 选 Kafka
    ✅ 生态成熟度优先(如Connect生态)
    ✅ 纯日志流处理且分区数可控
  • 选 RabbitMQ
    ✅ 轻量级业务,需快速搭建队列
    ✅ 复杂路由规则(Exchange机制)

💡 技术趋势:Pulsar凭借云原生架构成为新一代消息系统标杆,已在腾讯、Yahoo、BIGO等企业替代Kafka。若团队面临性能瓶颈或运维痛点,Pulsar是更面向未来的选择。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/86784.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/86784.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java 导出word 实现循环表格

如果是固定的值 用 {{}} 即可 但是如果是循环表格&#xff0c;那么就需要制定模板为如图 然后在处理表格数据时候&#xff1a; /*** 传入 节点对象 返回生成的word文档* param flangeJoint* return* throws IOException*/private XWPFTemplate getXwpfTemplate(CmComplaintEn…

XIP (eXecute In Place)

NOR Flash 能直接执行代码(XIP)而 NAND Flash 不能,根本原因在于它们的物理结构和访问接口存在本质区别。下面用技术原理 + 现实比喻帮你彻底理解: 1. XIP 是什么? XIP (eXecute In Place) 指代码不需要从存储介质复制到 RAM,而是 CPU 直接从存储介质(如 Flash)中读取…

【android bluetooth 协议分析 10】【AVRCP详解1】【PlaybackStateCompat类如何查看】

1. 问题 android/app/src/com/android/bluetooth/avrcpcontroller/AvrcpControllerService.java import android.support.v4.media.MediaBrowserCompat.MediaItem; import android.support.v4.media.session.PlaybackStateCompat;private int toPlaybackStateFromJni(int fro…

【AI学习从零至壹】LLM模型prompt开发及⼤模型应⽤

LLM模型prompt开发及⼤模型应⽤ ⼤语⾔模型 LLM如何构建⼀个AI对话系统关于模型的训练 ollama调⽤LLM模型设置API KEY测试一个对话 prompt提示词提示词结构特征提示词的五大核心价值1. 信息传递的精准性2. 输出质量的可控性3. 用户意图的对⻬性4. 复杂任务的拆解性5. 伦理⻛险的…

ubuntu20.04如何给appImage创建快捷方式

ubuntu20.04如何给appImage创建快捷方式 1. 确保AppImage是可执行的 chmod x /path/to/your/appimage2. 创建.desktop文件 在~/.local/share/applications/目录下创建一个新的 .desktop 文件&#xff1a; vi ~/.local/share/applications/your-appname.desktop添加以下内容…

RT-Thread 详解:国产开源实时操作系统

一、RT-Thread 概述 定义&#xff1a;RT-Thread 是中国自主研发的开源实时操作系统&#xff08;RTOS&#xff09;&#xff0c;兼具实时性与物联网&#xff08;IoT&#xff09;特性&#xff0c;支持从资源受限的 MCU&#xff08;如 STM32、ESP32&#xff09;到高性能处理器&…

Wan2 1-VACE

简介 VACE是阿里新开源的视频编辑/生成框架&#xff0c;号称能够执行任意的视频编辑/生成。总体而言&#xff0c;该模型在整体结构上并没有太大改变&#xff0c;仅仅是在原Wan2.1模型的基础上&#xff0c;加了一个接受mask和视频输入的controlnet而已。但是这篇文章认为&#…

基于 opencv+yolov8+easyocr的车牌追踪识别

&#xff08;本项目所有代码打包至我的资源中&#xff0c;大家可在我的文章底部选择下载&#xff09; 目录 需求 实现效果 学习视频 大致思路 代码实现 资源下载 需求 通过车辆识别技术&#xff0c;识别视频中每个车辆及其车牌号&#xff0c;车辆应进行追踪&#xff0c;避免重复…

sqlserver函数与过程(二)

过程 SQLserver 过程是具有特定功能&#xff0c;可多次对数据表操作的独立模块。返回值通常用return 返回整数 0&#xff0c;1…。(可选&#xff09;也可通过output 参数或select 语句返回结果集。 1.过程的定义 本过程定义了一个过程&#xff0c;输入一个动态SQL语句&#…

OpenCV学习3

1、创建图像窗口滑动条 OpenCV 4中通过createTrackbar()函数在显示图像的窗口上创建滑动条。 int cv::createTrackbar(const String &trackbarname,const String &winname, int *value, int count, TrackbarCallback onChange 0, void *us…

SRS流媒体服务器之本地测试rtc推流bug

SRS环境版本 commit 44f0c36b61bc7c3a1d51cb60be0ec184c840f09d Author: winlin <winlinvip.126.com> Date: Wed Aug 2 10:34:41 2023 0800 Release v4.0-r5, 4.0 release5, v4.0.271, 145574 lines. bug1: 无法推流 WebRTC推流必须是HTTPS或者localhost&#xff1a;Ht…

物理服务器是指的什么?作用有哪些?-哈尔滨云前沿

物理服务器是一种基于传统硬件架构构建的服务器&#xff0c;物理服务器是具有处理器、硬盘和网络接口等硬件组件的独立服务器&#xff0c;可以用于托管和存储数据服务&#xff0c;&#xff0c;是计算机网络的核心组件之一&#xff0c;本文就来详细了解一下物理服务器。 物理服务…

Lua现学现卖

一、Lua的变量类型 全局变量&#xff1a;MyVar 局部变量&#xff1a;local MyVar 二、Lua的数据类型 1.nil&#xff1a;一个空值 类似C的nullptr 2.Boolean&#xff1a;true/false 类似C的bool 3.string&#xff1a;字符串 类似C的std::string 4.Number&#xff1a;数字 类似C…

(24)如何在 Qt 里创建 c++ 类,以前已经学习过如何在 Qt 里引入资源图片文件。以及如何为继承于 Qt已有类的自定义类重新实现虚函数

&#xff08;1&#xff09; 如何在Qt里创建 c 类 &#xff1a; 效果图如下 &#xff1a; &#xff08;2&#xff09;开始完善自定义类里面的成员函数 &#xff1a; 接着 &#xff1a; 以及 &#xff1a; 接着重新实现这些继承来的虚函数就可以了。 &#xff08;3&#xff09…

怎样优化HDFS的网络传输

优化HDFS&#xff08;Hadoop Distributed File System&#xff09;的网络传输可以从多个方面入手&#xff0c;以下是一些常见的优化策略&#xff1a; 1. 网络硬件升级 增加带宽&#xff1a;使用更高带宽的网络设备&#xff0c;如10Gbps或更高速度的交换机和网卡。减少延迟&am…

深入探索 Pdfium.Net:在 .NET 中处理和渲染 PDF 文件

在现代软件开发中&#xff0c;PDF 文件的处理变得愈加重要&#xff0c;尤其是在文档管理、报表生成和在线内容展示等领域。为了高效地处理和渲染 PDF 文件&#xff0c;开发者通常会选择一些强大的 PDF 处理库。而 Pdfium.Net&#xff0c;作为 PDFium 库的 .NET 封装&#xff0c…

当无人机遇到AI智能体:多领域自主空中智能和无人机智能体综述

作者&#xff1a;Ranjan Sapkota, Konstantinos I. Roumeliotis, Manoj Karkee 单位&#xff1a;康奈尔大学生物与环境工程系&#xff0c;希腊伯罗奔尼撒大学信息与电信系 论文标题&#xff1a;UAVs Meet Agentic AI: A Multidomain Survey of Autonomous Aerial Intelligenc…

从 0 到 1 玩转 React:打造你的趣味美食相册

想象一下&#xff0c;你想制作一个超酷的 “美食相册” 网页&#xff0c;能展示各种美食图片&#xff0c;还能随时切换查看不同美食。这听起来是不是很有趣&#xff1f;别担心&#xff0c;React 能帮你轻松实现&#xff01;作为前端开发领域最受欢迎的库之一&#xff0c;React …

深入浅出:RocketMQ与Kafka的双剑合璧,实现高可用与高吞吐

本文在创作过程中借助 AI 工具辅助资料整理与内容优化。图片来源网络。 文章目录 引言一、RocketMQ与Kafka的江湖地位1.1 RocketMQ的独门绝技1.2 Kafka的凌厉攻势 二、双剑合璧的策略&#xff1a;双写队列2.1 策略概述2.2 代码实现 三、双剑合璧的实战应用3.1 电商订单处理3.2 …

Apache POI-02.入门案例-通过POI向Excel文件写入文件内容-通过POI读取Excel文件内容

一.入门案例 向excel文件中写入并读出 package com.sky.test;import org.apache.poi.xssf.usermodel.XSSFCell; import org.apache.poi.xssf.usermodel.XSSFRow; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; impor…