Netty特性
设计:支持多种传输类型,阻塞和非阻塞的。简单而强大的线程模型,真正的无连接数据套接字(UDP)支持
性能:拥有比Java的核心API更高的吞吐量以及更低的延迟,得益于池化和服用,拥有更低的资源消耗,最少的内存复制
健壮性:不会因为慢速,快速或者超载的连接而导致OutOfMemoryError,消除在高速网络中NIO应用常见的不公平读写比率
安全性:完整的SSL/TLS以及StartTLS支持
社区驱动:发布快速而且频繁
Netty核心组件
Channel:Java NIO的一个基本构造,可以看作是传入或者传出数据的载体
回调:回调方法
Future:ChannelFuture不需要像JSK提供的Channel那样去手动检查对应操作是否完成。保证了Netty的完全异步和事件驱动
事件和ChannelHandler:事件触发动作,这些动作一般包括记录日志,数据转换,流控制,应用程序逻辑
Netty通过触发事件将Selector从应用程序中抽象出来。在内部,将会为每个Channel分配一个EventLoop,用以处理所有事件(注册感兴趣的事件,将事件派发给ChannelHandler,安排进一步动作)
我大概画了下需要掌握的Netty控件,如下
几个重要接口
EventLoop接口:用于处理连接的生命周期中所发生的事件