Pulsar和Kafka的对比

134 阅读2分钟

Plusar是基于云上的多租户的设计,而Kafka更偏向于在系统和系统之间对接,是单租户设计,提供高吞吐。

PulsarKafka
数据集合Topic切分多个partitions,但一个partition只由一个broker负责读写(ownership)且一个partition均匀分散到多台bookie节点上持久化存储Topic切分多个partitions,各partition以目录形式在leader broker及其副本brokers 上持久化存储
租户基于云的多租户设计单租户、高吞吐设计
部署较好适配容器化部署模式以虚拟机部署为主
topic量级支持数百万个topic,实现不丢数据无法支持量级较大topic
扩容难易计算与存储分享,扩容简单,业务中断时长短扩容复杂
订阅模型灵活支持共享订阅类型只支持Failover消费模式
P99延迟稳定波动较大
数据存储单元Partition->Ledges->FragmentsPartition->Segments
存储节点BookKeeper Bookie(分散持久化到bookie,由broker内嵌的bookkepper client负责读写)Broker (直接持久化到broker,由client SDK直接读写)
读写组件Pulsar BrokerClient SDK
数据一致性保证通过多broker集群,broker Quorum Write 到bookie,返回Quorum ACK保证通过多broker集群,每个partition多副本,producer指定发送确认机制保证

Kafka:

  1. 负载均衡需要人工介入:手动按异构配置的broker对应生成assignment执行计划
  2. 故障恢复不可控:broker重启后需复制分区新数据并重建索引,其上的读写请求转移到其他broker,流量激增场景下可能会导致集群雪崩。
  3. 跨数据中心备份需维护额外组件 优点:
  • 生态成熟,易于Flink等现有组件集成
  • 参考资料众多,有完善的官方文档和书籍
  • 模型简单易上手:partition有replication,以segment和index方式存储 缺点:
  • 计算与存储耦合