kafka和hadoop(Kafka与Redpanda的性能对比的说法是否相符?)

杰克-范莱特利 分布式系统

多年来,Apache Kafka一直是最受欢迎的开源事件流系统,而且它的受欢迎程度还在不断提高。在更广泛的生态系统中,还有其他开源的Kafka竞争对手,如Apache Pulsar、NATS Streaming、Redis Streams、RabbitMQ和最近的Redpanda(以及其他)。

Redpanda是一个可用的Kafka克隆源,使用ScyllaDB的Seastar框架用C++编写,这是一个宽列数据库。它使用流行的Raft共识协议进行复制和所有分布式共识逻辑。Redpanda一直在不遗余力地解释它的性能优于Apache Kafka,因为它的每核线程架构,使用C【我.爱.线.报.网.】52xbw .cn 每日持.续更新.可.实操.的副.业.++,以及它的存储设计可以将高性能的NVMe驱动器推到极限。

他们声称自己是演变的最新阶段他们声称这是分布式日志系统进化的最新阶段,把Kafka和其他系统描绘成为一个已经过去的旋转磁盘时代而设计,而这个时代已经到来。他们提出了一个令人信服的论点,不仅有更好的性能,而且有更低的总拥有成本(TCO),他们的基准似乎支持了这一切。

Redpanda和Kafka的有趣之处在于,它们都是分布式的、只添加的日志系统,通常复制系数为3,都是基于领导者-追随者,并且使用相同的客户端协议。此外,两者都选择将一个分区映射到一个活动段文件,而不是使用Apache Pulsar和Pravega这样的共享日志存储模式。对于【我.爱.线.报.网.】52xbw .cn 每日持.续更新.可.实操.的副.业.相同的吞吐量,它们向磁盘写入相同数量的数据(到相同数量的文件),并且它们通过网络传输相同数量的数据。因此,关于优越的吞吐量的说法,问题是,鉴于我们通常根据网络和磁盘IO能力来确定我们的云实例的大小,CPU优化的代理会在成本上产生很大的差异吗?还是说Redpanda可以比Kafka更快地将数据写入磁盘?当涉及到延迟时,每核线程架构是否会产生差异?Kafka中基于锁的并发数据结构是否占了端到端延迟的很大一部分?这些都是我在开始时的一些疑问。

Redpanda公司的数据

根据他们的Redpanda与Kafka的基准测试和他们的总拥有成本分析如果你有一个1GB/s的工作负载,你只需要用Redpanda的三【我.爱.线.报.网.】52xbw .cn 每日持.续更新.可.实操.的副.业.个i3en.6xlarge实例,而Apache Kafka需要九个,而且性能还很差。它们是一组大胆的主张,而且看起来很有道理。用C++语言为现代硬件构建的每核线程架构听起来很有说服力,而且似乎符合逻辑,这些说法一定是真的。但它们是真的吗?

自从2022年2月加入Apache Kafka社区以来,我没有看到社区对验证这些Redpanda声称的优越性能有任何兴趣。甚至ChatGPT似乎也认为Redpanda的性能优于Kafka,因为基本上没有人真正测试过这是否是真的。所以我决定自己对Redpanda进行测试,看看它是否经得起仔细的推敲。我没有测试9个节点的Kafka集群–所有的测试都是用3个Bro【我.爱.线.报.网.】52xbw .cn 每日持.续更新.可.实操.的副.业.ker,而且都是在i3en.6xlarge上。

我是一名分布式系统工程师,拥有大量的基准测试经验,我以前曾为OpenMessagingBenchmark项目做出过贡献。在VMware工作时,我花了几个月的时间对RabbitMQ quorum queues、RabbitMQ Streams进行基准测试。在Splunk工作时,我花了大量时间对Apache BookKeeper进行基准测试,作为我作为BookKeeper提交人的性能和可观察性工作的一部分。现在我在Confluent工作,主要负责Apache Kafka和我们的云服务。所以我很习惯这种项目,最棒的是,OpenMessagingBench【我.爱.线.报.网.】52xbw .cn 每日持.续更新.可.实操.的副.业.mark让它很容易运行。

我发现了什么?

我在相同的硬件上对Redpanda和Kafka进行了基准测试:三个i3en.6xlarge,相同的客户端配置,两者都有或没有TLS。

