Netty核心技術(shù)及源碼剖析-Netty模型-詳細(xì)版

工作原理示意圖-詳細(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ù)了很多的處理器

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容