组件
Channel接口
基本的I/O操作,如bind,connect,read,write依赖于底层网络传输提供的源语,依靠于netty的Channel接口api,降低了直接使用Socket类的复杂性
EventLoop接口
EventLoop定义了netty的核心抽象,用于处理连接的声明周期中所发生的的事件
- 一个EventLoopGroup中包含多个EventLoop
- 一个EventLoop生命周只绑定一个thread
- 一个Channel生命周期只注册于一个eventloop
- 一个EventLoop可能会被分配一个或多个Channel
ChannelFuture接口
用于在某个操作完成时得到通知
ChannelHandler
所有出站入站数据的应用程序逻辑容器
ChannelPipline接口
为ChannelHandler链提供了容器,并定义了用于在该链上传播事件流的api,ChannelHandler的执行顺序是由添加他们的顺序决定的
传输
NIO - 非阻塞IO
NIO提供了所有I/O操作全异步的实现,利用了jdk1.4时可用的基于选择器的API
Epoll - 用于Linux的本地非阻塞传输
使用了linux自2.5.44被引入的高度可扩展的I/O通知特性
OIO - 阻塞IO
基于java.net包的阻塞实现,netty利用so_timeout的socket标志,指定了等待的最大毫秒数,如果操作在指定时间没有完成,将抛出异常,netty会捕获这个异常进行循环处理
Local - 用于jvm内部通信的传输
用于在同一jvm中运行的客户端和服务器端之间的异步通信
Embedded
可以将一组ChannelHandler作为帮助类嵌入到其他的ChannelHandler内部,通过这种方式做到可扩展,不需要修改其内部代码