日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【Netty】Netty 核心组件 ( ChannelOption | EventLoopGroup )

發布時間:2025/6/17 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Netty】Netty 核心组件 ( ChannelOption | EventLoopGroup ) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 一、 ChannelOption 組件
  • 二、 EventLoopGroup 線程池組件
  • 三、 BossGroup 與 WorkerGroup 運行機制





一、 ChannelOption 組件



ChannelOption 組件用于對 Channel 通道進行配置 ;



1 . ChannelOption.SO_KEEPALIVE 參數 : 設置該客戶端連接一直處于活躍狀態 ;



2 . ChannelOption.SO_BACKLOG 參數 :


① 設置連接數 : 設置服務器可連接隊列個數 ;

② 連接請求隊列機制 : 當客戶端的請求到達服務器端 , 如果服務器端正在處理其它客戶端的連接的事件時 , 先將本次的客戶端連接請求放入隊列中等待 , ChannelOption.SO_BACKLOG 參數就是設置該隊列的大小 ;



3 . 關于服務器端連接數說明 :


① 順序處理 : 服務器端處理客戶端連接的請求事件 , 按照連接隊列中的順序 , 依次處理 ;

② 處理性能 : 服務器端每個線程每次只能處理單個客戶端連接的請求事件 ;

③ 處理極限 : 因此如果連接請求數過多 , 超出服務器處理能力 , 就會造成整體性能下降 ;

④ 設置限制 : 使用該 ChannelOption.SO_BACKLOG 參數控制服務器的連接請求數 , 是很有必要的 ;



4 . ChannelOption 配置 Channel 通道示例 :


① option : 用于設置 BossGroup 線程池的參數 , BossGroup 負責與客戶端建立連接 , 因此這里的 ChannelOption.SO_BACKLOG 參數用于設置連接操作的請求 , 不涉及到與客戶端進行數據讀寫 ;

② childOption : 用于設置 WorkerGroup 線程池參數 , WorkerGroup 負責與客戶端進行數據交互 ;

ServerBootstrap bootstrap = new ServerBootstrap(); bootstrap.group(bossGroup, workerGroup) // 設置 主從 線程組 , 分別對應 主 Reactor 和 從 Reactor.channel(NioServerSocketChannel.class) // 設置 NIO 網絡套接字通道類型// 核心代碼 ---------------------------------------------------------------------.option(ChannelOption.SO_BACKLOG, 128) // 設置線程隊列維護的連接請求個數.childOption(ChannelOption.SO_KEEPALIVE, true) // 設置連接狀態行為, 保持連接狀態// 核心代碼 ---------------------------------------------------------------------.childHandler( null );



二、 EventLoopGroup 線程池組件



1 . EventLoopGroup 接口與實現類 :


① 接口 : EventLoopGroup 是接口 , 繼承了 EventExecutorGroup 接口 ;

public interface EventLoopGroup extends EventExecutorGroup

② 實現類 : 接口不能直接使用 , 實際使用的類是 NioEventLoopGroup ;

public class NioEventLoopGroup extends MultithreadEventLoopGroup

2 . EventLoopGroup 線程池機制 :


① 線程池 : EventLoopGroup 線程池中有多個 EventLoop 線程同時運行 ;

② 線程 : 每個 EventLoop 線程中都有一個 選擇器 Selector 和 TaskQueue 任務隊列 , 控制該線程接受并執行任務 ;

③ 線程調度 : 當有任務分配給 EventLoopGroup 線程池時 , 調用 next 方法 , 從 EventLoopGroup 線程池中獲取 EventLoop 線程處理該任務 ;



3 . 服務器端的 EventLoopGroup 示例 :


222 線程池 : 服務器端有兩個 EventLoopGroup 線程池 , 分別是 BossGroup 和 WorkerGroup ;

② BossGroup 線程池 : 處理客戶端的連接事件 , 建立與客戶端的連接 ;

