輕鬆快速的開發協議服務器和客戶端網絡應用程序的NIO 框架,編程
- 它大大簡化了TCP 或者UDP服務器的網絡編程,
- 可是你仍然能夠訪問和使用底層的API,
- Netty 只是對其進行了高層的抽象。
- Netty 的簡易和快速開發
- 並不意味着由它開發的程序將失去可維護性或者存在性能問題
EventLoopGroup設計模式
- 自己是一個線程池
- 其中包含了自定義個數的NioEventLoop,
- 每一個NioEventLoop 是一個線程,
- 而且每一個NioEventLoop 裏面持有本身的selector 選擇器
- Netty 之因此能提供高性能網絡通信,
- Netty
- 客戶端持有一個EventLoopGroup 用來處理網絡IO操做,
- 在服務器端持有兩個EventLoopGroup,
- 其中boss組是專門用來接收客戶端發來的TCP 連接請求的,
- worker組是專門用來具體處理完成三次握手的連接套接字的網絡IO 請求的。
Channel 與 EventLoop 的關係服務器
- 每一個Channel 只會關聯一個NioEventLoop
- 當Channel 是服務端通道NioServerSocketChannel 時候,
- NioServerSocketChannel自己
- 會被註冊到boss EventLoopGroup 裏面的
- 某一個NioEventLoop 管理的selector 選擇器上,
- 而完成三次握手的連接套接字
- 是被註冊到了worker EventLoopGroup 裏面的
- 某一個NioEventLoop 管理的selector 選擇器上;
- 多個Channel 能夠註冊到
- 同一個NioEventLoop管理的selector 選擇器上
ChannelPipeline網絡
- Netty 中的ChannelPipeline 相似於Tomcat 容器中的Filter鏈,
- 屬於設計模式中的責任鏈模式,
- 其中鏈上的每一個節點就是一個ChannelHandler
- 在netty 中每一個Channel 有屬於本身的ChannelPipeline,
- 對從Channel 中讀取或者要寫入Channel 中的數據進行依次處理,
Netty 客戶端底層與Java NIO 對應關係框架