netty

分享netty 相关的技术

netty 网络模型

netty 网络模型

网络模型优化历程简介

Netty模型介绍:
  1. Netty网络模型包含两组线程池,分别是BossGroup 和 workGroup

  2. bossGroup负责客户端连接,WorkGroup 负责网络读写
  3. BossGroup和WorkGroup的类型都是NIOEventLoopGroup
  4. NIOEventLoopGroup 相当于一个事件循环组,这个组中含有多个事件循环,每一个事件循环都是NioEventLoop
  5. NioEventLoop表示一个不断执行处理任务的线程,每个NioEventLoop都有一个Selector,用于监听绑定在其上的socket网络通讯
  6. NIOEventLoopGroup可以有多个线程,即可以包含多个NioEventLoop
  7. 每个Boss NioEventLoop 循环执行的步骤如下
    1. 轮询accept事件
    2. 处理accept事件,与client建立连接,生成NioServerSocketChannel,将其注册到work NIOEventLoop上的selector
    3. 处理任务队列的任务,即runAllTask
  8. 每个Work NioEventLoop 循环执行的步骤如下
    1. 轮询read、write事件
    2. 处理I/O事件,在对应的NioSocketChannel中处理
    3. 处理任务队列的任务,即runAllTask
  9. 每个worker NioEventLoop处理业务时,会使用pipeline(管道),pipeline中包含channel

 

netty 网络模型

channel和ChannelPipeline的联系与区别

  1. 每个channel有且仅有一个ChannelPipeline与之对应
  2. 一个channel 包含一个ChannelPipeline,而一个ChannelPipeline中维护了一个由ChannelHandlerContext组成的双向链表,并且每个ChannelHandlerContext又关联着ChannelHandler
  3. 入栈和出栈事件在一个双向链表中,入栈事件会从链表head往后传递到最后一个入栈的handler,出栈事件会从链表tail往前传递到最前一个出栈的handler,两种类型的handler互不干扰

netty 源码分析

简明扼要的进行源码梳理与分析

netty 源码分析

服务端启动流程源码分析

一、启动流程简明梳理:

  1. 实例化BossGroup线程组
  2. 实例化WorkGroup 线程组
  3. 实例化ServerBootstrap

  4. 配置 ServerBootstrap属性
  5. ServerBootstrap对象绑定端口并监听网络连接
  6. 通道监听客户端关闭连接

二、具体流程示意图