kafka是如何支撐百萬連接的?

   kafka使用了reactor多路複用機制

   傳統的機制,一個連接一個線程:當連接的數量很大,對應的處理線程數量也很大,服務器必然不堪重負。如果有一萬個連接,那就對應有一萬個線程去處理。

   reactor機制:

      1.由一個acceptor線程,監聽連接的建立,連接建立後,投遞給process線程;

      2.process線程,會有多個,每個process線程對應某些連接(類似於數據庫中,對id取膜的方式分表);

      3.process線程接收到連接,統一投遞到“請求隊列”中,等待處理;

      4.真正處理的線程池,會去主動消費“請求隊列”,消費完畢,會把響應丟到“響應隊列”中;

      5.最終,process會從自己的“響應隊列”中拿到自己的響應發送回客戶端。

   如果還是有一萬個連接,使用了reactor機制,只需要1個acceptor線程+10個process線程+100個線程(線程池中處理的線程,步驟4)。線程數會從一萬驟降到百這個級別。

 

 

   總結:kafka的reactor機制,省了線程數,連接數是不變的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章