功能性
|
kafka |
pulsar |
| 租户 |
单租户,可底层隔离 |
多租户, 企业级隔离.方便对接k8s的namespace. |
| 数据转移 |
mirror maker独立部署 |
geo-replication 内置功能 |
| 冷热存储 |
商业使用 |
层级存储, 支持的非常好 |
| 组件依赖 |
2.8.0之后剥离ZK |
强依赖ZK, 组件复杂 |
| 云原生支持 |
较为复杂 |
天然支持 |
非功能性
|
kafka |
pulsar |
| 分区 |
kafka分区与broker强耦合[一个partion一个broker] |
partion条带化,分成粒度更细的segment。segment 分散再多个bookeeper的节点上 |
| 水平扩展[某一节点宕机] |
1. broker id不会自动转移,要手动维护。2. 新的broker无法承载旧的partition的流量,要手动均衡。 |
broker计算节点宕机,zookeeper元数据要变更。不影响producer,comsumer。 |
| 追赶读&延迟抖动敏感场景 |
1. 重度依赖pagecahce, 追赶读的数据会冲刷掉追尾读的未读取部分 2. zero copy在内存有明显争抢情况下,会出现延迟抖动非常剧烈。 |
使用JVM管理的堆外内存,更可控。对内存的依赖小于kafka. |
参考
深入对比 Apache Pulsar 与 Kafka Pulsar Summit Asia 2022 ***