Apache kafka apache kafka的硬件要求

Apache kafka apache kafka的硬件要求,apache-kafka,infrastructure,Apache Kafka,Infrastructure,我正在构建一个生产环境,在这里我将使用ApacheKafka。我想知道最好的硬件组合,以获得更好的性能。我将每秒处理5000个事务。您需要提供有关您的用例的更多详细信息,如消息的平均大小等。但这是我的2美分: 可能会有一些启示: CPU大多数卡夫卡部署倾向于使用较轻的CPU 要求。因此,确切的处理器设置比 其他资源。请注意,如果启用了SSL,则CPU需求可能会降低 要高得多(具体细节取决于CPU类型和 JVM实现) 您应该选择具有多核的现代处理器。普通的 集群使用24个核心机器 如果您需要在更快

我正在构建一个生产环境,在这里我将使用ApacheKafka。我想知道最好的硬件组合,以获得更好的性能。我将每秒处理5000个事务。

您需要提供有关您的用例的更多详细信息,如消息的平均大小等。但这是我的2美分:

可能会有一些启示:

CPU
大多数卡夫卡部署倾向于使用较轻的CPU 要求。因此,确切的处理器设置比 其他资源。请注意,如果启用了SSL,则CPU需求可能会降低 要高得多(具体细节取决于CPU类型和 JVM实现)

您应该选择具有多核的现代处理器。普通的 集群使用24个核心机器

如果您需要在更快的CPU或更多内核之间进行选择,请选择更多 核心。多核提供的额外并发性将远远超过 超过稍快的时钟速度

如何计算吞吐量
计算吞吐量也可能有帮助。例如,如果每秒有800条消息,每条消息有500字节,则吞吐量为
800*500/(1024*1024)=~0.4MB/s
。现在,如果您的主题已分区,并且有3个代理已启动并使用3个副本运行,则每个代理将产生
0.4/3*3=0.4MB/s

关于您的体系结构的更多细节可以在Confluent的白皮书中找到。这是关于内存使用的部分

ZooKeeper使用JVM堆,4GB RAM通常就足够了。也 由于垃圾不断,堆的小容量将导致高CPU 当堆太大时进行收集可能会导致长时间的垃圾收集 ZooKeeper群集中的暂停和连接中断

Kafka代理使用JVM堆和OS页面缓存。JVM堆用于代理之间的分区复制和日志复制 压实。复制需要1MB(默认副本.max.fetch.size) 对于代理上的每个分区。在ApacheKafka 0.10.1中(合流 平台3.1),我们添加了一个新的配置 (replica.fetch.response.max.bytes)限制用于 复制到10MB,以避免内存和垃圾收集问题 当代理上的分区数很高时。对于原木压实, 计算所需内存更为复杂,我们建议 如果使用此功能,请参阅卡夫卡文档。 对于中小型部署,4GB堆大小通常为 够了。此外,强烈建议消费者 始终从内存中读取,即从写入卡夫卡和 仍然存储在操作系统页面缓存中。此文件的内存量 所需时间取决于写入此数据的速率和距离 你期望消费者得到什么。如果您每小时写入20GB 你允许经纪人在正常情况下落后3小时 在这种情况下,您需要为操作系统页面缓存保留60GB。万一 当使用者被迫从磁盘读取数据时,性能将下降 重要的

Kafka Connect本身不使用太多内存,但一些连接器会在内部缓冲数据以提高效率。如果运行多个连接器 如果使用缓冲,您将希望将JVM堆大小增加到1GB 或更高

消费者每个消费者至少使用2MB,如果代理响应较大(典型的突发流量),则最多使用64MB。 制作者将拥有64MB的缓冲区。首先分配1GB内存,为每个生产商增加64MB,为每个计划的消费者增加16MB

在调整体系结构的配置时,需要考虑许多不同的因素。我建议您阅读前面提到的文档,监视您现有的集群和资源,并最终对它们进行相应的调优