Netty与IO模型简介
1、Netty 是由 JBOSS 提供的一个 Java 开源框架,现为 Github 上的独立项目。
2、Netty 是一个异步的、基于事件驱动的网络应用框架,用以快速开发高性能、高可靠性的网络 IO 程序。
3、Netty 主要针对在 TCP 协议下,面向 Client 端的高并发应用,或者 Peer-to-Peer 场景下的大量数据持续传输的应用。
4、Netty 本质是一个 NIO 框架,适用于服务器通讯相关的多种应用场景。
Neety常用于各种框架的底层通讯,比如常见的RPC框架Dubbo
Netty
作为高性能的基础通信组件,提供了TCP/UDP
和HTTP
协议栈,方便定制和开发私有协议栈,账号登录服务器。建议书籍:https://waylau.com/essential-netty-in-action/index.html
I/O 模型
-
I/O
模型简单的理解:就是用什么样的通道进行数据的发送和接收 -
Java
共支持3
种网络编程模型I/O
模式:BIO
、NIO
、AIO
。 -
Java BIO
:同步并阻塞(传统阻塞型),服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销。【简单示意图】
-
Java NIO
:同步非阻塞,服务器实现模式为一个线程处理多个请求(连接),即客户端发送的连接请求都会注册到多路复用器上,多路复用器轮询到连接有I/O
请求就进行处理。【简单示意图】
-
Java AIO(NIO.2)
:异步非阻塞,AIO
引入异步通道的概念,采用了Proactor
模式,简化了程序编写,有效的请求才启动线程,它的特点是先由操作系统完成后才通知服务端程序启动线程去处理,一般适用于连接数较多且连接时间较长的应用。