③ WorkerGroup 線程池 : 處理客戶端的數據交互事件 , 實現客戶端與服務器端的數據讀寫 ;

// 1. 創建 BossGroup 線程池 和 WorkerGroup 線程池, 其中維護 NioEventLoop 線程 // NioEventLoop 線程中執行無限循環操作// BossGroup 線程池 : 負責客戶端的連接 // 指定線程個數 : 客戶端個數很少, 不用很多線程維護, 這里指定線程池中線程個數為 1 EventLoopGroup bossGroup = new NioEventLoopGroup(1); // WorkerGroup 線程池 : 負責客戶端連接的數據讀寫 EventLoopGroup workerGroup = new NioEventLoopGroup();

4 . EventLoopGroup 常用方法 :


① 構造方法 : 可以使用無參的構造方法 , 也可以在構造方法參數中指定線程池線程個數 ;

EventLoopGroup bossGroup = new NioEventLoopGroup(1); // 有參構造方法, 執行線程個數 EventLoopGroup workerGroup = new NioEventLoopGroup(); // 無參構造方法 , 默認線程個數, CPU 核數 * 2

② 斷開連接方法 : 調用 shutdownGracefully 方法 , 優雅地斷開連接 ;

bossGroup.shutdownGracefully();



三、 BossGroup 與 WorkerGroup 運行機制





1 . BossGroup 線程池簡述 :


① BossGroup 線程池類型 : BossGroup 的真實類型是 NioEventLoopGroup 類型的 ;

② BossGroup 線程池中線程個數 : BossGroup 線程池一般都只放一個線程 , 如上面代碼中 new NioEventLoopGroup(1) 指定 BossGroup 線程池中線程個數為 111 ;

③ NioEventLoop 線程 : 該 BossGroup 線程池中的 EventLoop 線程實際類型是 NioEventLoop , 下面開始針對這 111 個 EventLoop 線程進行解析 ;



2 . BossGroup 線程池 建立與客戶端連接 細節 :


① 注冊通道 : NioEventLoop 線程中注冊了 NioServerSocketChannel , 這是服務器端負責建議與客戶端連接的 服務器套接字通道 ;

② NioEventLoop 線程輪詢監聽 : NioEventLoop 線程的 選擇器 Selector 監聽客戶端的 連接事件 , 監聽到之后 , 就會建立與客戶端的連接 ;

③ 建立連接 : 服務器端建立與客戶端的連接 , 最終得到一個 NioSocketChannel 連接通道 , 通過該通道可以與客戶端進行數據讀寫交互 ;


此時 BossGroup 線程池任務告一段落 , 將該 NioSocketChannel 套接字通道交給 WorkerGroup 線程池進行處理 ;



3 . WorkerGroup 線程池 接收客戶端連接 細節 :


① 傳遞 NioSocketChannel : BossGroup 線程池中連接建立完成 , 將 NioSocketChannel 傳遞給了 WorkerGroup 線程池 ;

② WorkGroup 線程池概述 : WorkerGroup 線程池中有多個 NioEventLoop 線程 , 每個 NioEventLoop 線程都要維護多個 NioSocketChannel 客戶端套接字通道 ;

③ 選擇線程池 : WorkerGroup 線程池調用 NioEventLoopGroup 的 next 方法 , 選擇一個 NioEventLoop 線程 , 接收這個客戶端套接字通道 NioSocketChannel ;

④ 注冊通道 : 將該 NioSocketChannel 注冊給 NioEventLoop 線程中的 選擇器 Selector , 即可監聽該客戶端連接的數據讀寫事件 ;



4 . NioEventLoopGroup 線程池選擇線程 next 方法規則 :


① WorkerGroup 線程池中線程個數 : 默認的線程個數是 CPU 核數的 222, 假設服務器是 444 核的 , 那么默認該線程池中有 888 個線程 ;

