文章目录
- Netty 的介绍
- 网络模型
- BIO
- NIO
- AIO
- 使用场景
Netty 的介绍
Netty是JBOSS提供的基于java开源的一个异步,基于事件驱动的网络应用框架,以快速开发高性能,高可靠的网络IO程序。
主要针对TCP协议下,面向Client端高并发应用,或者Peer-to-Peer下大了数据持续传输的应用,适用服务器通讯相关多种应用场景
tcp/ip协议 -> 基于jdk的 i网络模型 -> NIO(io,网络) -> NIO
网络模型
java的网络编程模型: BIO.NIO,AIO
BIO
同步并阻塞(传统阻塞型):服务器实现模式为一个连接一个线程,即客户端有连接请求时服务端就需要启动一个线程进行处理,但是如果这个连接不做任何事情,就会造成不必要的线程开销
NIO
同步非阻塞,服务器实现模式为一个线程处理多个请求(连接),即客户端发送的连接请求都会注册到多路复用器上,多路复用器轮询连接有IO请求进行处理
AIO
异步非阻塞,AIO引入异步通道的概念,采用Proactor模式,简化了程序编写,有效的请求才启动线程,特点是先由操作系统完成后才通知服务端程序启动线程去处理,一般适用于连接数较多,连接时间较长的应用
使用场景
BIO 适用连接数目小固定的架构,NIO适用于连接数目多,连接短的架构,比如聊天,弹幕,服务器间通讯,AIO连接长,连接数目多,比如相册服务器,充分调用参与并发操作,编程比较复杂