Netty 结构

Netty 是一个基于 Java NIO 的客户端服务器网络应用程序框架,它简化了网络应用程序开发,使其可以快速构建高性能、高可靠性的网络应用程序。Netty 架构的核心是 Channel 和 EventLoop,每个 Channel 都有一个关联的 EventLoop,用于处理 Channel 上的 I/O 事件,EventLoop 在不同线程中处理 I/O 事件,EventLoop 可以被分为单线程和多线程两种模式,其中单线程模式用于处理一个 Channel,多线程模式用于处理多个 Channel。

Netty 类

1、Bootstrap:它是 Netty 客户端程序开发的起步类,它的实例可以被用来连接到服务器端。
2、ServerBootstrap:它是 Netty 服务端程序开发的起步类,它的实例可以用来绑定服务器端口,监听客户端连接。
3、Channel:它是 Netty 中最核心的类,它表示一个连接,或者说一个连接通道,它可以用来传输数据。
4、EventLoop:它是一个处理 I/O 事件的循环,它可以被分为单线程和多线程两种模式,用于处理 Channel 上的 I/O 事件。
5、ChannelHandler:它是一个处理网络 I/O 事件的接口,它可以被用来处理网络 I/O 事件,如接收和发送数据。

Netty 的操作流程

Netty 的操作流程是:首先,使用 Bootstrap 或 ServerBootstrap 创建一个 Channel,然后,使用 ChannelHandler 将 Channel 注册到 EventLoop,接着,EventLoop 将 ChannelHandler 的 I/O 事件处理器注册到 Channel,最后,EventLoop 将 Channel 注册到 Selector,用于接收 I/O 事件,当 I/O 事件发生时,Selector 将 I/O 事件分发给 Channel,Channel 将 I/O 事件传递给 ChannelHandler,ChannelHandler 将 I/O 事件处理完毕后,将处理结果返回给 Channel,最后,Channel 将处理结果发送给客户端。