bootstrap用於引導Netty的啓動,Bootstrap是客戶端的引導類,ServerBootstrap是服務端引導類。類繼承關係: java
Netty中的操做都是異步的,等待完成或者註冊監聽。如:bootstrap
//b爲ServerBootstrap實例 ChannelFuture f = b.bind().sync();
Channel根據不一樣的協議、不一樣的阻塞類型,分爲不一樣的Channel類型: 網絡
經過名稱也能大概猜出來其分別的做用。異步
Netty基於java.nio.channels.Selector對象實現IO多路複用,經過Selector一個線程能夠監聽多個鏈接的Channel事件。當向一個Selector中註冊Channel後,Selector內部的機制就能夠自動不斷的Select這些註冊的Channel是否有就緒的IO事件(可讀、可寫、網絡鏈接完成等)。oop
ChannelHandler屬於業務的核心接口,用於處理IO事件或者攔截IO操做,並將其轉發到ChannelPipeline(業務處理鏈)中的下一個處理程序。 貼個實現類關係圖:線程
一個 Channel 包含了一個 ChannelPipeline,而 ChannelPipeline 中又維護了一個由 ChannelHandlerContext 組成的雙向鏈表,而且每一個 ChannelHandlerContext 中又關聯着一個 ChannelHandler。 3d
保存Channel相關的全部上下文信息,同時關聯一個ChannelHandler。code
Netty建立Channel實例後,能夠經過ChannelOption設置參數。對象
NioEventLoopGroup能夠理解爲線程池,NioEventLoop理解爲一個線程,每一個EventLoop對應一個Selector,負責處理多個Channel上的事件。 blog
第一個boss EventLoopGroup分配一個EventLoop負責建立Channels傳入的鏈接請求。一旦鏈接接受,第二個work EventLoopGroup分配一個 EventLoop給它的Channel。