Netty NIO 開發指南

Netty NIO 開發指南

服務端創建

  • 步驟:

    1. 創建ServerBootstrap實例。該類有着非常多的設置參數,因此採用Builder模式。
    2. 設置並綁定Reactor線程池。其實就是EventLoopGroup,就是一個EventLoop的數組。
    3. 設置並綁定服務端Channel。即NioServerSocketChannel。NioEventLoopGroup實際就是Reactor線程池,負責調度和執行客戶端的接入、網絡讀寫事件的處理、用戶自定義任務和定時任務的執行。
    4. 鏈路建立的時候創建並初始化ChannelPipeline。並不是NIO服務端必須的,本質就是一個負責處理網絡事件的職責鏈,負責管理和執行ChannelHandler。
      • 典型網絡事件:
      • 鏈路註冊、鏈路激活、鏈路斷開、接收到請求消息、請求消息接收並處理完畢、發送應答消息、鏈路發生異常、發生用戶自定義事件。
    5. 初始化ChannelPipeline完成之後,添加並設置ChannelHandler。
      • 實用系統ChannelHandler:
        1. 系統編解碼框架——ByteToMessageCodec;
        2. 通用基於長度的半包解碼器——LengthFieldBasedFrameDecoder;
        3. 碼流日誌打印Handler——LoggingHandler
        4. SSL安全認證Handler——SslHandler
        5. 鏈路空閒檢測Handler——IdleStateHandler;
        6. 流量整形Handler——ChannelTrafficShapingHandler;
        7. Base64編解碼——Base64Decoder和Base64Encoder
    6. 綁定並啓動監聽端口。
    7. Selector輪詢。由Reactor線程NioEventLoop負責調度和執行Selector輪詢操作,選擇準備就緒的Channel。
    8. 當輪詢到準備就緒的Channel之後,就由Reactor線程NioEventLoop執行ChannelPipeline的相應方法,最終調度並執行ChannelHandler。
    9. 執行Netty系統ChannelHandler和用戶添加定製的ChannelHandler。
  • backlog指定了內核爲此套接口排隊的最大連接個數,對於給定的監聽套接口,內核要維護兩個隊列:未鏈接隊列和已連接隊列,根據TCP三次握手過程中的三個分節來分隔這兩個隊列。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章