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读写磁盘机制

       

       

       

原文地址:https://www.cnblogs.com/yxh168/p/15556535.html