Java的5种IO模型和5种通信模式

编程语言 12/25 阅读 722 views次 人气 0
摘要:

操作系统的五种通信模型

--------------------------------------------------------------------------------------------------------------------------------------

1、阻塞I/O

就是我们常见的socket,监听端口收到消息进行处理,并把结果返回给客户端

执行I/O操作完成前会一直进行等待,不会将控制权交给程序。套接字默认为阻塞模式

应用程序调用一个IO函数,导致应用程序阻塞,等待数据准备好。 如果数据没有准备好,一直等待….数据准备好了,从内核拷贝到用户空间,IO函数返回成功指示,程序继续执行

2、非阻塞I/O

非阻塞IO通过进程反复调用IO函数,与阻塞不同的是,调用IO函数后,内核会立刻返回一个错误的接口,该进程会不断去调用查询结果的函数recv(),直到收到正确的结果,在这个过程中进程是阻塞的

非阻塞模式套接字与阻塞模式套接字相比,不容易使用。使用非阻塞模式套接字,需要编写更多的代码,但是,非阻塞套接字在控制建立的多个连接,在数据的收发量不均,时间不定时,明显具有优势

--------------------------------------------------------------------------------------------------------------------------------------

--------------------------------------------------------------------------------------------------------------------------------------

3、I/O复用模型

主要是select和epoll;对一个IO端口,两次调用,两次返回,比阻塞IO并没有什么优越性;关键是能实现同时对多个IO端口进行监听;
I/O复用模型会用到select、poll、epoll函数,这几个函数也会使进程阻塞,但是和阻塞I/O所不同的的,这两个函数可以同时阻塞多个I/O操作。而且可以同时对多个读操作,多个写操作的I/O函数进行检测,直到有数据可读或可写时,才真正调用I/O操作函数

--------------------------------------------------------------------------------------------------------------------------------------

有兴趣的可以去看看NIO


--------------------------------------------------------------------------------------------------------------------------------------

4、信号驱动I/O

--------------------------------------------------------------------------------------------------------------------------------------

首先我们允许套接口进行信号驱动I/O,并安装一个信号处理函数,进程继续运行并不阻塞。当数据准备好时,进程会收到一个SIGIO信号,可以在信号处理函数中调用I/O操作函数处理数据


5、异步I/O模型

--------------------------------------------------------------------------------------------------------------------------------------

当一个异步过程调用发出后,调用者不能立刻得到结果。实际处理这个调用的部件在完成后,通过状态、通知和回调来通知调用者的输入输出操作


接口调用的五种通信模式


1、同步点对点服务模式


就是我们常见的发出http请求,等待服务端返回接口,在这个过程中请求发出后一直在等待着结果,所以说是同步


2、异步点对点消息模式1

客户端发出请求后,程序继续执行,当服务器处理完成时,通过回调函数通知程序

3、异步点对点消息模式2

增加了中间代理,如cdn、nginx等,加快服务器的应答

4、异步广播消息模式

基于消息订阅分发,将不同消息分给不同的服务器执行,也是一种分布式集群处理的一种思想,zookeeper就是这种方式

5、去中心化分布式式

去掉ESB总线的控制,从而去掉系统中枢单点性能的瓶颈,而且后方单点服务器形成一个新活力的网络,形成一个无状态的系统

啦啦啦。。。。。。。

评论

该文章不支持评论!

分享到: