5种IO模型和5种通讯模式

操做系统的五种通讯模型nginx

一、阻塞I/O服务器

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

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

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

二、非阻塞I/O
分布式

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

非阻塞模式套接字与阻塞模式套接字相比,不容易使用。使用非阻塞模式套接字,须要编写更多的代码,可是,非阻塞套接字在控制创建的多个链接,在数据的收发量不均,时间不定时,明显具备优点
性能


三、I/O复用模型

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

有兴趣的能够去看看NIO


四、信号驱动I/O

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


五、异步I/O模型

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


接口调用的五种通讯模式

一、同步点对点服务模式

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

    

二、异步点对点消息模式1spa

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


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

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



四、异步广播消息模式

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


五、去中心化分布式式

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



啦啦啦。。。。。。。