1. 操作系统
kafka推荐使用linux操作系统,原因:kafka的client端的网络模型采用的是java的selector方式,而java的selector在linux系统上使用的是linux的epoll模型(回调机制),在windows上采用的是select方式(轮询机制);kafka对网络传输要求比较高,这通过零拷贝技术会比较好得得以实现,而jdk 8u60版本之前版本在windows环境署没有实现该功能
2. 硬件规划
kafka属于i/o密集型系统,由于其使用的是顺序读写方式获取数据,所以硬盘的性能不高,可以不用ssd固态硬盘(可以让每个broker配置多个日志路径,每个路径挂载不同磁盘,增加写速度),其硬盘容量主要取决于新增消息数、平均消息大小、消息存留时间、平均消息大小、副本书、是否启用压缩
3. 内存规划
kafka的java堆进程占用内存大小不大,但是操作系统的页缓存大小会影响性能
原则如下:
尽量分配更多的内存给操作系统的页缓存
Page cache要大于borker内存大小
broker大小最好不超过6G
4. cpu规划
kafka不是计算密集型,但是kafka后台会系统很多线程,所以需要给kafka设置多核但非高频的配置
5. 网络带宽规划
一般kafka是在内网使用,其带宽基本在千兆位(1Gb/s)或万兆位(10Gb/s)上,如果是跨机房甚至跨城部署,如果带宽太慢会影响集群性能(kafka的多结点备份对网络要求比较高),此时要根据网络情况合理设置结点数量