我可以告诉你,现在我已经完成了我的基准测试工作,Redpanda优于Kafka的说法,甚至他们自己的性能都被大大夸大了。这也许并不令人惊讶,因为这一切都只是基准测试,但正如我之前所说的,如果没有人真正测试这些东西并将其写出来,人们就会开始相信它。我们需要一个现实的检查。

从这个分析中你会看到,没有人应该使用三个i3en.6xlarge来处理1GB/s的工作负载。Redpanda用给定的分区数和客户端数来管理它,但当你开始对该工作【我.爱.线.报.网.】52xbw .cn 每日持.续更新.可.实操.的副.业.负载进行小的修改时,很快就不能管理它了。

我早在3月份就开始测试Redpanda,此后一直在对Kafka和Redpanda进行相同的测试。一些值得注意的发现是:

1GB/s的基准测试根本不具有普遍性,因为Redpanda的性能随着工作负载的小调整而明显恶化,例如用50个生产者而不是4个生产者来运行它。Redpanda在他们的1GB/s基准测试中的性能在运行超过12小时后明显恶化。Redpanda的1GB/s基准的端到端延迟在Broker达到其数据保留限制并开始删除段文件后大量增加。目前的基准是基于空驱动器的性能。当生产者设置记录键时,Redpanda很挣扎,导致消息被派发到基于这些键的分区,导致消【我.爱.线.报.网.】52xbw .cn 每日持.续更新.可.实操.的副.业.息批次更小,数量更多。Redpanda无法在acks=1的情况下将NVMe驱动器推到2GB/s的吞吐量极限,但Kafka可以。Kafka能够在持续的800MB/s或1GB/s生产者负载下耗尽大量积压,但Redpanda却不能。它的积压数据继续增长,或者进入一个稳定的平衡状态,积压数据部分耗尽,但从未完全耗尽。

在上述所有情况下,Kafka通常在很大程度上超过了Redpanda,既达到了更高的吞吐量,又实现了更低的端到端延迟,甚至尾部延迟–在相同的硬件上。在我进行的其他测试中,Redpanda的表现优于Kafka(尽管从来没有在吞吐量上)–所以是的,Redpanda “可以 “比Kafka “【我.爱.线.报.网.】52xbw .cn 每日持.续更新.可.实操.的副.业.更快”,但反过来也是如此。

我将在下面用数据简要地解释这些发现。我还将发表更深入的博客,更深入地探讨这些结果,如果可能的话,讨论每个发现背后潜在的根本原因。

我希望你能带着一种新的体会离开,那就是权衡的存在,尽管使用的是实现语言或算法,但没有免费的午餐。优化是存在的,但你不可能对所有东西都进行优化。在分布式系统中,你不会发现有公司或项目说他们对CAP定理中的CAP进行了优化。同样的,我们也不能同时为高吞吐量、低延迟、低成本、高可用性和高持久性进行优化。作为系统建设者,我们必须选择我们的权衡,那个单一的银弹架构仍然存在,我们还没有找到它。

首先,对基准代码进行审计

我从Redpanda的OpenMess【我.爱.线.报.网.】52xbw .cn 每日持.续更新.可.实操.的副.业.agingBenchmark仓库开始,因为它不存在于OMB的官方仓库中。在我开始之前,我对代码进行了审计,以确保一切看起来都很好。不幸的是,对于Kafka来说,它的配置是错误的,有几个问题。

问题1是在Kafka的server.properties文件中有一行log.flush.interval.messages=1,它迫使Kafka在每个消息批上进行fsync。因此,所有的测试,即使是那些在工作负载文件中没有配置的测试,也会得到这种连贯性的行为。我之前在博客上写过 写过一篇关于Kafka如何使用恢复而不是fsync来保证安全的博客.设置这一行会降低Kafka的性能,而且人们设置这一行是比较少见的【我.爱.线.报.网.】52xbw .cn 每日持.续更新.可.实操.的副.业.。所以我把它从server.properties文件中移除。Redpanda错误地声称Kafka是不安全的,因为它不使用fsync – 这不是真的。

