kafka使用了reactor多路複用機制
傳統的機制,一個連接一個線程:當連接的數量很大,對應的處理線程數量也很大,服務器必然不堪重負。如果有一萬個連接,那就對應有一萬個線程去處理。
reactor機制:
1.由一個acceptor線程,監聽連接的建立,連接建立後,投遞給process線程;
2.process線程,會有多個,每個process線程對應某些連接(類似於數據庫中,對id取膜的方式分表);
3.process線程接收到連接,統一投遞到“請求隊列”中,等待處理;
4.真正處理的線程池,會去主動消費“請求隊列”,消費完畢,會把響應丟到“響應隊列”中;
5.最終,process會從自己的“響應隊列”中拿到自己的響應發送回客戶端。
如果還是有一萬個連接,使用了reactor機制,只需要1個acceptor線程+10個process線程+100個線程(線程池中處理的線程,步驟4)。線程數會從一萬驟降到百這個級別。
總結:kafka的reactor機制,省了線程數,連接數是不變的。