EventLoop接口
- 一个EventLoopGroup 包含一个或者多个EventLoop
- 一个EventLoop在它的声明周期内只和一个Thread 绑定
- 所有EventLoop处理的IO事件都是在它的专有Thread 上被处理
- 一个Channel 在它的声明周期内只注册一个EventLoop
- 一个Eventloop 可能会被分配给一个或者多个Channel
ChannelFuture
Netty 中所有的IO操作都是异步的,因为一个操作可能不会被立即返回。ChannelFuture 相当于一个占位符,在操作完成之后,用来进行某些操作。
ChannelHander 和ChannelPipeline
ChannelHander 承担了所有出站数据和入站数据的处理。派生出两个子接口,ChannelInboundHandler 和ChannelOutBoundHandler 专门用于处理入站数据和出站数据。我们通常需要实现这两个接口,来将我们自己的业务逻辑添加到ChannelHandler中。
ChannelPipeline 是ChannelHander的容器。就像一个单向链表,ChannelHandler 是它上面的一个个节点。它用来管理链上的ChannelHandler
Adapter
- ChannelHandlerAdapter 适配器
- ChannelInboudHandlerAdapter 入站适配器
- ChannelOutboundHandlerAdapter 出站适配器
- ChannelDuplexHandler 实现了入站适配器和出站适配器
编码器和解码器
在网络传输中,数据是以字节传输,在入站的时候被解码,出站编码,当我们不配置编码器和解码器的时候,netty使用默认编码器和解码器。netty的编码器和解码器都继承自ChannelHandlerAdapter,而ChannelHandlerAdapter又实现了HandlerAdapter,所以我们可以方便的像添加业务处理Handler 一样,在ChannelInitializer 中添加到Pipline 中。 需要注意的是,编码器需要添加到Handler 的末尾,解码器需要添加在Handler的开头,因为编码器和解码器本质上也是一个Handler ,处理数据之后,传递给下一个Handler的数据就是已经编码或者解码之后的数据格式了。
netty 提供了默认的常用编码器和解码器,以及预支的编解码器。
SimpleChannelInboundHandler
当我们需要创建一个消息入站处理器的时候,我们通常不需要直接去实现ChannelInboudHandler接口,我们可以通过继承SimpleChannelInboundHandler,然后重写少部分代码,来实现我们自己的业务逻辑。
引导类
BootStrap 和ServerBootStrap 分别引导启动客户端和服务端。
它们的区别如下。
1 BootStrap 是连接到远程主机和端口,ServerBootStrap 初始化并绑定到本地端口。
2 BootStrap 只需要一个EventLoopGroup, ServerBootStrap 需要两个EventLoopGroup(可以是同一个实例)

传输Channel
netty的channel是线程安全的,可以多个连接共用一个Channel, 并且channel 将会保证数据按顺序的被发送

本文深入解析Netty框架的核心组件,包括EventLoop、Channel、ChannelFuture、ChannelHandler及Pipeline等,阐述其工作原理和使用场景,为读者提供全面的Netty内部机制理解。
888

被折叠的 条评论
为什么被折叠?



