08-Netty 高性能架构设计-Netty模型介绍

2022-02-18 13:52:28 浏览数 (1)

Netty模型

工作原理示意图 1-简单版

Netty主要是基于主从Reactors多线程模型(如图)做了一定的改进, 其中主从Reactor 多线程模型有多个Reactor

对上图的说明

  1. BossGroup线程维护Selector,只关注Accecpt
  2. 当接收到Accept事件,获取到对应的SocketChannel,封装成NIOScoketChannel并注册到Worker线程(事件循环),并进行维护
  3. 当Worker线程监听到selector中通道发生自己感兴趣的事件后,就进行处理(就由handler),注意handler经加入到通道

工作原理示意图 2-进阶版

工作原理示意图3-详细版

对上图的说明小结

  1. Netty抽象出两组线程池Boss Group 专门负责接收客户端的连接, WorkerGroup 专门负责网路的读写
  2. Boss Group 和 WorkerGroup 类型都是NIOEventLoopGroup
  3. NioEventLoopGroup相当于一个事件循环组, 这个组中含有多个事件循环, 每一个事件循环是NioEventLoop
  4. NioEventLoop表示一个不断循环的执行处理任务的线程, 每个NioEventLoop都有一个Selector, 用于监听绑定在其上的Socket的网络通讯
  5. NioEventLoopGroup 可以有多个线程, 即可以含有多个NIOEventLoop
  6. 每个Boss NioEventLoop 循环执行的步骤有3步
    1. 轮训accept事件
    2. 处理accept事件, 与client建立连接, 生成NioSocketChannel, 并将其注册到某个worker NioEventLoop上的selector
    3. 处理任务队列任务,即runAllTask
  7. 每个Worker NIOEventLoop循环执行的步骤
    1. 轮训read, write事件
    2. 处理IO事件, 即read, write事件, 在NIOSocketChannel处理
    3. 处理任务队列的任务, 即runAllTask
  8. 每个Worker NioEventLoop 处理业务时, 会使用pipeline(管道), pipeline中包含了channel, 即通过pipeline可以获取到对应的通道,通道中维护了很多的处理器

0 人点赞