1. 程式人生 > 其它 >kafaka高效吞吐量-生產端,服務端,消費端

kafaka高效吞吐量-生產端,服務端,消費端

  • 零拷貝: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