【Netty系列】Reactor 模式 2
目录
流程图说明
关键流程
以下是 Reactor 模式流程图,结合 Netty 的主从多线程模型,帮助你直观理解事件驱动和线程分工:
流程图说明
- Clients(客户端)
-
- 多个客户端(Client 1~N)向服务端发起连接请求。
- Main Reactor(主 Reactor)
-
- bossGroup 中的单个 EventLoop 线程负责监听端口(如 8080)。
- Acceptor 接受新连接,并将新连接的 Channel 分配给 workerGroup 中的某个子 Reactor(如轮询分配)。
- Sub Reactors(子 Reactor)
-
- workerGroup 包含多个 EventLoop 线程(如 EventLoop 1~N),每个线程处理多个 Channel 的 I/O 事件。
- 例如:EventLoop 1 处理 Channel 1 的读写,EventLoop 2 处理 Channel 2 的读写。
- ChannelPipeline(责任链)
-
- 每个 Channel 对应一个 Pipeline,数据按顺序经过解码器、业务逻辑、编码器等处理步骤。
关键流程
- 连接建立
-
- 客户端发起 TCP 连接 → Main Reactor 的 Acceptor 接受连接 → 分配 Channel 给 Sub Reactor。
- I/O 事件处理
-
- Sub Reactor 的 EventLoop 监听 Channel 的读写事件 → 触发 channelRead → 数据通过 Pipeline 处理。
- 非阻塞机制
-
- 每个 EventLoop 使用 Selector 监听多个 Channel,实现单线程处理多连接的 I/O 事件。
- 每个 EventLoop 使用 Selector 监听多个 Channel,实现单线程处理多连接的 I/O 事件。
- Sub Reactor 的 EventLoop 监听 Channel 的读写事件 → 触发 channelRead → 数据通过 Pipeline 处理。
- 客户端发起 TCP 连接 → Main Reactor 的 Acceptor 接受连接 → 分配 Channel 给 Sub Reactor。
- 每个 Channel 对应一个 Pipeline,数据按顺序经过解码器、业务逻辑、编码器等处理步骤。
- 多个客户端(Client 1~N)向服务端发起连接请求。
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们。