據了解,kafka吞吐量峰值每秒百萬,就算在記憶體個cpu都不高的情況下,最高可達每秒十萬,並且還能做到持久化儲存。kafka如此高吞吐率的原因是什麼?
,隨機寫每秒幾十幾百k。
作業系統從磁碟將資料copy(dma copy
)到核心空間緩衝區(kernel buffer
);
應用程式從核心空間緩衝區(kernel buffer
)將資料copy(cpu copy
)到使用者空間緩衝區(user buffer
);
應用程式從使用者空間緩衝區(user buffer
)將資料copy(cpu copy
)到socket緩衝區(socket buffer
);
作業系統從socket緩衝區(socket buffer
)將資料copy(dma copy
)到網絡卡(nic buffer
),由網絡卡進行網路傳輸。
其中涉及4次copy、4次上下文切換和2次cpu中斷,而第2次和第3次的copy只是把資料copy到使用者空間又原封不動地copy回來,因此帶來了2次cpu copy和2次上下文切換,這是完全沒必要的。零拷貝技術就是為了優化掉這2次不必要的copy。linux核心2.1引入
sendfile
系統呼叫:在核心空間把資料從核心緩衝區直接複製到socket緩衝區,從而減少不必要的copy和上下文切換。引入sendfile
後,上述流程簡化為:
作業系統將資料從磁碟copy(dma copy
)到核心空間緩衝區(kernel buffer
);
應用程式通過sendfile
,在核心空間,從核心空間緩衝區(kernel buffer
)將資料copy(cpu copy
)到socket緩衝區(socket buffer
);
作業系統從socket緩衝區(socket buffer
)將資料copy(dma copy
)到網絡卡(nic buffer
),由網絡卡進行網路傳輸。
可見,利用sendfile
系統呼叫後,可以將4次copy減少到3次,4次上下文切換減少到2次,2次cpu中斷減少到1次。
Kafka系列二 kafka相關問題理解
類jms訊息佇列,結合jms中的兩種模式,可以有多個消費者主動拉取資料,在jms中只有點對點模式才有消費者主動拉取資料。kafka是乙個生產 消費模型。producer 生產者,只負責資料生產,生產者的 可以整合到任何系統中。資料的分發策略由producer決定,預設是defaultpartitio...
Kafka詳解二 如何配置Kafka集群
kafka集群配置比較簡單,為了更好的讓大家理解,在這裡要分別介紹下面三種配置 1.首先啟動zookeeper服務 kafka本身提供了啟動zookeeper的指令碼 在kafka bin 目錄下 和zookeeper配置檔案 在kafka config 目錄下 首先進入kafka的主目錄 可通過 ...
Kafka詳解二 如何配置Kafka集群
kafka集群配置比較簡單,為了更好的讓大家理解,在這裡要分別介紹下面三種配置 1.首先啟動zookeeper服務 kafka本身提供了啟動zookeeper的指令碼 在kafka bin 目錄下 和zookeeper配置檔案 在kafka config 目錄下 首先進入kafka的主目錄 可通過 ...