Kafka 如何实现低延迟? - foojay

23-01-19 banq

大多数 Apache Kafka 基准测试似乎测试的是高吞吐量而不是低延迟。
Kafka 传统上用于高吞吐量而不是对延迟敏感的消息传递,但它确实具有低延迟配置:

(主要是设置 linger.ms=0 并减少缓冲区大小)。
在这个配置中,您可以在适度吞吐量的大部分时间内获得低于 1 毫秒的延迟。
基准测试往往侧重于在高吞吐量配置中对 Kafka 进行集群。

哪里有可用的延迟基准?
这些是测试 200kmsg/s 到 800kmsg/s 更高吞吐量的各种基准测试,端到端延迟在 2.5 到 30 毫秒之间。

  • Confluent benchmark,查看与 Apache Pulsar 和 Rabbit MQ(亲 Kafka)相比的 99% 延迟 “Kafka 在更高的吞吐量下提供最低的延迟,同时还提供强大的持久性和高可用性”
  • NativeStream 基准 比较 Pulsar 和 Kafka。(pro Pulsar)“Pulsar 的第 99 个百分位延迟在 5 到 15 毫秒的范围内。”
  • Instaclustr performance,查看不同数量的生产者和不同配置的平均延迟。
  • Datastax 延迟基准测试使用与 Confluent 相同的基准测试。他们的结论似乎是,在将每条消息刷新到磁盘时,Pulsar 更好。
  • 使用 AWS 的 Confluent Cloud “根据我的特定测试参数,Kafka p99 延迟为 100-200 毫秒,远低于 Pub/Sub 延迟。”


低延迟的 Kafka 基准测试
对于低延迟系统,您需要最能满足您要求的硬件。这通常是您可以负担得起的大量最快的 CPU,而且 IO 带宽也绰绰有余。
快速前进的最好方法通常是尽可能少地做事,保持解决方案简单。就我而言,我从一台 PC 开始,一台配备 64 GB 内存的 Ryzen 9 5950X 和一个 Corsair MP600 PRO XT M.2 驱动器。
显然集群支持是 Kafka 的一个重要用例,但让我们从一个非常简单的端到端用例开始:一台机器,两个消息跃点和一个微服务

该基准与此处