② 傳遞 NioSocketChannel : 當 BossGroup 建立連接成功 , 傳遞 NioSocketChannel 給 WorkerGroup 線程池 , WorkerGroup 需要選擇一個 NioEventLoop 線程接收該 NioSocketChannel 客戶端套接字通道 ;

③ 調用 next 方法分配策略 : 線程標號 000 ~ 888 , 第 000 個 NioSocketChannel 分配給第 000 個線程 , 然后第 888 個 NioSocketChannel 分配給第 888 個線程 , 第 999 個 NioSocketChannel 分配給第 000 個線程 ;


總結 : nnn 個線程分配給 n%9n \% 9n%9 個線程 ;

總結

以上是生活随笔為你收集整理的【Netty】Netty 核心组件 ( ChannelOption | EventLoopGroup )的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 爽爽爽av | 妖精视频在线观看免费 | 2022精品国偷自产免费观看 | 色屁屁www影院免费观看入口 | 欧美丰满艳妇bbwbbw | 欧美成人专区 | 色噜噜狠狠一区二区三区 | 男人爆操女人 | 黄色a∨ | 国产一区二区三区精品在线 | 校园sm主奴调教1v1罚视频 | 国产乱码精品一区二区三区五月婷 | 李丽珍裸体午夜理伦片 | 日韩黄色片子 | 日韩欧美一区在线 | 天堂资源中文 | 色呦呦网站 | 黄色网址在线免费看 | 欧美69精品久久久久久不卡 | 欧美一区二区在线免费观看 | 日韩精品在线播放 | 青青草视频偷拍 | 日日射天天操 | 久久影院午夜理论片无码 | 外国黄色网 | com国产 | 国产男女猛烈无遮挡 | 香蕉视频官网在线观看 | 国产精品调教 | 又污又黄又爽的网站 | 欧美呦交 | 一区二区不卡 | 成人动漫h在线观看 | 你懂得在线视频 | 97超碰国产精品无码蜜芽 | 一级香蕉视频在线观看 | 男生和女生差差的视频 | 天天天天色 | 欧美日韩国产传媒 | 影音先锋久久久久av综合网成人 | 日韩视频h | 欧美日韩视频在线播放 | 欧美久久久久久久久久久 | 丰满少妇乱子伦精品看片 | 欧美肥老妇视频九色 | 五月婷婷啪啪 | 操操操视频 | 精品无码一区二区三区电影桃花 | 老司机在线看片 | 国产4区 | av免费亚洲| 欧美日日操 | 视色视频 | 色婷婷777777仙踪林 | 夜夜高潮夜夜爽 | 天堂网在线视频 | 国产女主播喷水高潮网红在线 | 美国美女黄色片 | 亚洲一区二区在线免费 | 午夜在线视频播放 | 美女自卫网站 | 在线观看的黄色网址 | 精品无码久久久久久久久果冻 | 国产成人综合亚洲 | 欧美成人免费在线 | 亚洲精品男人天堂 | 69精品久久久 | 天堂网在线资源 | 粉嫩av一区二区夜夜嗨 | 女上男下动态图 | 伊人网免费视频 | 国产在线视频你懂得 | 丝袜在线一区 | 国产精选av | 一本色道久久综合亚洲精品按摩 | 国产成人精品aa毛片 | 日本在线黄色 | 国产一区二区在线看 | 加勒比一区二区 | 成人午夜福利视频 | 黄色网址av| 国产精品第一页在线观看 | 成人蜜桃av | 国产三级视频在线 | 国产精品成人免费一区二区视频 | 69社| 久久久久久av无码免费看大片 | 黄色一级视频在线观看 | 日本wwwwwww| 欧洲一区二区在线 | 91人人澡人人爽人人精品 | 亚洲福利电影 | 国产精品黑丝 | 成人h动漫精品一区二区无码 | 肉肉av福利一精品导航 | 67194午夜| 久久国产精彩视频 | 精品国产乱码久久久久久1区二区 | 91精品视频在线播放 |