美文网首页
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的高速磁盘访问能力是如何实现的?

    Kafka的高速磁盘访问能力是如何实现的? 我们知道,Kafka有以下特性: 时间复杂度O(1)的方式提供消息持久...

  • 第16章 页高速缓存和页回写

    页高速缓存是Linux内核实现磁盘缓存,主要用来减少对磁盘的I/O操作,这么做的原因是: 访问磁盘的速度远远低于访...

  • Kafka的partition是如何排序的

    Kafka的partition是如何排序的? Kafka的partition有序性是如何实现的? Kafka的全局...

  • kafka的架构和基本使用

    kafka是分布式高吞吐的基于发布订阅模式的消息队列,kafka利用磁盘顺序读写实现了高吞吐。 系统架构 topi...

  • 「Kafka深度解析」快速入门

    Kafka特性 顺序读写的方式访问磁盘,从而避免随机读写磁盘导致的性能瓶颈2.支持批量读写消息,并且会对消息进行批...

  • 3、Kafka/flume概要

    七、Kafka ·kafka是一个分布式消息系统。具有高性能、持久化、多副本备份、横向扩展能力。将消息保存在磁盘中...

  • 08-Kafka如何实现高性能IO?

    Kafka如何实现高性能IO? 一、使用批量消息提升服务端处理能力 虽然kafka的sdk提供了单条消息发送,但实...

  • 为什么Kafka这么快

    顺序IO 1.Kafka使用了顺序IO(Sequential IO),并极力避免随机磁盘访问(Random Dis...

  • 干货:Kafka设计解析- Kafka高性能架构,Kafka如何

    本文从宏观架构层面和微观实现层面分析了Kafka如何实现高性能。 包含Kafka如何利用Partition实现并行...

  • Linux 磁盘IO

    磁盘 磁盘结构与数据存储方式, 数据是如何存储的,又通过怎样的方式被访问? 机械硬盘 机械硬盘主要由磁盘盘片、磁头...

网友评论

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

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