zoukankan      html  css  js  c++  java
  • kafka高效读写机制

    传统IO单机读磁盘

            1.传统单机IO读取

                 

            2.DMA单机读磁盘

               1.原来IO读取的时候当磁盘控制缓冲区满的时候会中断CPU改成中断DMA,只有内核空间的内容满的时候才会中断CPU。由原来多次中断cpu变成只中断一次CPU,提高了计算能力

                 

                

           3.网络IO读取

              数据从单机IO读取到内核缓冲空间后会继续把数据拷贝到用户空间,再把数据从用户空间拷贝到内核的Socket缓冲区。最后需要把数据从Socket缓冲区拷贝到相关的网络发送协议缓冲区.这样才能把数据从网络协议缓冲区发送到网络上的其它主机。  

    传统IO单机写磁盘

               1.应用程序把程序写入用户空间的缓冲区

               2.用户空间缓冲区满了就把缓冲区的数据写入内核的PageCache内存

               3.由操作系统把PageCache内容同步到磁盘

    高性能写磁盘

             mmap

                     减少IO读写次数

             顺序写 

                    减少了磁盘寻址的耗时

                因为kafka底层使用的顺序IO读写技术,所以它可以把一整块连续的磁盘空间先映射到内核级别的内存空间.做一个一一映射。在64位操作系统中这块映射空间一般可以表示20G大小
                程序只需要把数据直接写入这块内核级别的内存空间后再由内核的机制直接把内存的数据同步到磁盘空间
            映射

                应用程序把数据写入内核pagecache即等价于写入磁盘,不再需要等待IO写入再返回写入成功。完成mmap映射后,用户对内存的所有操作会被操作系统自动的刷新到磁盘上

                

    高性能读磁盘

           零拷贝技术

             

            

    kafka读写磁盘机制

           

           

           

  • 相关阅读:
    Vue Router基础
    Bootstrap4入门
    React性能优化
    Koa,React和socket.io
    RN-进阶
    RN-入门基础
    RN-环境配置
    React高级指引
    React基础概念
    实现A-Z滑动检索菜单
  • 原文地址:https://www.cnblogs.com/yxh168/p/15556535.html
Copyright © 2011-2022 走看看