Nginx
web服务器:http协议
http协议:html,MIME(多用途互联网邮件拓展)
major/minor
text/html,text/plain,image/jpeg
web资源:URL(scheme://server:port/path/to/source)
方法:GET,HEAD(相应首部)读取资源
POST提交表单
PUT上传数据
DELETE删除数据
WEBDAV: 开发处理数据传输
http事务:request<—>responce
request:<method><URL><version>
<HEADERS>
…
<body>
responce:<version><status><reason phrase>
<HEADERS>
…
<body>
status:
1xx:信息类
2xx:成功类
3xx:重定向(301,302)
4xx:错误类(客户端错误)
5xx:错误类(服务器端错误)
认证:basic:明文认证
digest:表单认证,密文
httpd:MPM(用来定义并发响应模型)
prefok(select模式只支持1014路的并发):进程按照自己的状态创建子进程,子进程响应用户请求
worker:cow(写时复制模型),线程响应请求,模拟一个线程响应多个请求(进程创建的线程数是有限的,性能够比较差)
event:真正意义上的事件驱动,实现一个进程响应多个请求
I/O模型:
进程间通信:关注的是消息通知的机制
同步:synchronous 一个任务的完成需要依赖的话要保证依赖的完成才能执行被依赖的任务。两个任务的状态保持一致
异步:asynchronous不需要等待被依赖的任务完成,只是通知被依赖的任务完成了什么工作即可。依赖于回调函数等,
消息通知:
同步:等待对方返回消息
异步:被调用者不能立即返回消息给调用者,通过消息(状态),通知,回调通知调用者
状态:调用者每隔一段时间就要检查一次;轮询,效率很低
通知:效率较高;
回调:和通知方式类似
阻塞/非阻塞:在同步过程中,关注调用者等待调用结果返回之前所处的状态
阻塞(block):调用结果返回之前,调用者会被挂起(和同步是有区别的)
非阻塞(nonblock):和阻塞相反,调用结果返回之前,调用者不会被挂起,明显提高CPU利用率,不理之处在于导致cpu上下文切换之间的负载
常用的io模型:
同步阻塞:同步模型的调用者在被调用者访问之前是被挂起的,效率最低
同步非阻塞:同步模型的调用者在等待被调用者的过程中还能执行其他,性能同样比较低,第一阶段盲等,第二阶段仍然是挂起
io multipexing:io复用,同步阻塞的另外一种方式,select,poll。不是内核级别的调用了
signal driven io:信号量驱动io也可以叫做异步阻塞IO;event;一个进程响应多个请求(第一阶段不会被阻塞)
asynchronous io:异步非阻塞io;第一阶段和第二阶段都不会被阻塞
异步阻塞:等待消息通知时被阻塞,
常见的io方式:网络io:本质是socket文件的读取
磁盘io:数据流的读取
每次io都会经由两个阶段:
本地读取为例:(1)数据加载到内核的内存中(内核缓冲区)
(2)从内核内存空间复制到用户空间的进程内存空间中
总结:等待数据准备完成也就是上述(1)
数据从内核复制到进程的阶段就是上述(2)
同步阻塞 同步非阻塞 io复用 信号驱动机制 异步io
原创文章,作者:wanghui,如若转载,请注明出处:http://www.178linux.com/53983
评论列表(1条)
概念性的知识可以总结在详细一些,加油!