Netty
Netty
Netty是一个网络通信框架。主要由事件模型、统一通信API、IO读写缓冲区、 Transport、协议支持五个部分组成。
Netty
Netty
Netty核心组成
事件模型
统一通信API
IO读写缓冲区
Transport
协议支持
Netty核心组成
Netty核心部分包括事件模型、统一通信API、IO读写缓冲区三部分。
事件模型
Netty被设计为事件驱动的,它的事件模型基于拦截器链模式。Netty的事件驱动是可扩展的。
Netty
Bootstrap
ClientBootstrap
ConnectionlessBootstrap
ServerBootstrap
IO读写缓冲区
Netty使用自己的一套读写缓冲API来表示网络字节序列,以代替标准Java NIO的ByteBuffer(java.nio.ByteBuffer),这比使用ByteBuffer更有优势,并提供了丰富的IO读写缓冲实现,支持零拷贝。Netty提供的所有读写缓冲实现都实现了ChannelBuffer(org.jboss.netty.buffer.ChannelBuffer)接口,它的设计从根本上解决了Java NIO ByteBuffer的问题,满足网络应用开发者的日常需求设计。
IO读写缓冲区
可根据需要定制实现自己的IO读写缓冲
传输零拷贝
动态缓冲区,以支持动态容量扩展
不需要调用flip()
通常情况下比Java NIO ByteBuffer更快
Netty
ChannelBuffer
AbstractChannelBuffer
ByteBufferBackedChannelBuffer
CompositeChannelBuffer
DuplicatedChannelBuffer
DynamicChannelBuffer
HeapChannelBuffer
BigEndianHeapChannelBuffer
EmptyChannelBuffer
LittleEndianHeapChannelBuffer
ReadOnlyChannelBuffer
SlicedChannelBuffer
TruncatedChannelBuffer
ReplayingDecoderBuffer
WrappedChannelBuffer
Netty
ChannelHandler
Netty
ChannelPipelineFactory
Netty
ChannelPipeline
DefaultChannelPipeline
统一通信API
通信协议
IO
统一通信API
Netty提供了统一的通信API,使得Netty能够支持丰富的通信协议,如TCP、UDP、HTTP、进程间通信等。
通信协议
通信协议支持
TCP(socket)
UDP(datagram)
HTTP隧道
Pipe(In-VM, JVM进程内通信)
Websocket
HTTP
https(SSL, StartTLS, StartTLS区别于TLS)
RPC
通信协议支持
Netty在通信传输上提供了丰富的协议支持,如传输协议TCP、UDP、HTTP、HTTP隧道
、Pipe(In-VM, JVM进程内通信)。同时在这些传输协议上支持Websocket、HTTP、https(SSL, StartTLS, StartTLS区别于TLS)、Google ProtoBuf、压缩、大文件传输、RTSP以及传统的文件及二进制协议。
IO
Netty通过Channel(org.jboss.netty.channel.Channel)来提供统一的异步IO接口,它提供了点对点通信所需的所有操作的抽象。Netty通过一个通用的API提供了一系列必要的通信传输机制:
基于NIO的TCP/IP传输
基于OIO的TCP/IP传输
基于OIO的UDP/IP传输
本地传输
IO
IO
|
|
说明
|
AIO
|
|
异步
IO
|
BIO
|
|
阻塞式
IO(blocking I/O)
|
NIO
|
|
New I/O
非阻塞
式
IO(non-
blocking I/O)
|
OIO
|
|
old blocking I/O
|
Netty
Channel
SocketChannel
NioSocketChannel
NioAcceptedSocketChannel
NioClientSocketChannel
OioSocketChannel
HttpTunnelingClientSocketChannel
ServerChannel
LocalChannel
DatagramChannel
Netty
ChannelFactory
ClientSocketChannelFactory
HttpTunnelingClientSocketChannelFactory
NioClientSocketChannelFactory
OioClientSocketChannelFactory
LocalClientChannelFactory
DefaultLocalClientChannelFactory
ServerChannelFactory
LocalServerChannelFactory
DefaultLocalServerChannelFactory
ServerSocketChannelFactory
NioServerSocketChannelFactory
OioServerSocketChannelFactory
DatagramChannelFactory
NioDatagramChannelFactory
OioDatagramChannelFactory
EmbeddedChannelFactory
http://netty.io/3.8/guide