美文网首页
Kafka的高速磁盘访问能力是如何实现的?

Kafka的高速磁盘访问能力是如何实现的?

作者: 鸿雁长飞鱼龙潜跃 | 来源:发表于2019-05-20 13:28 被阅读0次

    Kafka的高速磁盘访问能力是如何实现的?

    我们知道,Kafka有以下特性:

    时间复杂度O(1)的方式提供消息持久化能力,即使对TB以上的数据也能保证常数时间的访问性能。

    如何实现的呢?

    概括来说,有以下三点:

    1,磁盘线性写入,或者从Kafka应用程序的角度来说是消息顺序追加。

    怎么理解呢?什么是磁盘线性写入?什么是消息顺序追加?

    磁盘的读写分为随机读写和线性读写。线性读写的效率比随机读写快6000倍。Kafka在设计时采用了文件追加的方式来写入消息,即只能在日志文件的尾部追加新的消息,并且不允许修改已经写入的消息。这样就可以利用磁盘的线性读写来提高磁盘访问速度。

    2,磁盘页缓存

    什么是页缓存?

    页缓存是磁盘缓存。

    页缓存是操作系统实现的磁盘缓存。

    页缓存的目的是为了减少对磁盘的IO操作。

    具体来说就是把磁盘的数据缓存到内存中,把对磁盘的访问变成对内存的访问。Kafka中大量使用了页缓存,这是Kafka实现高吞吐的关键因素之一。

    3,零拷贝

    什么是零拷贝?

    零拷贝是一种避免CPU将数据从一块存储拷贝到另外一块存储的技术。零拷贝可以有效的改善数据传输的性能,在内核驱动程序处理IO数据的时候,零拷贝技术可以在某种程度上减少不必要的CPU拷贝操作。

    相关文章

      网友评论

          本文标题:Kafka的高速磁盘访问能力是如何实现的?

          本文链接:https://www.haomeiwen.com/subject/jyckzqtx.html