Netty良好设计,使用得在实现NIO、OIO的Socket通道中只需要通道切换配置组件完成,而无需为NIO或OIO各自使用自身原始API进行再编写。
例如:
ServerBootstrap bootstrap = new ServerBootstrap();
bootstrap.group( group )//
.channel( NioServerSocketChannel.class )//
绑定了NIO的数据传输通道。
ServerBootstrap bootstrap = new ServerBootstrap();
bootstrap.group( group )//
.channel( OioServerSocketChannel.class )//
则绑定了OIO的数据传输通道。
基于NIO的处理逻辑:
基于OIO的处理逻辑:
Netty的数据数据传输实现API来自己到Channel接口。
Channel 聚合了 ChannelPipeline 跟 ChannelConfig。
Channel 提供了 :
pipeline() 获取ChannelPipeline 实例
write() 往通道客户端写数据。 此方法线程安全,在多线程环境中使用无须同步。
Netty有四种数据传输方式:
NIO : 使用Java.nio 实现。
OIO : 使用java.net 的API实现。
Local : 用于在不同虚拟机通信(进程间通信)的管道进行通信实现,并且使用nio的实现
Embedded : 内嵌式的管道实现,很适合用于做单元测试。
在不同场景下使用策略
OIO : 低并发场景(例如1000以下并发), 低延迟场景, 基于阻塞IO的实现。
NIO : 高并发场景
Local : 同一虚拟机,不同进程间通信。
Embedded : 进行测试环境。