在开发一个服务端时并不是很难的, 甚至模式都是很相似的. 通过一个启动类ServerBootstrap将必要的参数和属性等设置好之后, 再通过一个bind方法就像一个导火索一样, 触发了Netty的启动.

NioServerSocketChannel

  • 创建
  • 初始化
  • 注册
  • 绑定

NioEventLoop

  • 创建
  • 启动
  • 执行

在执行ServerBootstrap.bind方法之前,NioEventLoop已完成创建, 但还未启动和执行. 此时在执行bind的过程中, 进行NioServerSocketChannel创建和初始化. 而所谓的注册, 有两个层面含义, 第一个含义是Netty层面将NioServerSocketChannel和NioEventLoop进行关联, 第二层注册是JDK层面将channel和selector进行关联, 而就是这个第二层注册是通过任务的形式添加到NioEventLoop的MSPC队列中. 正是由这个第一个任务便启动了NioEventLoop. 之后的绑定接口操作也是以任务的形式添加到队列中.

NioEventLoop启动之后, 便开始了最重要的执行操作. 它是一个无限循环, 在循环中主要做三件事 :

  1. 监听事件
  2. 处理事件
  3. 处理队列中任务

详细流程后续完善

Netty启动_Netty