IO模型
三种模型的区别在于通道的数量(单/多),异步还是同步,阻塞还是非阻塞!:
Java BIO:
同步并阻塞(传统阻塞型),服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销。JDK1.4之前的唯一选择!
Java NIO :
**同步非阻塞**,服务器实现模式为一个线程处理多个请求(连接),即客户端发送的连接请求都会注册到多路复用器上,多路复用器(Selector)轮询到连接有I/O请求就进行处理,如果这个客户端不做任何事情则不会处理,减少线程开销。JDK1.4引入!<br />![](https://cdn.nlark.com/yuque/0/2021/png/21361442/1622775826199-ff05e6be-bf5c-4262-9633-855ebaefac5c.png#align=left&display=inline&height=357&margin=%5Bobject%20Object%5D&originHeight=357&originWidth=789&size=0&status=done&style=none&width=789)
Java AIO(NIO.2) :
**异步非阻塞**,AIO 引入异步通道的概念,采用了 Proactor 模式,简化了程序编写,有效的请求才启动线程,它的特点是先由操作系统完成后才通知服务端程序启动线程去处理,一般适用于连接数较多且连接时间较长的应用。 AIO还没有得到广泛的使用!JDK1.7支持!
RPC协议
远程过程调用
如:两台不同的虚拟机不能使用相互间的类型,这时使用RPC协议就能相互调用。
术语介绍:
Endpoint:
Backend:
通信后台进程服务,终端的后台实现,具体的通信设备或终端,
举例 :CoarseGrainedExecutorBackend。—>executor
DriverEndpoint in CoarseGrainedSchedulerBackend —>Driver