Netty

Netty

Netty是一个异步网络库,使Java NIO的功能更好用。在《Concurrent-Notes/并发IO》中我们讨论了Reactor模型,Netty主要基于主从Reactor多线程模型发展出来的:

Netty 模型

Netty网络分层架构

Nettty逻辑架构为典型网络分层架构设计,从下到上分别为网络通信层、事件调度层、服务编排层。

Netty 分层架构

  • 网络通信层:它执行网络I/O操作,核心组件包含BootStrap、ServerBootStrap、Channel。

    • Channel通道,提供了基础的API用于操作网络IO,比如bind、connect、read、write、flush等等。它以JDK NIO Channel为基础,提供了更高层次的抽象,同时屏蔽了底层Socket的复杂性。Channel有多种状态,比如连接建立、数据读写、连接断开。随着状态的变化,Channel处于不同的生命周期,背后绑定相应的事件回调函数。
  • 事件调度层:它的核心组件包含EventLoopGroup、EventLoop。

    • EventLoop本质是一个线程池,主要负责接收Socket I/O请求,并分配事件循环器来处理连接生命周期中所发生的各种事件。
  • 服务编排层:它的职责实现网络事件的动态编排和有序传播。

    • ChannelPipeline基于责任链模式,方便业务逻辑的拦截和扩展;本质上它是一个双向链表将不同的ChannelHandler链接在一块,当I/O读写事件发生时,会依次调用ChannelHandlerChannel(Socket)读取的数据进行处理。

Links