面对kafka和pulsar你该如何做技术选型
比较项 | Kafka | Pulsar | 备注 |
---|---|---|---|
定位 | 分布式日志流系统 | ||
数据消费模型 | Pull | Push? | Pulsar实际是Push但客户端API用起来像Pull? |
存储架构 | Log | Index | 基于index的存储会使用树型数据结构,随机读取快,写入是否会存在延迟与放大? |
架构 | 单片架构 | 多级架构 | |
涉及组件 | Broker ZK | Broker ZK BookKeeper RocksDB | |
运营部署 | 架构更简单,但数据迁移更复杂后续kafka会移除zk | 部署组件更多,但简化扩容时的运维操作 | |
云原生支持 | 支持 | 支持 | MQ是否适合K8S? |
文档与学习资料 | 资料更多 | 国人主导,中文资料更方便 | |
生态 | 比较完善 | 目前还不是很完善 | Pulsar给广大开发者提供了机会 |
社区用户规模 | 多 | 较少 | |
商业化支持 | 多,但国内不多商业化高级特性未开放 | 少,但与StreamNative团队沟通是方便的 | |
托管云服务 | 多,腾讯云Ckafka | 少,但腾讯云在灰度TDMQ | |
内置管理工具 | 少,依赖生态 | 多,原生提供管理工具 | |
数据集成 | 丰富,得益于其生态 | 较少,主要依赖StreamNative团队 | Pulsar和Tube还是有空间,但是想达到Kafka规模还是需要一段时间 |
客户端lib | 官方只支持Java,有各自各样的轮子(稳定性待确定) | 官方支持版本较多,但是客户端功能与稳定性可能不如Kafka | |
吞吐量 | 高 | 高 | 都宣称吞吐高于竞品,从实际使用看都差不多 |
延迟 | 低 | 低 | |
集群拓展性 | 支持 | 优势 | |
分级存储 | 规划中 | 貌似有 | |
内置流处理 | kafka-stream更成熟ksqlDB | pulsar-function更轻量 | 目前看意义都不是很大?流处理趋势Flink一统天下 |
消息回放、时间旅行 | 支持 | 支持 | |
Exactly-once处理 | 支持 | 支持,事务等功能追赶Kafka中 | |
Topic (log) 整合 | 支持 | 支持 | |
安全 | 支持,但不完善 | 支持,但不完善 | |
事件流 | 生态强 | 设计更好 | |
队列功能 | 分区有序 | 提供队列API | |
消息路由 | |||
核心应用 | 广泛 | 较少,主要是雅虎 | |
成本 | 低 | 低 | |
优势 | 高吞吐海量存储 | 队列 事件流 |
参考资料:
《Kafka vs. Pulsar vs. RabbitMQ: Performance, Architecture, and Features Compared》https://www.confluent.io/kafka-vs-pulsar/
《Pulsar 与 Kafka 全方位对比(上篇):功能、性能、用例》 https://mp.weixin.qq.com/s/2zVuDB_xVQzYJg-SqoPouQ
confluent 和 streamnative 从各自角度(利益相关)对kafka与pulsar进行对比