同步、异步、阻塞、非阻塞

同步机制
同步、异步发生在当客户端发起请求后,服务端处理客户端的请求时。

同步机制,是指客户端发送请求后,需要等待服务端(内核)返回信息后,再继续发送下一个请求。

在同步机制中,所有的请求在服务器端得到同步,即发送方和接收方对请求的处理步调是一致的。

异步机制
异步机制,是指客户端发出一个请求后,不等待服务端(内核)返回信息,就继续发送下一个请求。

在异步机制中,所有来自发送方的请求形成一个队列,接收方处理完后再通知发送方。


举例:一家酒店前台,在旺季的高峰时间段会接很多预定酒席的电话。

如果是同步机制情况下,前台每接一个电话后先不挂掉电话,而是去查询有无剩余酒席,查到结果后,告诉客户。
如果是异步机制情况下,前台每接一个预定电话直接回复客户,一会回复,此时前台把查询这件事情交给了另外的同事,该前台挂掉电话后,继续处理其他客户的事情,当另外的同事查询到结果后再通知给前台,前台再通知客户。
阻塞
阻塞与非阻塞发生在IO调度中,比如内核到磁盘IO。

阻塞方式下,进程/线程在获取最终结果之前,被系统挂起了,也就是所谓的阻塞了,在阻塞过程中该进程什么都干不了,

直到最终结果反馈给它时,它才恢复运行状态。

非阻塞
非阻塞方式和阻塞相反,进程/线程在获取最终结果之前,并没有进入被挂起的状态,而是该进程可以继续执行新的任务。

当有最终结果反馈给该进程时,它再把结果交给客户端。


举例:依然是酒店前台接待预定酒席电话的案例。
此时角色不再是前台,而是她的查询有无剩余酒席的同事。

如果是阻塞方式,该同事在查询有无剩余酒席的过程中,需要傻傻地等待酒店管理系统给他返回结果,在此期间不能做其他事情。
如果是非阻塞,该同事在等待酒店管理系统给他返回结果这段时间,可以做其他事情,比如可以通知前台剩余酒席的情况。
Nginx的请求机制
Nginx之所以可以支持高并发,是因为Nginx用的是异步非阻塞的机制,而Nginx是靠事件驱动模型来实现这种机制的。

在Nginx的事件驱动模型下,客户端发起的所有请求在服务端都会被标记为一个事件,Nginx会把这些事件收集到“事件收集器”里,然后再把这些事件交给内核去处理。

转载于:https://my.oschina.net/u/3992081/blog/2988210

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值