问题之二是仍然使用Java 11。公平地说,在上游的OMB仓库和Confluent分叉中都是这样的。然而,Java 11已经有5年的历史了,而Kafka在Java 17上运行良好。Kafka尤其得益于Java 17的TLS。所以我更新了Ansible脚本,在客户端(包括Redpanda)和Kafka服务器上都安装了Java 17。

问题3是Redpanda驱动(客户端)被硬编码为每5秒异步提交一次偏移量。另一方面,Kafka驱动默认是在每次轮询时异步【我.爱.线.报.网.】52xbw .cn 每日持.续更新.可.实操.的副.业.提交。所以我更新了Redpanda驱动中的生产者,以匹配Kafka驱动,其中的提交行为是由配置控制的,并确保它们匹配。

我做了我自己的复制品,所有这些变化都存在于其中。

对OMB的关键错误进行修复

在我对Kafka和Redpanda进行基准测试的整个过程中,我遇到了一些基准代码的错误。最糟糕的是,我遇到过几次bug,导致大部分延迟数据丢失,造成高百分位数的结果明显降低。根本原因是,当基准代码试图从所有客户机收集直方图时,如果出现错误,它就会重试。问题是,在每次调用获取直方图时,原始直方图会返回一个副本,但会自我重置。因此,当第二次尝试的时候,原始直方图只有几秒钟的数据,导致结果不好。我是在对一些看起【我.爱.线.报.网.】52xbw .cn 每日持.续更新.可.实操.的副.业.来很奇怪的结果进行统计分析时才发现的。我将在上游的OMB存储库中提交一个关于这个问题的修正。

发现1–500MB/s和1GB/s,4-50个生产者

我在6个不同的吞吐量下运行了Redpanda 1 GB/s基准测试:500、600、700、800、900和1000MB/s。我还用原来的4个生产者和消费者,然后用50个生产者和消费者来运行它。结果是Redpanda的50个生产者的性能明显下降。另一个值得注意的结果是,Redpanda在使用TLS时无法达到1000MB/s,这与Redpanda的基准测试相冲突。

查看全尺寸

图1.50个生产者的Redpanda端到端延迟达到24秒

我无法用TLS使Redp【我.爱.线.报.网.】52xbw .cn 每日持.续更新.可.实操.的副.业.anda达到1000MB/s,即使是在4个生产者的甜蜜点。我运行了三次,下面的图表显示了Redpanda的最佳结果。

查看全尺寸

图2.Redpanda无法用TLS达到1000MB/s。在50个生产者的情况下,它只能达到850MB/s

查看 Kafka与Redpanda的性能对比–第一部分–4与50个生产者的对比以了解更多细节和如何运行这个基准测试。

发现2–长期运行测试的性能恶化

我运行了1GB/s,288个分区,4个生产者/消费者的基准24小时和36小时。

大约12小时后,Redpanda的端到端延迟出现了跳跃。

图3.Redpanda p50-p90的端到端延迟在12小时后抖动

尾部延迟的增加是巨大【我.爱.线.报.网.】52xbw .cn 每日持.续更新.可.实操.的副.业.的。

图4.Redpanda的端到端尾部延迟在持续12小时的负载后飙升至几十秒

端到端延迟在较高的百分位上明显增加。p99的测量结果达到3.5秒,而p99.99则高达26秒。

罪魁祸首原来是NVMe驱动器,它在持续负载12小时后开始表现出非常高的写入延迟。这在Redpanda的指标中表现为 “磁盘饥饿时间”。

图5.一个Redpanda的Broker在12小时后开始报告被饿死的磁盘

写入和读取IO的时间在12小时后都有所增加。

图6.12小时后,每个操作的平均写入和读取时间在一个Broker上的抖动

我能够在三个部署中的三个上重现这个问题,运行1GB/s的工作负载。我很满意这一点,任何人都可以重现。

虽然Re【我.爱.线.报.网.】52xbw .cn 每日持.续更新.可.实操.的副.业.dpanda随着时间的推移而恶化,但我看到Kafka实际上随着时间的推移而改进。

图7.Kafka p99在24小时内的端到端延迟

包括尾部的延迟。

图8.Kafka p99.99在24小时内的端到端延迟

