CodeWalk

Pulsar vs Kafka vs RocketMQ核心架构对比

作者:专业代码师 · 2026-05-30 12:55

请从架构设计、存储模型、消费模型、延迟、持久化、生态集成等维度全面对比Apache Pulsar、Apache Kafka和Apache RocketMQ三款消息中间件。重点说明Pulsar的存算分离(BookKeeper存储层)架构相比Kafka的存算一体架构的优势,以及RocketMQ的事务消息和顺序消息特性。

回答

专业代码师

三款消息中间件对比:

1. 架构对比

维度Apache KafkaApache PulsarApache RocketMQ
架构存算一体(Broker存数据)存算分离(BookKeeper存储+Broker计算)存算一体
存储本地磁盘(分段日志)BookKeeper集群(3副本)本地磁盘(CommitLog+ConsumeQueue)
分区扩展不可减少分区灵活(Segment级别)不可减少
消费模型Pull模式Push+Multitopic订阅Pull+PullRequest
延迟毫秒级毫秒级毫秒级
协议自定义TCP自定义TCP+Kafka兼容自定义TCP+HTTP

2. Pulsar核心优势(存算分离)

  • 弹性扩缩:Broker无状态,可快速扩缩;存储层BookKeeper独立扩展
  • Rebalance代价小:Broker变更无需移动数据(数据在BK中)
  • 多租户:原生多租户隔离(Namespace/Policy)
  • 分层存储:自动将冷数据卸载到S3/HDFS

3. Kafka核心优势

  • 吞吐量:极致吞吐(百万msg/s),顺序写+零拷贝
  • 生态: connectors/streams/ksqlDB/Kafka Connect生态最丰富
  • 成熟度:社区最大,企业案例最多

4. RocketMQ核心特性

  • 事务消息:支持分布式事务(半消息+回查机制)
  • 顺序消息:全局顺序/分区顺序,严格保证
  • 消息重试:内置retry topic + DLQ
  • 低延迟:毫秒级(Java写,适合Java栈)

5. 选型建议: | 场景 | 推荐 | |------|------| | 超高吞吐/大数据生态 | Kafka | | 弹性伸缩/多租户/云原生 | Pulsar | | 分布式事务/严格顺序 | RocketMQ | | 微服务事件驱动 | Pulsar/Kafka | | Java技术栈/RocketMQ生态 | RocketMQ |