1. 程式人生 > >Netty(一)初步理解

Netty(一)初步理解

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)伺服器端:

宣告:所有文章均是為本人學習所用,圖片多有摘抄,僅便於個人學習!