Redpanda的NVMe驱动器的退化归结于SSD在引擎盖下的工作方式和Redpanda的随机IO性质。它以16KB的小块写入数据,当与288个分区相结合时,每个分区都有一个活跃的段文件,导致IO访问模式处于随机IO的末端。随机IO给固态硬盘带来了更大的负担,这是因为写入放大的结果是硬盘GC重写数据块–导致额外的延迟。这是一个系统达到NVMe驱动器GC瓶颈的例子。

我在以下文章中详细介绍了这一点 Ka【我.爱.线.报.网.】52xbw .cn 每日持.续更新.可.实操.的副.业.fka与Redpanda性能对比第二部分–长时间运行的测试.

发现3 – Redpanda的延迟在达到保留限制时激增

事件流系统中存在保留限制,因为如果没有保留限制,磁盘会被填满,服务器会崩溃。即使在使用分层存储时,我们也需要有一个本地保留限制。

当我运行Redpanda测试足够长的时间以达到保留限制时,我看到端到端延迟有一个奇怪的阶梯式增长。这一步的大小似乎受到所使用的磁盘数量和测试的吞吐量的影响。低吞吐量的测试没有表现出这种行为,但中等和高吞吐量的测试却有。

在下面的案例中,在22:00之前就达到了保留期限。

图9.一旦经纪人开始删除分段文件,Redpanda的端到端延迟就会逐步增加

这在我进行的所【我.爱.线.报.网.】52xbw .cn 每日持.续更新.可.实操.的副.业.有中高吞吐量测试中都是可重复的。一个生产系统不可能一下子看到所有的分区都达到它们的保留限制,所以你可能只在基准测试中看到这种逐步增加的情况–但保留限制的性能惩罚仍然存在,只是更难发现。

不幸的是,我的大部分结果都是在我有这个发现之前得到的。然而,我重新进行了1GB/s的Redpanda基准测试,允许预热期运行足够长的时间来填充磁盘以达到保留极限,我得到的Redpanda结果非常不同。

图10.1GB/s基准的Redpanda端到端延迟结果,当记录数据保留限制生效后的延迟

删除分段文件的额外负担对端到端的延迟有很大影响。这种影响表现在较高的吞吐量测试中,而在较低的吞吐量工作负载(<100 MB/s)【我.爱.线.报.网.】52xbw .cn 每日持.续更新.可.实操.的副.业.上并不总是表现出来。如果你正在考虑运行Kafka与Redpanda的基准测试,请记得在已经达到其保留限制的集群上测量性能。

请看更多细节 Kafka与Redpanda的性能对比–第三部分–达到保留极限其中我还解释了如何重现这个问题。

调查结果4–记录键的影响

使用记录键是非常常见的,因为它允许我们获得消息排序。消息根据记录键的哈希值被派发到各个分区,这是一种相当标准的数据分发技术。缺点是,它通常对Broker来说更难,因为它导致更小、更多的消息批次,从而产生更多的工作。

我发现,在使用记录键的情况下,Redpanda在试图达到1GB/s和500MB/s的吞吐量时,以288分区基准为基础,无法与Ka【我.爱.线.报.网.】52xbw .cn 每日持.续更新.可.实操.的副.业.fka相比。

图11.Kafka能够在100个生产者使用记录键的情况下达到500MB/s的目标。Redpanda的最高速度是330MB/s

我改变了策略,设计了一个比单一主题更常见的工作负载,有数百个分区。在40个和80个主题,每个主题有10个分区的情况下,Kafka取得了较低的端到端延迟,甚至在高百分位上也是如此。

图12.Redpanda与更多使用记录键进行消息排序的生产者的竞争

模式是,随着消息批处理率的增加但批处理量的下降,Redpanda的优势下降甚至完全消失。对于高分区和高消息批处理率的基准,fsync速率通常非常高(>200K/s),即使是50MB/s的测试,这可能解释了较高的延迟。

查看【我.爱.线.报.网.】52xbw .cn 每日持.续更新.可.实操.的副.业.Kafka与Redpanda的性能对比 – 第四部分 – 记录键的影响以了解更多细节。

发现5 – Redpanda在acks=1的情况下无法达到NVMe驱动器的限制

我采用了Redpanda 1 GB/s基准,并将其修改为从1 GB/s开始,逐级递增,直到达到2 GB/s,有10个生产者,acks=1。

