kafaka高效吞吐量-生產端,服務端,消費端
阿新 • • 發佈:2021-11-08
- 零拷貝:sendfile
生產端
生產端:訊息壓縮,快取批量傳送,非同步解耦
多執行緒併發:防止某一個業務阻塞等待
接收訊息快取
BufferPool設計:不釋放
服務端
Reactor模型,順序寫,頁快取,零拷貝
-
Reactor:
- 連線執行緒(main執行緒)
- 執行緒處理執行緒
- 放置在請求佇列中
- 執行緒池中的執行緒去出去請求佇列中的Request物件 進行消費(處理)
- 響應也不是直接傳送給客戶端(而是放在Response佇列):防止高併發時,執行緒工作過於飽和,而導致延遲
-
順序寫:追加寫,頭部讀(日誌)
- 後寫
- 預讀
-
頁快取
- 快取當磁碟用,避免頻繁讀寫磁碟
-
零拷貝:cpu不參加拷貝資料的工作,節省大量cpu週期,減少兩次cpu在使用者態和核心態的切換
- 無零拷貝:四次上下文切換,四次拷貝(2次cpu,2次dma)
- 零拷貝
消費端
網路IO任務和拉取訊息任務的解耦,防止拉取訊息時的IO阻塞,提高網路IO任務和拉取訊息效率
本文來自部落格園,作者:勒勒樂了,轉載請註明原文連結:https://www.cnblogs.com/matytan/p/15524287.html