0%

netty简介

netty简介

netty是一个异步的、基于事件驱动的网络应用框架,用来快速开发高性能、高可靠的网络IO程序,主要针对在TCP协议下,面向客户端的高并发应用,本质是一个NIO框架

三种I/O模型

目前java支持三种I/O模型,BIO、NIO、AIO

BIO

同步阻塞IO,一个连接请求对应一个线程,如果该连接没有做任何事情会造成不必要的开销

NIO

同步非阻塞,一个线程处理多个连接请求,客户端发送的连接请求会注册到多路复用器上,多路复用器轮询到连接有I/O请求进行处理

AIO

异步非阻塞,引入了异步通道的概念,采用Proactor模式,有效地请求才会启动线程,特点是先由操作系统完成后才通知服务端程序启动线程去处理,适用于连接数较多且连接时间较长的应用

为什么需要Netty

既然已经有了NIO,为什么还需要Netty对其进行再次封装呢?

  • NIO的类库和API过于繁琐
  • 开发工作量和难度太大,如客户端面临断连重连、网络闪断、半包读写、失败缓存、网络拥塞、异常流处理等情况
  • 在JDK7中存在Epoll bug,会导致Selector空轮询,最终导致CPU 100%

注意:Netty5.x已经不在维护了,需要使用Netty4.x

netty构成

构成