Kafka高性能之顺序读写

Kafka依赖于文件系统(更底层地来说即磁盘)来存储和缓存消息,对于各种存储介质如下图所示,层级越高代表速度越快。在传统的消息中间件RabbitMQ中,就使用了内存作为默认的存储介质,而磁盘作为备选介质,以此实现高吞吐和低延迟的特性。

Kafka高性能之顺序读写_第1张图片

有关测试结果表明,一个由6块7200r/min的RAID-5阵列组成的磁盘簇的线性(顺序)写入速度可以达到600MS/s,而随机写入速度只有100KB/s,两者性能相关6000倍。操作系统可以针对线性读写做深层次的优化,比如预读(read-ahead,提前将一个比较大的磁盘块读入内存)和后写(write-behind,将很多小的逻辑写操作合并起来组成一个大的物理写操作)技术。顺序读写盘的速度不仅比随机写盘的速度快,而且也比随机写内存的速度快,如下图

Kafka高性能之顺序读写_第2张图片

Kafka在设计时采用了文件追加的方式写入消息,即只能在日志文件的尾部追加新消息,并且不允许修改已写入的消息,这种方式属于典型的顺序写盘的操作,因此就算Kafka使用磁盘作为存储介质,它所能承载的吞吐量也很大。

你可能感兴趣的:(kafka,kafka,大数据)