首页 文章

扩展 Kafka 的吞吐量

提问于
浏览
2

我在 AWS 上设置了示例 Kafka 集群,并尝试使用给定的配置确定可能的最大吞吐量。我目前正在关注此处提供的帖子以进行此分析。

https://engineering.linkedin.com/kafka/benchmarking-apache-kafka-2-million-writes-second-three-cheap-machines

如果您能澄清以下问题,我将不胜感激。

我观察到使用给定硬件的大小为 512 字节(单个生产者 - 单个消费者)的消息的吞吐量为 40MB/s。假设我需要实现 80MB/s 的吞吐量。

据我所知,有一种方法可以增加每个主题的分区数量,并增加生产者和消费者中的线程数量。 (假设我没有更改批量大小,压缩比等的默认值)

  • 如何找到给定硬件可能达到的最大吞吐量?如果我们要进一步提高吞吐量,我们需要改善硬件资源?

(换句话说,如何做出决定“使用 X GB RAM 和 Y GB 磁盘空间,这是我可以实现的最大吞吐量.如果我需要进一步提高吞吐量,我必须将 RAM 升级到 XX GB,磁盘空间升级到 YY GB “)

2.Should 我们垂直或水平缩放簇?推荐的方法是什么?

谢谢。

1 回答

  • 2
    • 如果我们将吞吐量定义为每秒通过网络传输的数据量,则最大吞吐量不应超过#machine number * bandwidth。如果一台机器的 NIC 配置为 1Gbps,则单台机器上的最大 TPS 不能大于 1Gbps。在你的情况下,TPS 是 40MB/s,即 320Mbps,远低于 1Gbps,这意味着仍有改进的余地。但是,如果你的目标远远大于 1Gbps,你肯定需要更多的机器。

    • AFAIK,带宽是导致系统瓶颈的最可能原因。与 CPU 和 RAM 不同,垂直缩放并不容易,因此可以选择水平缩放。

    在缩放之前你可以做一些数学运算。假设吞吐量目标是“在 1 小时内产生 20 亿条 512Bytes 的记录”。也就是说,TPS 必须达到 2,000,000,000 * 8 * 512/3600/1024/1024 = 2170mbps。假设单个机器的可用带宽是 700mbps(Over 70%,通常会带来“丢包”),应该为生产者应用程序规划至少 4 台机器。

相关问题