Netty(一)初步理解
阿新 • • 發佈:2018-12-10
1、Netty通訊與傳統通訊得區別:
read:傳統資料拷貝:DMA傳輸--copy--頁緩衝區--應用緩衝區buffer,
netty0拷貝:DMA傳輸--應用緩衝區buffer
write:傳統資料拷貝:應用緩衝區--copy--socket緩衝區--DMA傳輸
netty0拷貝: 應用緩衝區--DMA傳輸
2、示意圖(網上摘抄,很形象!)
理解:
-
Channel:一個客戶端與伺服器通訊的通道(表示一個連線,可以理解為每一個請求,就是一個Channel)
-
ChannelHandler:業務邏輯處理器(核心處理業務就在這裡,用於處理業務請求,業務邏輯都是存在於ChannelHandler)
- ChannelInboundHandler,輸入資料處理器
- ChannelOutboundHandler,輸出業務處理器
-
ChannelPipeline:用於存放ChannelHandler的容器(用於儲存處理過程需要用到的ChannelHandler和ChannelHandlerContext)
-
ChannelContext:通訊管道的上下文
-
ChannelHandlerContext:用於傳輸業務資料。
3、Http請求:
- HTTP Request 第一部分是包含的頭資訊
- HttpContent 裡面包含的是資料,可以後續有多個 HttpContent 部分
- LastHttpContent 標記是 HTTP request 的結束,同時可能包含頭的尾部資訊
- 完整的 HTTP request,由1,2,3組成
- HTTP response 第一部分是包含的頭資訊
- HttpContent 裡面包含的是資料,可以後續有多個 HttpContent 部分
- LastHttpContent 標記是 HTTP response 的結束,同時可能包含頭的尾部資訊
- 完整的 HTTP response,由1,2,3組成
4、Netty客戶端和服務端的時序圖:
(1)客戶端:
(2)伺服器端:
宣告:所有文章均是為本人學習所用,圖片多有摘抄,僅便於個人學習!