天天看點

【中間件】為什麼用Kafka,它是怎麼做到高吞吐量高性能的

之前在項目中,有用Kafka來做日志處理,隻知道Kafka很适合用來處理日志,它高性能、高吞吐量。那麼它是如何做到高性能、高吞吐量的呢?

(1)使用了頁緩存技術

Kafka 每次接收到資料都會往磁盤上去寫,它是基于作業系統的頁緩存來實作檔案寫入的

作業系統本身有一層緩存,叫做 Page Cache,是在記憶體裡的緩存,我們也可以稱之為 OS Cache,意思就是作業系統自己管理的緩存。

在寫入磁盤檔案的時候,可以直接寫入這個 OS Cache 裡,也就是僅僅寫入記憶體中,接下來由作業系統自己決定什麼時候把 OS Cache 裡的資料真的刷入磁盤檔案中

(2)以磁盤順序寫的方式來寫

将資料追加到檔案的末尾,不是在檔案的随機位置來修改資料

(3)零拷貝技術

零拷貝就是不需要把 OS Cache 裡的資料拷貝到應用緩存,再從應用緩存拷貝到 Socket 緩存了,兩次拷貝都省略了

Kafka就是直接讓作業系統的 Cache 中的資料發送到網卡後傳輸給下遊的消費者,中間跳過了兩次拷貝資料的步驟