datastax.·7分钟阅读
作者的注意事项:我最初在2022年发布了这篇博客文章,而我是Kesque的首席执行官,是Apache Pulsar的实时消息服务,云本机分布式消息传递和流式媒体平台。这是一个早期帖子的后续行动,“选择Apache Pulsar的7个理由选择Apache Kafka。”由于这两个帖子的原因,包括Kesque的收购。然而,选择Pulsar的原因没有改变。
一段时间后,我写了一个关于7个理由的帖子,我们选择Apache pulsar过度Apache Kafka。从那时起,我一直在研究一个详细的报告,比较Kafka和Pulsar,与开源Pulsar项目的用户交谈,并与我们管理的Pulsar服务的用户交谈Kesque。我意识到的是,我错过了第一篇文章的一些原因。所以,我以为我会做一个增加到列表的后续帖子。
在潜入新的原因之前,让我们快速回顾上一篇文章中提到的七个:
统一流媒体和消息队列 - 在一个平台中的Kafka和Rabbitmq。分区是可选的 - 如果您不想,则使用pulsar,您不需要使用分区删除分区。(我不想。)分布式日志 - Pulsar日志是水平扩展的,因为它是分布式的。我听到耳朵里的音乐吗?无状态的代理 - 云原住民梦想场景。我在哪里放置自动缩放者?本机地理复制 - 任何人和我的意思是任何人,都可以获得地理复制权。它更快 - 测试证明这一点。所有Apache软件基金会开源 。
那些是前七个原因。这些似乎很多,但我发现了一些。让我们进入他们。
1.支持多租户
我真的应该在第一篇文章中谈论多租户,因为这是一个大的问题。即使您没有计划建立托管Pulsar活动(以及为什么我们已经为您建立了一个?),除非您是隐士,否则将有多个团队在使用您的多个项目上工作消息传递基础架构。必须为每个团队或项目旋转群集是一种痛苦。它也很贵。
使用Pulsar,您可以拥有多个租户,那些租户可以有多个名称空间来保持所有组织的东西。添加到每个命名空间的访问控制,配额和评分限制,您可以想象我们所有人都可以使用这个群集。我们不仅可以想象这个未来,但Kafka也可以想象它。您可以在KAFKA改进提案(KIP)KIP-37中阅读它。现在已经讨论了一段时间。
我们有一个霸权吗?复制
您想确保您的邮件永远不会丢失,因此您将消息传递系统配置为在出现问题时制作每条消息的两个或三个副本。
Kafka使用以下领导型来实现这一目标。领导者存储消息,追随者制作它的副本。一旦足够的追随者承认他们已经得到它,Kafka很开心。Pulsar使用仲裁模型。它将消息发送到一堆节点,一旦超过他们承认他们已经得到它,Pulsar很高兴。
法定复制更为民主,没有这一领导者跟随者层次结构。大多数总是赢,所有选票都是平等的。但这对技术无关紧要。重要的是,致法量复制往往会随着时间的推移提供更一致的行为。这可能解释了为什么Pulsar提供更一致的延迟性能。
如果您想进入Kafka和Pulsar Latency的细节,请查看我写的博客文章。(这很长。不要说我没有警告你。)哦,Kafka一直在考虑Quorum复制来提高延迟一致性。检查KIP-250是否讨论。
3.分层存储,事件订阅的梦想
关于kafka这样的流系统的伟大事物之一是它能够重播已经消耗的消息。如果您第一次喜欢这些消息,请重播它们以纠正某些内容或构建周围的新应用很有趣。
如果你非常喜欢这些消息,你想永远保持它们吗?喜欢,说你是否正在做事。这听起来像是一个很好的主意,但永远是一个强大的长时间,永远存储邮件可以变得昂贵 - 特别是如果你在那些保持你的消息传递系统嗡嗡声的高性能SSD上。
如果你可以移动那些旧消息 - 你需要保持的旧消息,因为你可能需要它们,那么有一天需要它们 - 更便宜的存储解决方案?如果你可以使用像亚马逊S3桶这样的便宜的云存储,那不是很棒吗?
你可能会猜到我在这里去哪里。使用Pulsar分层存储,您可以自动将尘土飞扬的旧消息推入实际上无限,廉价的云存储,并类似于您执行那些较新的新鲜的消息。
我敢打赌,Kafka希望拥有这个功能。你猜到了,他们会。它在KIP-405中描述。
4.端到端加密
显然,安全性很重要,您希望将您的信息保证免于窥探。当然,您将在游戏论坛客户端和消息传递系统之间使用TLS(在传输中加密)。
当您这样做时,消息传递系统必须解密连接,因此它可以弄清楚客户端试图说的。然后将在磁盘上保存未加密的消息。当然,您将坚持认为磁盘被加密,以便如果有人窃取磁盘,您的消息将是安全的(在休息时加密)。但在这两种情况下,消息传递系统都有对您的数据的键。如果没有,它将处理难以理解的GobbledyGook流。
在许多情况下,这种加密级别足够好。但如果你想绝对确定没有人可以偷看你的消息,你需要端到端加密。Producer在使用与将收到消息的消费者共享的密钥发送键之前加密消息。当消息保存在消息传递系统的磁盘上时,它加密,消息传递系统没有键。消息系统可以执行其工作。但是您的消息是超级安全的GobbledyGook到消息传递系统。
Pulsar可以在其Java客户端中进行端到端加密。Kafka一直在谈论在KIP-317中做它。
代理平衡行为
在我的最后一篇文章中,我谈论了Pulsar活动代理是无状态的,这很好。但实际上还有这个故事。
无状态组件是可取的,因为当一个人超载时,您只需添加另一个“来处理负载即可。当新客户端连接时,它们可以被定向到新实例。但这并没有帮助首先被过载的实例。您需要将一些工作从超载实例转移到新的新鲜的工作。
换句话说,您需要重新平衡负载。
Pulsar为您自动进行代理负载。它监控CPU,内存和网络(不是磁盘;我提到代理是无论如何的吗?)代理的使用,并将移动负荷以保持平衡。这意味着您不必添加那个新代理,直到您使用所有代理的容量 - 而不是因为其中一个热运行。
您可以使用Kafka进行代理负载平衡。但是,您将必须安装另一个包,例如LinkedIn的巡航控制。或者,如果您喜欢(最终)支付东西,您也可以使用Confluent的重平衡器工具。
社区和生态系统
我上一篇文章的批评之一是我没有提到Kafka社区和生态系统的大小和丰富性。这是一个公平的一点。
在社区和生态系统类别中,Kafka强于Pulsar。Kafka有一个五年的首页开始作为一个开源项目,因此它只会推出它将拥有更大的社区,更多相关项目以及堆栈溢出的更多答案。
我所能说的是,脉冲节社区正在增长,人们经常促进新的组成部分和集成,社区休闲频道的人们是友好和支持的。
实际上,我可以说还有一件事:很明显,很多Pulsar是由Kafka启发和通知的,Pulsar站在巨人的肩膀上。Kafka项目和社区赢得很多信誉和尊重。我知道它有时会听起来像是我不尊重Kafka,但我真的很兴奋Pulsar取得的成绩。
合法的Kafka替代品
在这篇文章与最后一个之间,我最多有十几个理由选择Pulsar。很酷的是,我潜入pulsar的更深,我发现的原因越多。因此,在将来可能需要在这个主题上成为第三个博客帖子。敬请关注。
我认为这很清楚,Pulsar是Kafka的合法替代品。Pulsar支持与Kafka相同的大多数功能,但有几个的优势,并且随着越来越多的人们了解它的势头。
如果您正在评估流和/或队列系统,您可以看看Pulsar。这很简单。