消息队列Pulsar详解

Apache Pulsar 是一个分布式、可扩展、高性能的消息队列(MQ)和流处理平台,在设计上融合了 Kafka 的高吞吐能力 + RabbitMQ 的灵活性 + Pub/Sub 模式的强一致性。


一、Pulsar 是什么?

  • 消息系统(Message Queue):支持队列模型(Queue)+ 发布订阅(Pub/Sub)
  • 存算分离 架构:Brokers 负责接收发送,BookKeeper 负责数据持久化
  • 原生支持多租户、地理多数据中心、分区、订阅模式
  • 支持 高吞吐 + 低延迟 + 海量 Topic

二、核心架构图

Producer → Broker → BookKeeper ← Consumer
                  ↑
              Zookeeper(协调)
组件功能说明
Producer发送消息到 topic
Broker路由消息、维护元数据、管理连接
BookKeeper存储消息日志(持久化层)
Consumer消费者读取消息
Zookeeper负责元数据协调、管理服务发现和分区信息

三、Pulsar vs Kafka 区别

特性PulsarKafka
存储架构✅ 存算分离(BookKeeper)❌ 计算和存储耦合
多租户支持✅ 原生⚠️ 需自己扩展
消费模型✅ 多订阅模式(exclusive, shared)单订阅组
Topic 数量支持✅ 百万级(轻量)⚠️ 数千个后性能下降
延迟/吞吐低延迟 / 高吞吐高吞吐,但延迟稍高
消息确认机制(ack)✅ 精细控制⚠️ 粗粒度
地理多中心复制(Geo Rep)✅ 原生⚠️ 依赖 MirrorMaker
消息回溯/延迟消息✅ 支持Kafka 也支持(需要配置)

👉 简言之:Pulsar 更现代、更灵活,更适合云原生和大规模多 Topic 的场景。


四、核心概念

概念说明
Tenant租户(多租户支持)
Namespace命名空间(隔离资源)
Topic消息通道,可分区、可复制
Producer发送消息的客户端
Consumer接收消息的客户端
Subscription订阅名,控制消息消费进度
Ack确认消费(支持单条或批量)
Retention消息保留策略
Compaction消息压缩保留(last-value only)

五、订阅模式(消费模型)

Pulsar 支持多种订阅方式,适配不同场景:

模式特点说明
Exclusive仅一个 consumer 能订阅该 subscription(强唯一)
Shared多个 consumer 共享消费,负载均衡
Failover主备切换,类似 Kafka group
Key_Shared同一个 key 的消息只会被一个 consumer 处理(有序)

六、开发示例(Java SDK)

引入依赖

<dependency>
  <groupId>org.apache.pulsar</groupId>
  <artifactId>pulsar-client</artifactId>
  <version>3.2.0</version>
</dependency>

发送消息(Producer)

PulsarClient client = PulsarClient.builder()
    .serviceUrl("pulsar://localhost:6650")
    .build();

Producer<String> producer = client.newProducer(Schema.STRING)
    .topic("my-topic")
    .create();

producer.send("Hello Pulsar");
producer.close();
client.close();

接收消息(Consumer)

Consumer<String> consumer = client.newConsumer(Schema.STRING)
    .topic("my-topic")
    .subscriptionName("my-subscription")
    .subscriptionType(SubscriptionType.Shared)
    .subscribe();

while (true) {
    Message<String> msg = consumer.receive();
    System.out.println("Received: " + msg.getValue());
    consumer.acknowledge(msg);
}

七、管理工具

工具说明
Pulsar Admin CLI管理 topic、namespace、tenant、消息等
Pulsar DashboardWeb UI,可视化管理(需部署)
Pulsar Manager官方 Web 管理平台
Prometheus + Grafana性能监控集成

八、云原生支持

  • ✅ Kubernetes Operator:自动化部署
  • ✅ 支持 Function(轻量计算逻辑)、Connector(数据源接入)
  • ✅ 支持 Kafka 协议(使用 Pulsar-Kafka wrapper)

九、使用 Pulsar 的典型场景

场景说明
高并发日志收集比 Kafka 更低延迟、更高吞吐
多租户微服务间通信支持 tenant、namespace 隔离
流计算、消息驱动架构与 Flink / Spark 集成良好
事件驱动架构、分布式任务处理支持延迟消息、精准 Ack
地理多活、跨数据中心复制支持 geo-replication

十、总结一句话

Pulsar = Kafka + RabbitMQ + 云原生能力的融合体
性能强、功能全、架构现代,是下一代消息平台的有力选择。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

思静鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值