Netty核心架构

有的时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步,认准https://blog.zysicyj.top

全网最细面试题手册,支持艾宾浩斯记忆法。这是一份最全面、最详细、最高质量的 java面试题,不建议你死记硬背,只要每天复习一遍,有个大概印象就行了。 https://store.amazingmemo.com/chapterDetail/1685324709017001`

Netty 核心架构

Netty 是一个高性能的异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。下面是 Netty 核心架构的主要组成部分:

Bootstrap、ServerBootstrap

Bootstrap 类是 Netty 中启动客户端的启动类,而 ServerBootstrap 是启动服务器的启动类。它们都是设置服务器或客户端的各种配置的入口。

  • Bootstrap 用于客户端,用来连接服务器并且设置通道参数。

  • ServerBootstrap 用于服务器端,用来绑定端口并且启动服务器,同时可以设置子通道的参数。

Channel

Channel 接口是 Netty 网络操作的核心组件,代表一个到实体(如硬件设备、文件、网络套接字等)的开放连接,能进行读取、写入、连接和绑定操作。

  • NioSocketChannel:用于基于 NIO 传输的客户端。

  • NioServerSocketChannel:用于基于 NIO 传输的服务器端。

EventLoop 和 EventLoopGroup

EventLoop 控制着一个线程和被分配给它的 Channel,确保 I/O 操作不会同时发生在多个线程上。

  • EventLoopGroup 是一个包含多个 EventLoop 的组,用于提供事件循环的能力。

ChannelHandler 和 ChannelPipeline

ChannelHandler 是一个接口,用户可以通过实现这个接口来响应事件和状态变化,从而自定义处理逻辑。

  • ChannelInboundHandler 用于处理入站 I/O 事件。

  • ChannelOutboundHandler 用于处理出站 I/O 操作。

ChannelPipeline 是一个 ChannelHandler 的链表,用于处理和拦截入站和出站事件,它使得 ChannelHandler 链的创建和管理变得容易。

ChannelFuture

ChannelFuture 代表了一个还未发生的 I/O 操作。这使得 Netty 的所有 I/O 操作都是异步的,可以立即返回一个 ChannelFuture

ByteBuf

ByteBuf 是 Netty 的数据容器,类似于 Java NIO 中的 ByteBuffer,但提供了更加强大和灵活的功能。

Decoder 和 Encoder

  • Decoder 用于将接收到的数据转换为应用程序的消息格式。

  • Encoder 用于将发送的消息转换为适合网络传输的格式。

ChannelOption 和 Attribute

  • ChannelOption 用于在创建 Channel 时设置参数,例如连接超时、接收缓冲区大小等。

  • Attribute 用于在 Channel 上存储信息,它是一个可以附加到 Channel 的属性。

以上就是 Netty 核心架构的主要组成部分。Netty 的设计允许开发者通过简单的 API 调用来实现复杂的网络通信程序,同时提供了高性能和高可扩展性。

最后更新于