Pulsar vs Kafka
对比
- 消息使用场景:Pulsar 和 Kafka 都没有绝对优势。并且,他们认为在短时间内,该使用场景基本不会发生改变。
- 跨地域复制:Kafka 既提供私有的(价格高)跨地域复制,也提供开源的(附加服务)跨地域复制解决方案。私有的跨地域复制解决方案为其内置特性,但价格高昂。开源的解决方案(MirrorMaker)实际上就是数据复制,但由于不是其内置特性,会增加运营开销。Pulsar 提供开源内置的跨地域复制特性,支持复杂的复制策略。对于使用场景和数据量都在增加的企业而言,显然,支持内置跨地域复制策略的 Pulsar 完胜。
- 复杂消息: Kafka 没有内置死信队列特性,一旦消息处理失败,必须手动处理,或修改代码重试。Kafka 也没有延迟发送消息的内置机制,延迟发送消息流程复杂、工作量大。另外,Kafka 没有内置 schema 实施机制,导致云服务提供商分别提供了不同的 schema 解决方案。Pulsar 内置死信队列特性,当消息处理失败,收到否认 ack 时,Pulsar 可以自动重试,但次数有限。Pulsar 也支持延迟发送消息,可以设定延迟时间。对于 Pulsar 而言,schema 级别高,因此 Pulsar 有内置 schema 注册,Pulsar API 也原生支持 schema。
- 高级消息传递:Kafka 不能分发消息给指定的 consumer。当 consumer 接收到不属于它消费的消息时,要保证这些消息被正确消费,我们只能重新发送这些消息到额外的 topic 中,但这样会造成数据冗余,增加使用成本。因此,我们需要可以制定路由规则发送给指定 consumer 的产品。Pulsar broker 可以通过制定的路由规则,把一个 topic 的不同消息根据路由规则发送到指定的 consumer 中。Pulsar broker 轻松实现了我们的目标,无需任何额外工作。
- 部署和社区:从服务市场来看,Kafka 的提供商更多,销售和支持 Kafka 产品的团队也更多。Kafka 和 Pulsar 的开源社区都积极活跃,但 Kafka 的社区规模更大。但是kafka都是私有商业化方案,可能需要投入一定的资金支持。Pulsar 的各项内置特性都已经过测试,使用团队可以在短时间内完成部署。
- 队列和消息: Kafka 擅长消息传递,也可以处理大规模消息流,但是无法处理队列。Pulsar 可以在同一集群中处理队列和消息,还支持扩展集群。Pulsar可以用于替代RabbitMQ。
- 高级保留: Kafka 团队正在开发分层存储,但 Kafka 目前还不支持这一特性。分层存储是 Pulsar 的原生特性,可以直接用于生产环境。目前已有多个企业在生产环境中部署该特性。
- Topic: Kafka 集群支持创建的分区数量有限且每个 topic 至少需要一个分区。Pulsar 支持存储数百万个 topic,这一功能早已发布并投入生产环境。Pulsar 支持命名空间和多租户,用户可以为每个 topic 设置资源配额,进而节约开销。
- 路由:Kafka 将所有数据存储在单一 topic 中,但是,当 consumer 需要过滤的数据量增加或集群过载时,这个方法不可行。我们通常需要进行水平缩放,增加 consumer 数量,才可以读取全局 topic 并做进一步处理。Pulsar 支持使用 Pulsar Functions 或自定义 consumer / producer 进行路由,因此可以先读取全局 topic,再将数据保存到以国家为单位的特定 topic 上。使用独立 topic,consumer 可以按需订阅 topic,只接收相关消息。
- 权限:Kakfa仅支持简单的用户认证。Pulsar原生支持多租户。
结论:
kafka除了在社区成熟度上超过Pulsar外,其它均不是其优势项。Pulsar其实是现有kafka的一次升级,因为Pulsar是在Kafka的API接口上设计的,它可以无缝升级和集成,以更好地适应特定的用例场景。Kafka只是一个单一系统的解决方案,而Pulsar既是一个流媒体平台,也是一个分布式消息系统。与Kafka相比,Pulsar在多层系统中处理数据流,并解耦消息代理连接,使其成为管理大量数据的优秀且快得多的解决方案。
值得一提的是,Pulsar可以是一个比Kafka更经济的解决方案,因为它的技术设计允许用户驱动更高的性能。如果我们看一下Kubernetes执行的一些测试,就性能而言,Pulsar优于Kafka,而且性价比更高,因为它需要更少的节点数量来提供与Kafka相同或更好的结果。
Kafka并不是被设计成企业级的消息系统。正因为如此,它无法处理如此庞大的数据,而不让用户面临数据丢失的风险。虽然Kafka可以执行这样的功能,但它做得很差。 pulsar优势总结:
- 更快的基准测试——当涉及到流消息和事件、减少延迟以及提供更高的吞吐量时,Pulsar无疑是赢家。
- 地域复制-Pulsar的设计考虑到地球复制;这是它的核心特征。与Kafka不同,Pulsar支持本地地理复制,不需要额外的工具。
- 发布、队列、流——Pulsar是一个集所有功能于一体的平台,允许用户在一个地方合并发布、队列和流。
- 分层/解耦存储——因为Pulsar是建立在多层架构上的,它可以保持数据存储和处理分离。此外,你不需要像Kafka那样为额外的存储或创建分区付费,因为Pulsar自带分层存储,允许你保留消息积压,只要你需要。
- AI和ML工作负载——Pulsar是为机器学习和人工智能构建的,可以让你做出更明智的、数据驱动的决定,这使它成为依赖数据作为竞争优势的现代企业更可行的解决方案。
- 原生云——具有独立的计算和存储级别,您可以使用Pulsar根据您的确切需求扩展消息和事件流通信。