图13.在acks=1的情况下,Redpanda只达到1400MB/s,而Kafka达到1900MB/s

结果是,Kafka的吞吐量达到了1900MB/s的峰值,但实际上达到了2GB/s的物理NVMe驱动器限制。

图14.当Kafka达到1.9GB/s时,它实际上已经达到了i3en.6xlarge上N【我.爱.线.报.网.】52xbw .cn 每日持.续更新.可.实操.的副.业.VMe驱动器的2GB/s物理极限

似乎具有讽刺意味的是,事实上最后只有Kafka能够充分利用NVMe驱动器。

查看 Kafka与Redpanda的性能对比–第五部分–达到NVMe驱动器的极限 了解详细情况。

发现6 – Redpanda在1GB/s生产者负载下无法排出积压的数据

我在生产者速率为800MB/s或1GB/s的情况下进行了一套测试,并暂停了消费者,以便建立一个积压。然后,我恢复了消费者,并测量了消费者耗尽积压内容并恢复到亚秒级端到端延迟的时间–所有这些都是在生产者负载不变的情况下。

Redpanda无法排出任何积压,积压要么在恢复消费者后继续增长,要么积压部分排出,Broker和消费者进入【我.爱.线.报.网.】52xbw .cn 每日持.续更新.可.实操.的副.业.一个平衡状态,保持稳定的积压。Kafka在每一种情况下都能排出积压的数据。

对于系统建设者来说,平衡生产者与消费者的比率可能是一个挑战。对于有压力的负载,你是优先考虑消费者还是生产者,或者只是允许基于Broker内部资源竞争的突发行为?如果你优先考虑生产者,那么消费者最终可能会落后很多,以至于数据最终会丢失。如果你优先考虑消费者,那么生产者最终可能会看到大量的背压,你需要进入系统的重要数据就无法进入。没有简单的答案,但对于一个部署这些系统的组织来说,你最好弄清楚你所选择的集群规模如何处理消费者中断后的积压等问题。在这种情况下,一个由三个i3en.6xlarge组成的Redpanda集群显然是不能【我.爱.线.报.网.】52xbw .cn 每日持.续更新.可.实操.的副.业.满足的。

查看 Kafka与Redpanda的性能对比–第六部分–排出积压的数据了解详细情况。

结论

所有这些测试都是在相同的硬件(三台i3en.6xlarge)上进行的,客户端配置和TLS配置也相同。

很明显,Redpanda的基准测试并不具有普遍性,存在着大量的工作负载,它的表现明显不如Apache Kafka。

总结一下我在这些测试中发现的情况:

在保持吞吐量不变的情况下,只是将生产者和消费者的数量从4个改为50个,这使得Redpanda的性能明显低于Kafka。持续24小时运行Redpanda基准,导致Redpanda Broker的NVMe驱动器由于内部驱动器GC而变慢,导致巨大的延迟–即使【我.爱.线.报.网.】52xbw .cn 每日持.续更新.可.实操.的副.业.AWS推荐的10%的驱动器过度配置。而Kafka由于其更多的顺序性IO访问模式,并没有出现这种减速。在达到保留限制后,运行基准并测量延迟,显示Redpanda的端到端延迟要高得多,而Kafka则没有变化。Redpanda的端到端延迟结果只有在达到保留规模后才真正有效。使用记录键减少了Redpanda的吞吐量,并大大增加了延迟。Kafka在记录键的测试中轻松地击败了Redpanda。较小和较多的批次导致Redpanda在许多小任务和许多文件的高同步率上表现不好。只有Kafka能够充分利用使用acks=1的NVMe驱动器的2GB/s吞吐量。在生产者负载不断的情况下,消费者只能用Kafka来排解积压【我.爱.线.报.网.】52xbw .cn 每日持.续更新.可.实操.的副.业.的问题。

