Kafka-硬件的选择
磁盘吞吐量(重要,影响生产者)
生产者客户端的性能直接受到服务器端磁盘吞吐量的影响。
生产者生成的消息必须被提交到服务器保存,大多数客户端在发送消息后会一直等待,直到至少一个服务器确认消息已经成功提交为止。
磁盘写入速度越快,生成消息的延迟就越低。
磁盘容量(制约集群规模)
需要多大的磁盘容量取决于需要保留的消息数量,也需要考虑集群复制策略的影响。
通过让主题拥有多个分区,集群的总流量可以被均衡到整个集群。
内存(重要,影响消费者)
消费者一般从分区尾部读取消息,如果有生产者存在,就紧跟在生产者后面。这种情况下,消费者读取的消息会直接存放在系统的页面缓存里,这比从磁盘上重新读取要快得多。
运行kafka的JVM不需要太大的内存,剩余的系统内存可以用作页面缓存,或者用来缓存正在使用中的日志片段。
所以,不建议把kafka同其他重要的应用程序部署在一起,它们需要共享页面缓存,最终会降低kafka消费者的性能。
网络(制约集群规模)
网络吞吐量决定了kafka能够处理的最大数据流量。
网络吞吐量和磁盘存储是制约kafka扩展规模的主要因素。
kafka支持多个消费者,造成流入和流出的网络流量不平衡,从而让情况变得更加复杂。集群复制和镜像也会占用网络流量。如果网络接口出现饱和,那么集群的复制出现延时就在所难免。
CPU(不重要)
与磁盘和内存相比,kafka对计算处理能力的要求相对较低,不过在一定程度上还是会影响整体的性能。
客户端为了优化网络和磁盘空间,会对消息进行压缩。服务器需要对消息进行批量解压,设置偏移量,然后重新进行批量压缩,再保存到磁盘上。这就是kafka对计算处理能力有所要求的地方。