工作原理示意圖-詳細(xì)版
1、Netty抽象出兩組線程池BossGroup專門負(fù)責(zé)接收客戶端的連接,WorkerGroup專門負(fù)責(zé)網(wǎng)絡(luò)的讀寫
2、BossGroup和WorkerGroup類型都是NioEventLoopGroup
3、NioEventLoopGroup相當(dāng)于一個(gè)事件循環(huán)組,這個(gè)組中含有多個(gè)事件循環(huán),每一個(gè)事件循環(huán)是NioEventLoop
4、NioEventLoop表示一個(gè)不斷循環(huán)的執(zhí)行處理任務(wù)的線程,每個(gè)NioEventLoop都有一個(gè)Selector,用于監(jiān)聽綁定在其上的socket的網(wǎng)絡(luò)通訊
5、NioEventLoopGroup可以有多個(gè)線程的,即可以含有多個(gè)NioEventLoop
6、每個(gè)Boss NioEventLoop循環(huán)執(zhí)行的步驟有3步
6.1、輪詢accept事件
6.2、處理accept事件,與client建立連接,生成NioSocketChannel,并將其注冊(cè)到某個(gè)Woker NioEeventLoop上的selector
6.3、處理任務(wù)隊(duì)列的任務(wù),即runAllTasks
7、每個(gè)Worker NioEventLoop循環(huán)執(zhí)行的步驟
7.1、輪詢r(jià)ead、write事件
7.2、處理I/O事件,即read、write,在對(duì)應(yīng)的NioSocketChannel處理
7.3、處理任務(wù)隊(duì)列的任務(wù),即runAllTasks
8、每個(gè)Worker NioEventLoop處理業(yè)務(wù)時(shí),會(huì)使用pipeline(管道),pipeline中包含了channel,即通過(guò)pipeline可以獲取到對(duì)應(yīng)通道,管道中維護(hù)了很多的處理器