回到最初的TCO分析声称,对于1GB/s的工作负载,你只需要在i3en.6xlarge实例上的三个Redpanda经纪商,但对于Kafka,你需要九个实例:似乎很明显,情况并非如此。事实是,无论你选择Kafka还是Redpanda,对于1GB/s的工作负载,一个正确配置的生产集群的容量都会超过这三个实例。事实上,Redpanda无法在1GB/s的生产者负载下耗尽积压,这清楚地表明,三个i3en.6xlarge的规模并不合适。如果你把一个Redpanda Broker降下来,同样它也无法维持1GB/s的负载。事实上,如果你阅读Redpanda关于规模的文档,他们说为这个工作负载运行5个i【我.爱.线.报.网.】52xbw .cn 每日持.续更新.可.实操.的副.业.3en.12xlarge,这使我们从一个72个CPU核心的系统变成了一个高达240个核心的系统!

这些测试很容易自己运行,每篇博文都解释了如何运行。我建议通过我的OMB repo运行Kafka 而不是Redpanda的OMB,因为我已经正确配置了Kafka,并且使用了Java 17。

一些反思

在花了相当多的时间对两者进行基准测试后,我想说的是,当Redpanda得到正确的工作负载时,它真的可以大放异彩–问题是,有很多工作负载它都没有。它的性能比Apache Kafka更不稳定。批量大小不能太小,高分区工作负载的吞吐量不能太高,驱动器需要充分配置足够的空位,以允许其存储层的随机IO性质。低吞吐量是【我.爱.线.报.网.】52xbw .cn 每日持.续更新.可.实操.的副.业.Redpanda拥有最强大的端到端延迟结果的地方,然后随着你增加吞吐量,工作负载的具体情况会对性能产生不成比例的影响。它对驱动器延迟也非常敏感。

Kafka也有它的问题。页面缓存是一把双刃剑。它对各种工作负载的强大性能是很好的,但它会导致端到端的延迟峰值,从而影响尾部延迟。正如我之前所说,每个系统都选择了它的权衡。对于那些对端到端延迟极其敏感的人来说,一个强大的Redpanda集群可能是你想要的。它应该是强大的,因为你真的不希望Redpanda开始给硬件带来压力,因为它的很多优势似乎都消失了。你可能还需要定制你的工作负载以匹配Redpanda–一些记录的关键工作负载可能根本无法执行。

为现代硬件【我.爱.线.报.网.】52xbw .cn 每日持.续更新.可.实操.的副.业.建造的真正含义是什么?

Redpanda说他们是分布式日志系统进化的下一个阶段分布式日志系统的下一阶段……但这是真的吗?他们声称Kafka现在已经过时了,但它是吗?这个论点似乎可以归结为 “为现代硬件而生”。

我正在考虑的问题是,”为现代硬件而建 “对于一个仅有附录的分布式日志系统来说到底意味着什么?Redpanda使用了每核线程的架构,但是一个纯应用的日志系统应该优化的是CPU吗?

Redpanda关于为现代NVMe驱动器构建的说法是真的。整个设计的前提是利用NVMe驱动器可以比旋转磁盘更有效地处理随机IO的事实。但是,仅仅因为这些驱动器可以处理比HDD更多的随机IO,并不意味着它是一个更【我.爱.线.报.网.】52xbw .cn 每日持.续更新.可.实操.的副.业.好的架构。正如我最近写的博客,当涉及到NVMe驱动器时,顺序IO远远没有死亡,它和以前一样重要。

事实上,我不相信Redpanda的存储架构对日志系统来说是最佳的,这可能是它最大的弱点。在Redpanda,分区既是一个面向用户的抽象,也是一个复制和存储的抽象。它将一个分区映射到一个Raft集群,该集群在磁盘上写到自己的物理日志。这是一个显而易见的设计选择,但它可能忽略了分布式日志存储系统真正可以找到的创新之处。将一个分区映射到一个活动段文件,并在大量的单独文件上执行syncs,是有成本的–即使是高性能的NVMe驱动器。我看到每秒20万次的连动,并且由于分区数量多和批量小,在50MB/s的吞吐量【我.爱.线.报.网.】52xbw .cn 每日持.续更新.可.实操.的副.业.下,自我报告的CPU利用率非常高。在众多的活动文件中,高连动率的代价是它可能太慢了–即使在现代硬件上。

Kafka也使用这种一分区一活动文件的模式,但它的建立是为了减轻这种架构的缺点,同时从其优点中获益。它依靠操作系统以更连续的IO模式来刷新页面缓存,并通过使用恢复功能来避免fsync。 它通过在复制协议中使用恢复功能来避免fsyncs在其复制协议中避免了连贯性。这种方法的好处是在大多数工作负载中都有强大的性能。权衡之下,高百分点的延迟可能比不断进行小规模刷新的系统要高,而且为了获得最佳的耐久性,我们需要多个故障域。

还有其他的选择,逻辑日志模型和物理日志模型是解耦的,这就带来了一些好处(和挑战)【我.爱.线.报.网.】52xbw .cn 每日持.续更新.可.实操.的副.业.。如果你想要更多的连续写模式,你会希望存储抽象比面向用户的抽象更粗粒度(例如,一个共享日志,存储来自许多分区的写)。Apache BookKeeper(由Apache Pulsar和Pravega使用)是这方面的一个例子,它通过对其存储引擎采取共享日志的方法将逻辑日志与物理日志解耦,这使得它无论必须支持多少个Pulsar分区都有一个纯粹的顺序磁盘IO模式。这使得BookKeeper能够在很大程度上将性能与分区数量脱钩。这样做的好处是,所有的数据都要写两次:写优化的WAL和读优化的长期分类账存储,但总是按顺序写。

就个人而言,我是存储层中共享日志设计的忠实粉丝,尽管它还有其他问题,如需要更多的索引【我.爱.线.报.网.】52xbw .cn 每日持.续更新.可.实操.的副.业.来读取和更多的驱动器。它的选择权衡可以让它在广泛的工作负载中,在SSD或HDD上都有良好的性能。Apache Kafka位于这个顺序/随机IO连续体的中间位置,其权衡标准介于BookKeeper和Redpanda之间。

谈到分布式日志,我认为对于基于日志的工作负载来说,”为现代硬件而建 “的意思与以往大体相同–使用顺序IO,即使对现代SSD来说也有更好的机械共鸣。既然产品是日志,为什么不在你的存储架构中利用它呢?Kafka和BookKeeper不需要保留大量的NVMe驱动器空间来进行超额配置,这是有原因的。

Redpanda是否值得坐在分布式日志设计的顶点?我不认为它是。但它也不在后面。我们看到各【我.爱.线.报.网.】52xbw .cn 每日持.续更新.可.实操.的副.业.种形状和大小的分布式日志存储系统,每一个都在做不同的权衡,都在为这些决定而受益和付出代价–Redpanda也不例外。

Apache Kafka有血统是有原因的,尽管竞争对手可能希望你相信,但它并不老套或过时。它的设计与今天的NVMe驱动器一样,与当初的构想一样相关。这并不是说它没有缺点,它确实有,但Kafka社区并没有停止对代理的改进(比如为Kafka增加了 Queues for Kafka)–在2023年,Kafka还活着,而且很好。

那么,哪个更快?

Redpanda可以展示Redpanda表现更好的基准。我可以告诉你Kafka表现更好的基准,只要稍微调整一下工作负载或使用记录键等东西。重点是【我.爱.线.报.网.】52xbw .cn 每日持.续更新.可.实操.的副.业.,只有当你自己运行这些基准,并且针对你自己的特定工作负载时,这些基准才真正有用。

竞争是好事,但错误的叙述对任何人都没有帮助。哪个更快?一如既往,现实是:”这取决于 ?”。

本文由闻数起舞翻译自

https://jack-vanlightly.com/blog/2023/5/15/kafka-vs-redpanda-performance-do-the-claims-add-up

推荐阅读

给力项目线报网会员可免费下载 加入会员
友情提醒: 请尽量登录购买,防止付款了不发货!
QQ交流群:226333560 站长微信:qgzmt2
温馨提示:本站提供的一切软件、教程和内容信息都来自网络收集整理,仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负,版权争议与本站无关。用户必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。如果您喜欢该程序和内容,请支持正版,购买注册,得到更好的正版服务。我们非常重视版权问题,如有侵权请邮件与我们联系处理。敬请谅解!

给TA打赏
共{{data.count}}人
人已打赏
行业资讯

你知道李鸿章的故事吗(此人是李鸿章哥哥 为官贪得无厌 为何被人称赞为“取之有道”)

2024-7-24 13:59:27

行业资讯

发挥党组织的(更好发挥党组把方向、管大局、保落实重要作用)

2024-7-24 14:19:51

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索