RocketMQ 零拷貝


一、零拷貝原理:Consumer 消費消息過程,使用了零拷貝,零拷貝包含以下兩種方式:

1、使用 mmap + write 方式  (RocketMQ選擇的方式:因為有小塊數據傳輸的需求,效果會比 sendfile 更好)

優點:即使頻繁調用,使用小塊文件傳輸,效率也很高;

缺點:不能很好的利用 DMA 方式,會比 sendfile 多消耗CPU,內存安全性控制復雜,需要避免 JVM Crash 問題。

2、使用 sendfile 方式

優點:可以利用 DMA 方式,消耗 CPU 較少,大塊文件傳輸效率高,無內存安全新問題;

缺點:小塊文件效率低亍 mmap 方式,只能是 BIO 方式傳輸,不能使用 NIO。

 

二、RocketMQ 文件系統

1、RocketMQ 選擇 Linux Ext4 文件系統 && IO調度算法調整為deadline:

Ext4 文件系統刪除 1G 大小的文件通常耗時小亍 50ms,而 Ext3 文件系統耗時約 1s 左右,且刪除文件時,磁盤 IO 壓力極大,會導致 IO 寫入超時;

文件系統 IO 調度算法需要調整為 deadline,因為 deadline 算法在隨機讀情況下,可以合幵讀請求為順序跳躍方式,從而提高讀 IO 吞吐量。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM