Netty 组件
Netty是一款异步的事件驱动的网络程序应用框架,支持快速的开发可维护性的高性能的面向协议
的服务器和客户端。
Netty优雅的处理了网络编程,多线程处理和并发领域的问题。
包含的功能模块:
传输服务:Socket和数据报,Http隧道,VM管道
协议:Http和WebSocket,SSL安全套接字,压缩,大文件传输,Google Protopuf,RTSP实时流协议(流媒体),遗留的基于文本和二进制协议
核心:可扩展的事件模型,统一的通信API,零拷贝的ByteBuffer
Netty网络抽象组件
提示:ctrl+alt+b查看各接口的实现,得知netty都提供了哪些支持
- Channel ~ Socket
- EventLoop ~ 控制流,多线程处理,并发
- ChannelFuture ~ 异步通知
Channel , EventLoop,Thread,EventLoopGroup的关系
- EventLoopGroup:EventLoop = 1:n
- EventLoop:Thread = 1:1
在EventLoop生命周期内
- Channel:EventLoop = 1:1
在Channel生命周期内,只注册一个EventLoop
Netty管理数据流和执行业务的组件
- Channelandler ~ 业务处理容器 ;
子类型
【编码器,解码器,SimpleChannelInboundHandler】 - ChannelPipeline ~ 将多个ChannelHandler串联起来
- ChannelHandlerContext ~ ChannelHandler和ChannelPipeline之间的绑定,
调用该对象的write导致消息跳过出站Handler在尾部直接写入
建议
:建立一个连接,客户端需要一个EventLoopGroup,服务端需要两个EventLoopGroup(建立连接和处理连接)
Netty5.x
[netty5.x废弃,使用forkjoin没有明显的性能提升]