订阅更新

Pulsar 和 Kafka 有什么区别?什么时候选 Pulsar?

面试问 363 约 2 分钟读完

随机一题
本文目录
  1. 面试怎么回答
  2. 最大的区别:存算分离
  3. 其他差异
  4. Kafka 的优势
  5. 怎么选

面试怎么回答

核心区别是存算分离:Kafka 的 Broker 同时负责服务和本地存储,扩容或故障后要搬迁分区数据;Pulsar 的 Broker 无状态,数据分段存在 BookKeeper 上,扩容不用迁移数据。Pulsar 还原生支持多种订阅模式、多租户、分层存储和跨地域复制。Kafka 的优势是生态成熟、组件少、人才多。已有 Kafka 体系时我一般继续用 Kafka,有强多租户、弹性扩缩容或队列加流混合消费的需求时才评估 Pulsar。

先把这段讲顺;面试官追问时,再展开下面的原理和细节。

详细讲解

消息队列选型时会被问:Pulsar 号称解决了 Kafka 的一些痛点,具体是哪些?

最大的区别:存算分离

Kafka 的 Broker 既负责收发消息,也负责存储,分区的数据就在 Broker 的本地磁盘上。扩容或节点故障后,分区数据需要在 Broker 之间搬迁,数据量大时很耗时。

Pulsar 把两者拆开:Broker 只负责收发和路由,是无状态的;数据存储在 BookKeeper 集群(Bookie 节点)上,以分段(segment)的形式分散存放。扩容 Broker 不需要迁移数据,扩容存储时新数据自然写到新节点上。

其他差异

  • 订阅模式:Pulsar 原生支持独占、故障转移、共享、按 Key 共享等多种订阅模式,既能做 Kafka 式的按分区顺序消费,也能做队列式的多消费者共享。
  • 多租户:Pulsar 有租户、命名空间的层级,配额和权限可以按租户隔离。
  • 分层存储:老数据可以自动卸载到对象存储,适合长期保留。
  • 跨地域复制:内置 geo-replication。

Kafka 的优势

  • 生态成熟,Flink、Spark、各类 Connector 和运维工具都以 Kafka 为首选;
  • 架构组件少(KRaft 模式下不再依赖 ZooKeeper),运维门槛低;
  • 社区和人才储备更大。

Kafka 近年也在补齐分层存储等能力。

怎么选

已有 Kafka 体系、团队熟悉 Kafka,大多数场景继续用 Kafka;如果有大量多租户隔离、需要队列和流两种消费模式、或者对弹性扩缩容和长期存储要求很高,可以评估 Pulsar。