Netty 源碼(一)Netty 組件簡介
Netty 系列目錄(http://www.javashuo.com/article/p-hskusway-em.html)html
- Core:核心部分,是底層的⽹網絡通⽤用抽象和部分實現。
- Extensible Event Model :可拓拓展的事件模型。Netty 是基於事件模型的⽹網絡應⽤用框架。
- Universal Communication API :通⽤用的通訊 API 層。Netty 定義了了⼀一套抽象的通⽤用通訊
層的 API 。
- Zero-Copy-Capable Rich Byte Buffer :⽀支持零拷⻉貝特性的 Byte Buffer 實現。
- Transport Services:傳輸( 通訊 )服務,具體的⽹網絡傳輸的定義與實現。
- Socket & Datagram :TCP 和 UDP 的傳輸實現。
- HTTP Tunnel :HTTP 通道的傳輸實現。
- In-VM Piple :JVM 內部的傳輸實現。
- Protocol Support :協議支持。Netty 對於一些通用協議的編解碼實現。例如:HTTP、Redis、DNS 等等。
2、Netty 核心組件
Netty 有以下幾個核⼼心組件:網絡
- Bootstrap & ServerBootstrap
- Channel
- ChannelFuture
- EventLoop & EventLoopGroup
- ChannelHandler
- ChannelPipeline
下圖是 Channel、EventLoop、Thread、EventLoopGroup 之間的關係。架構
- 一個 EventLoopGroup 包含一個或多個 EventLoop。
- 一個 EventLoop 在它的生命週期內只能與一個 Thread 綁定。
- 全部有 EnventLoop 處理的 I/O 事件都將在它專有的 Thread 上被處理。
- 一個 Channel 在它的生命週期內只能註冊與一個 EventLoop。
- 一個EventLoop 可被分配至一個或多個 Channel 。
當一個鏈接到達時,Netty 就會註冊一個 Channel,而後從 EventLoopGroup 中分配一個 EventLoop 綁定到這個 Channel 上,在該 Channel 的整個生命週期中都是有這個綁定的 EventLoop 來服務的。框架
天天用心記錄一點點。內容也許不重要,但習慣很重要!oop