Netty的组件
文章目录
提示:以下是本篇文章正文内容,下面案例可供参考
一、组件介绍
1.Channel
提供基本的I/O操作(bind()、connect()、read()、write()),Netty的Channel降低了Socket的复杂性。
Channel的实现有:
- EmbeddedChannel
- LocalServerChannel
- NioDatagramChannel
- NioSctpChannel
- NioSocketChannel
2.EventLoop
用于处理连接的生命周期中所发生的事件。Channel、EventLoop、Thread、EventLoopGroup间的关系:
- 一个EventLoopGroup包含一个或多个EventLoop
- 一个EventLoop在它的生命周期只和一个Thread绑定
- 所有有EventLoop处理的I/O事件都将在它专有的Thread上被处理
- 一个Channel在一个生命周期只注册于一个EventLoop
- 一个EventLoop可能会分配不只一个Channel
3.ChnnelFuture
由于Netty是异步的,一个操作可能不会立即返回,所以提供ChannelFuture的接口通过注册ChannelFutureListener的方式通知某个操作完成(不管这个操作是否成功)
4.ChannelHandler和ChannelPipeline
- ChannelHandler充当了所有处理入站和出站数据的应用程序逻辑容器,通常数据会流经多个处理器。
- ChannelPipeline为ChannelHandler链提供了容器,ChannelHandler安装到ChannelPipeline的流程是:
1.ChannelInitializer实现被注册到ServerBootstrap或BootStrap中
2.ChannelInitializer.initChannel()方法调用时,在ChannelPipeline中安装ChannelHandler
3.ChannelInitializer将自己从ChannelPipeline中被移除
5.编码器和解码器
Netty接收和发送消息时,数据会发生转换入站消息会解码,从字节码转换为另一种格式,通常是java对象,出站消息会编码,编码为字节码。
6.引导
- 基于服务端的引导为ServerBootStrap,绑定到一个端口,监听连接
- 基于客户端的引导BootStrap连接到远程端点
总结
了解Netty的组件概念及架构体系
`