Netty 核心架构
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 调用来实现复杂的网络通信程序,同时提供了高性能和高可扩展性。