1、操作系统、磁盘、磁盘容量和带宽
操作系统:linux|windows
1> I/O模型
阻塞式I/O、非阻塞式I/O、I/O多路复用、信号驱动I/O和异步I/O。通常后一种模型比前一种模型高级,比如epoll比select好。而kafka客户端底层使用了java selector,在linux中实现机制是epoll,在windows上是select,所以,在linux上会有更高的I/O性能。
2> 网络传输效率
kafka消息保存在磁盘上,而消费者和生产者消息都是通过网络传输的。因此,kafka需要在磁盘和网络间进行大量数据传输。而linux上实现了零拷贝技术。
磁盘:机械磁盘|固态硬盘
机械磁盘的优缺点:便宜、随机读写操作慢、易损坏导致可靠性查
固态硬盘:价格昂贵、随机读写快
kafka的日志读取多是顺序读写、而且kafka存在分区副本的概念,避免了可靠性差的问题,选择机械磁盘
3> 磁盘容量
需要考虑:新增消息数、单条消息的大小、消息保存时间、备份数、是否压缩等
比如:每条消息512kb,每天新增1000条消息,平均保存7天,需要3个broker,不采用压缩。0.5*1000*7*3 = 10.5G。还需要给索引数据等预留磁盘。
4> 带宽
加入带宽是1Gbps的千兆网络,kafka需要每秒处理2000M的数据,那么需要多少台服务器部署呢?
最大带宽是1Gbps,kafka介于流量峰