溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

kafka為什么那個快?

發布時間:2020-07-25 03:32:28 來源:網絡 閱讀:400 作者:hagretd 欄目:大數據

kafka是一個高吞吐速度的消息中間件,可以部署在廉價的主機上。

速度快的原因有兩個:

1.從寫數據方面:寫入的數據按順序寫入到磁盤;memory mapped files

磁盤讀寫的快慢取決于你怎么使用它,寫入的時候可以選擇順序寫入和隨機寫入,kafka選擇的時順序寫入機制,該機制的讀寫速度和內存的速度基本持平

使用順序寫入的好處:

1.磁盤順序寫入的速度比內存隨機速度快

2.在內存中操作時,jvm的堆中數據量大,GC時的效率低,使用磁盤可以避免這個問題

3.順序寫入系統冷啟動后,磁盤緩存依然可以使用。

memory mapped? files

kafka寫入數據時不是實時寫入磁盤的,它利用了現代操作系統分頁存儲來利用內存提高I/O效率,先寫在內存中,在一定的時間flush到磁盤中。

Kafka提供了一個參數——producer.type來控制是不是主動flush,如果Kafka寫入到mmap之后就立即flush然后再返回Producer叫 同步 (sync);寫入mmap之后立即返回Producer不調用flush叫異步 (async)

memory mapped files(mmap)即內存映射文件,在64位系統中一般可以表示20G的數據文件,它的工作原理使用操作系統的page來實現文件到物理內存的直接映射。映射之后

對物理內存的操作也可以同步到硬盤上。這種方式可以獲取很大的I/O提升,省去了用戶空間到內核空間的開銷(read會把數據先放在內核空間,然后復制到用戶空間的內存中)

2.從讀數據方面

基于sendfile實現zero copy

傳統read/write方式進行網絡文件傳輸的方式,在這個過程當中,文件數據經過四個copy過程

硬盤---內核buf--用戶buf----socket相關緩沖區---協議引擎

sendfile系統調用可以提供一種減少以上多次copy,提升文件傳輸性能的方法。

硬盤---內核buf----socket相關緩存----協議引擎

在內核版本2.4之后,文件描述符結果被改變,sendfile實現了更簡單的方式,再次減少了一次copy操作。


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女