Chronicle Queue比Kafka比快750倍?

比较 Chronicle Queue 和 Apache Kafka 的一个有趣的基准测试,请注意:对于极其重视低延迟应用程序,kafka 可能不是最佳适合工具,Kafka适合高吞吐量和大数据可扩展的应用。

Apache Kafka 是服务间通信的常见选择。Kafka便于消息的并行处理,是日志聚合的不错选择。Kafka号称是低延迟、高吞吐量。但是,对于云中的许多微服务应用程序,Kafka 是否足够快?

当我编写Chronicle Queue Open Source时,我的目标是开发一个具有微秒延迟的消息传递框架,世界各地的银行都将其用于延迟敏感的交易系统。

在本文中,我将描述 Kafka 如何在吞吐量方面不像微服务应用程序的 Chronicle Queue 那样容易扩展。即使在吞吐量较低的情况下,Chronicle Queue 的速度也提高了大约750 倍。

使用 Chronicle 的微服务延迟**:**在 500 kmsg/s 时,Chronicle Queue Enterprise 的 99%ile 单个微服务端到端延迟为 3.69 微秒

使用 Kafka 的微服务延迟:使用 Kafka 进行相同的测试,但在 100 kmsg/s 的较低吞吐量下,99%ile 单阶段微服务端到端延迟约为 2633 微秒(从 150kmsg/s 开始,延迟急剧增加)。

Kafka 最初是为日志聚合而设计的。它有许多连接器,对于这个用例,它做得很好。我测量了良好的结果,表明使用 Kafka 代替典型系统中的日志文件写入可以提高性能并显着提高可管理性。

测试场景

在每种情况下,使用相同的测试硬度。一切都部署在运行 Ubuntu 21.04 的 Ryzen 9 5950X 上。所有测试均使用相同的 MP600 PRO XT 2TB M.2 NVMe 驱动器。基准测试的来源可在此处获得。https://github.com/OpenHFT/Microservice-Benchmark

对于微服务基准测试:

  • 添加高分辨率时间戳 (System.nanoTime())
  • 序列化第一条消息
  • 发布第一条消息
  • 消费第一条消息
  • 反序列化第一条消息
  • 调用微服务
  • 添加第二个高分辨率时间戳
  • 序列化另一个主题/队列上的第二条消息
  • 发布第二条消息
  • 消费者第二条消息
  • 反序列化第二条消息。
  • 记录端到端延迟

注意:生成的每条消息都会创建第二条消息作为响应,因此与单跳消息传递基准相比,实际消息数量翻了一番。

更多点击标题见原文图表

结论:

虽然 Kafka 是日志聚合的不错选择,但由于其相对较高的端到端延迟,对于许多涉及微服务的用例而言,它的延迟可能不够低。

Chronicle Queue 开源在超过 99.99% 的时间内实现了低于 100 微秒的一致延迟,而 Kafka 即使在吞吐量的 1/5 时也有 7 毫秒的异常值。

Chronicle Queue Enterprise 具有其他功能,可在超过 99.99% 的情况下将延迟与低于 10 微秒的延迟保持一致。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值