Kafka源碼分析-網絡層-1

  • 在享用了這么久kafka提供的各種福利后, 咱們也來精進一下,看看kafka的各部分實現,知其然也知一點所以然;
  • 題目起得有點大,其實完全是臨時起意,希望能堅持下去;
  • 本身其實不是java程序員,scala也是半吊子, 但是特別喜歡scala啊~~~
  • Kafka最近的版本更新有點快, 但是這一系列文章是基于kafka 0.9.1版本;
  • 這里的文章不會事無巨細,但求將主脈絡理清.

Kafka的網絡層模型概述

  • 這個模型其實一點也不神秘,很質樸,很清晰,也很好用,引用源碼中的一句話:

The threading model is 1 Acceptor thread that handles new connections Acceptor has N Processor threads that each have their own selector and read requests from socketsM Handler threads that handle requests and produce responses back to the processor threads for writing

  • 再來張圖:


    網絡模型.png
  • Acceptor 作兩件事: 創建一堆worker線程;接受新連接, 將新的socket指派給某個 worker線程;
  • Worker線程處理若干個socket,接受請求轉給各種handler處理,response再經由worker線程發送回去.
  • 總結起來就是個半同步半異步模型.

Kafka的網絡層模型實現

  • 雖然kafka用scala實現,但里面也用了大量的java類, 這部分主要是用了NIO
  • 主要實現文件:core/src/main/scal/kafka/network/SocketServer.scala,里面包括了SocketServer, Acceptor, Processor等;
  • 數據傳輸層實現:clients/src/main/java/org/apache/kafka/common/network,里面包括了Channel,TransportLayer,Authenticator等.
  • 下一篇咱們開始進入到具體的實現...

Kafka源碼分析-網絡層-2

Kafka源碼分析-匯總
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 許久不寫字,發現寫作水平嚴重退步啊~~~ 以前也是個文藝青年,現在也要寫出詩意的代碼啊~ 沒找到以前寫的詩,咱們還...
    掃帚的影子閱讀 3,263評論 2 8
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,991評論 19 139
  • kafka的定義:是一個分布式消息系統,由LinkedIn使用Scala編寫,用作LinkedIn的活動流(Act...
    時待吾閱讀 5,366評論 1 15
  • ** 今天看了一下kafka官網,嘗試著在自己電腦上安裝和配置,然后學一下官方document。** Introd...
    RainChang閱讀 5,052評論 1 30
  • 與閨蜜小聚,快哉!快樂雖簡單,只要我們在一起
    恭華閱讀 179評論 0 0