Nginx
IO事件模型
阻塞型、非阻塞型、复用型、信号驱动型、异步
同步:阻塞型、非阻塞型、复用型 异步:信号驱动型、异步
同步/异步
关注消息的通知机制
消息通知
同步:等待对方返回消息
异步:被调用者通过状态,通知或回调机制通知调用者被调用者的运行状态
阻塞/非阻塞
关注调用者在等待结果返回之前所处的状态
阻塞:blocking 等待对方返回消息 睡眠,挂起,不可中断, 直到被调用方执行完成通知
非阻塞:noblocking 调用者返回结果之前,调用者不会挂起。忙等,不睡眠,不阻塞,要不停的询问执行结果
一次文件的IO请求,都会有两阶段组成: 1. 等待数据,即数据从磁盘到内核内存 2. 复制数据,即数据内核内存到进程内存
信号驱动型:阻塞在第二步
复用型IO调用 select() 最大1024 poll()
event-driven:
epoll(linux): libevent
kqueue(BSD)
/dev/poll (Solaris)
用途
http server
reverse proxy 7层
map/pop3
Last updated
Was this helpful?