點擊查看 官網(wǎng)
點擊查看NIO相關(guān)的知識 Java - NIO網(wǎng)絡(luò)編程
一、Netty 簡介
Netty是一個高性能达布、高可擴(kuò)展性的異步事件驅(qū)動的網(wǎng)絡(luò)應(yīng)用程序框架团甲,它極大地簡化了TCP和UDP客戶端和服務(wù)器開發(fā)等網(wǎng)絡(luò)編程躺苦。
Netty重要的四個內(nèi)容
- Reactor線程模型:一種高性能的多線程程序設(shè)計思路
- Netty中自己定義的Channel概念:增強(qiáng)版的通道概念
- ChannelPipeline職責(zé)鏈設(shè)計模式:事件處理機(jī)制
- 內(nèi)存管理:增強(qiáng)的ByteBuf緩沖區(qū)
二产还、Netty 整體結(jié)構(gòu)圖
整體結(jié)構(gòu)
以上圖片來源于官網(wǎng)脐区,由上圖可以看出,Netty的整體結(jié)構(gòu)包含了三個大塊:
- 支持Socket等多種傳輸方式
- 提供了多種協(xié)議的編解碼實現(xiàn)
- 核心涉及包含 事件處理模型扰路、API的使用倔叼、ByteBuffer的增強(qiáng)
三、Netty線程模型
為了讓NIO處理更好的利用多線程的特性哩罪,Netty實現(xiàn)了Reactor線程模型巡验。 (Doug Lea的著名文章《 Scalable l0 in Java》 )
Reactor模型中有四個核心概念:
- Resources 資源(請求/任務(wù))
- Synchronous Even Demultiplexer 同步事件復(fù)用器
- Dispathcer 分配器
- Request Handler 請求處理器
四显设、EventLoopGroup 初始化過程
EventLoopGroup 初始化過程
Tips: 兩組EventLoopGroup (Main&Sub) 處理不同通道不同的事件
四、EventLoop的啟動
EventLoop自身實現(xiàn)了Executor接口瑟枫,當(dāng)調(diào)用executor方法提交任務(wù)時指攒,則判斷是否啟動,未啟動則調(diào)用內(nèi)置的executor創(chuàng)建新線程來觸發(fā)run方法執(zhí)行膝擂。
五架馋、Bind綁定端口過程
Bind綁定端口過程
六驶鹉、Channel 概念
netty中的Channel 是一個抽象的概念,可以理解為對JDK NIO Channel 的增強(qiáng)和拓展办绝。增加了很多屬性和方法姚淆,完整信息可以查看代碼注釋,下面羅列幾個常見的屬性和方法腌逢。
常見的屬性和方法
七、其實這個文章說明的內(nèi)容霍殴,如果沒有查看過官網(wǎng)系吩,那可能理解上并不是很好理解,建議具體的知識點還是查看官方網(wǎng)站中相關(guān)的內(nèi)容穿挨,上邊也有相關(guān)的例子信息,結(jié)合本章內(nèi)容帽衙,可以大致了解Netty的一些內(nèi)部運行邏輯贞绵。
- 查看官網(wǎng)user-guide-for-4.x
如果覺得有收獲就點個贊吧,更多知識但壮,請點擊關(guān)注查看我的主頁信息哦~