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没有明显的性能提升]

原文地址:https://www.cnblogs.com/fubinhnust/p/11940115.html