一、什么是Netty?
Netty封装了JDK的NIO,是一个异步事件驱动的网络应用框架,用于快速开发可维护的高性能服务器和客户端。
二、Netty的优势
1、Api使用简单
2、功能强大,预置了多种编解码功能,支持主流协议;
3、定制能力强,可通过ChannelHandler对通信框架进行灵活的扩展;
4、性能高,与其它主流NIO框架对比,综合性能最优;
5、成熟稳定,Netty修复了已经发现的所有JDK NIO bug;
6、社区活跃,版本迭代周期短;
7、经历了大规模商用;
三、Netty核心组件介绍
1、eventloop:Netty Reactor 线程模型的核心处理引擎;(用于处理io事件的单线程执行器)
2、EventLoopGroup: 就是一组 EventLoop ,它主要是来维护和管理 EventLoop,一般我们是不会直接使用 EventLoop 的,而是通过 EventLoopGroup 来使用它。
3、Channel :客户端与服务端建立一个连接就会创建一个channel,近似于socket;
三者之间的关系
4、channelhandler:channer事件处理器
5、channelpipeline:提供channelhandler链的容器,并蒂尼用于在该链上传播入站和出站事件流的API(每个channel都有一个对应的channelpopeline);使用双向链表存储handler;
6、channelhandlerContext:类似于linklist,主要将handle组装成一个链表;
事件传播的过程中药考虑到几种写操作所对应的流程,ctx所对应的写操作性能最高,另外两种都会经过所有时间流转才会结束,ctx的写操作只经过改handle处理(具体看业务场景是否需要经过所有时间流程);