Python知識分享網 - 專業(yè)的Python學習網站 學Python,上Python222
Netty初探:掌握高性能網絡通信框架,提升Java網絡編程技能 PDF 下載
匿名網友發(fā)布于:2024-01-16 10:16:46
(侵權舉報)
(假如點擊沒反應,多刷新兩次就OK!)

Netty初探:掌握高性能網絡通信框架,提升Java網絡編程技能 PDF 下載    圖1

 

 

 

資料內容:

 

模型解釋:
1) Netty 抽象出兩組線程池BossGroup和WorkerGroup,BossGroup專門負責接收客戶端的連接, WorkerGroup專
門負責網絡的讀寫
2) BossGroup和WorkerGroup類型都是NioEventLoopGroup
3) NioEventLoopGroup 相當于一個事件循環(huán)線程組, 這個組中含有多個事件循環(huán)線程 , 每一個事件循環(huán)線程是
NioEventLoop
4) 每個NioEventLoop都有一個selector , 用于監(jiān)聽注冊在其上的socketChannel的網絡通訊
5) 每個Boss NioEventLoop線程內部循環(huán)執(zhí)行的步驟有 3 步
處理accept事件 , 與client 建立連接 , 生成 NioSocketChannel
將NioSocketChannel注冊到某個worker NIOEventLoop上的selector
處理任務隊列的任務 , 即runAllTasks
6) 每個worker NIOEventLoop線程循環(huán)執(zhí)行的步驟
輪詢注冊到自己selector上的所有NioSocketChannel 的read, write事件
處理 I/O 事件, 即read , write 事件, 在對應NioSocketChannel 處理業(yè)務
runAllTasks處理任務隊列TaskQueue的任務 ,一些耗時的業(yè)務處理一般可以放入TaskQueue中慢慢處
理,這樣不影響數(shù)據(jù)在 pipeline 中的流動處理
7) 每個worker NIOEventLoop處理NioSocketChannel業(yè)務時,會使用 pipeline (管道),管道中維護了很多 handler
處理器用來處理 channel 中的數(shù)據(jù)
Netty模塊組件
【Bootstrap、ServerBootstrap】:
Bootstrap 意思是引導,一個 Netty 應用通常由一個 Bootstrap 開始,主要作用是配置整個 Netty 程序,串聯(lián)各個組
件,Netty 中 Bootstrap 類是客戶端程序的啟動引導類,ServerBootstrap 是服務端啟動引導類。
【Future、ChannelFuture】:
正如前面介紹,在 Netty 中所有的 IO 操作都是異步的,不能立刻得知消息是否被正確處理。
但是可以過一會等它執(zhí)行完成或者直接注冊一個監(jiān)聽,具體的實現(xiàn)就是通過 Future 和 ChannelFutures,他們可以注
冊一個監(jiān)聽,當操作執(zhí)行成功或失敗時監(jiān)聽會自動觸發(fā)注冊的監(jiān)聽事件。
【Channel】:
Netty 網絡通信的組件,能夠用于執(zhí)行網絡 I/O 操作。Channel 為用戶提供:
1)當前網絡連接的通道的狀態(tài)(例如是否打開?是否已連接?)
2)網絡連接的配置參數(shù) (例如接收緩沖區(qū)大小)
3)提供異步的網絡 I/O 操作(如建立連接,讀寫,綁定端口),異步調用意味著任何 I/O 調用都將立即返回,并且不保
證在調用結束時所請求的 I/O 操作已完成。
4)調用立即返回一個 ChannelFuture 實例,通過注冊監(jiān)聽器到 ChannelFuture 上,可以 I/O 操作成功、失敗或取
消時回調通知調用方。
5)支持關聯(lián) I/O 操作與對應的處理程序。
不同協(xié)議、不同的阻塞類型的連接都有不同的 Channel 類型與之對應。
下面是一些常用的 Channel 類型: