Nginx 简述

喜你入骨 提交于 2020-02-08 17:05:43

I/O 模型
同步/异步:关注的是消息通信机制
同步:synchronous 调用者等待被调用者返回信息,再继续执行后续操作
异步:asynchronous 被调用者通过状态、通知或回调机制主动通知调用者被调用者的状态

阻塞/非阻塞模型
阻塞:blocking  IO操作需要彻底完成后才回到用户空间,调用结果返回前,调用者被挂起
非阻塞:noblocking  IO操作被调用后立即给用户返回一个状态值,无需等待IO彻底完成,最终的调用结果返回前,调用者不挂起
(非阻塞型并不直接使用,程序虽然没有挂起,但是会不断发起IO请求等待答复,消耗大量CPU资源。一般在其他模型中使用)

IO多路复用型
有等待机制作(select)为中间调和,负责接收请求,并不直接请求内核。本质上也是阻塞特征,阻塞点在等待机制select
使用场景:
客户端处理多个描述符是(一般为交互输入和网络套接口)
一个TCP服务器既要已连接套接字又要监听套接字
一个服务器要处理TCP、UDP
一个服务器要处理多个服务或协议

具体实现:
select:linux实现,对应IO复用模型
poll:linux实现,对应IO复用模型
epoll:linux实现,对应IO复用模型,具有信号驱动IO某些特征
kqueue: FreeBSD实现,IO复用,有信号驱动IO特性
/dev/poll: SUN的Solaris实现
Iocp:Windows实现,对应异步模型

中间等待机制   select   poll    epoll的异同
                                 poll                             epoll                                         select
操作方式        遍历(逐一查寻)                 回调                                          遍历
底层实现                 链表                            哈希表                                        数组
IO效率           调用使用先性遍历         事件通知,fd就绪时,系统注册       同poll
                      时间复杂度O(n)             回调函数,被调用将fd放入rdllist
最大连接数             无上限                          无上限                              1024(x86),2048(x64)
fd拷贝            用户态拷贝到内核态      调用epoll_ctl时拷贝,之后                同poll
                                                             每次epoll_wait不拷贝

select:可跨越平台,通过设置或检查存放fd标志位的数据结构进行下一步的处理
缺点:单个进程可监视的fd数量被限制        cat   /proc/sys/fs/file-max
对socket线性扫描即轮询方法,效率低
fd拷贝凡是会使用用户空间和内核空间,传递fd结构时复制开销大

poll:与select无特别差异,水平触发(LT,报告fd后,没有处理,下次poll会再次报告,select相同)

epoll:边缘触发(ET,通知一次)和LT

nginx的特性
模块化、高可靠性、支持热部署(不停机升级版本)、第内存消耗

基本功能
静态资源的web服务器
http反向代理服务器
pop3/imap4 反向代理服务器
FastCGI(LNMP)、uWSGI、python等协议客户端

程序架构
master/worker
一个master进程:负责加载和分析配置文件,管理worker进程,平滑升级
一个或多个worker进程:处理并响应用户请求
缓存相关的进程
cache  loader  载入缓存对象
cache  manager  管理缓存对象

模块分类
核心模块:core  module
标准模块:HTTP模块  ngx_http_* 、HTTP  Core   modules   默认功能、HTTP  Optional  modules  编译指定
Mail  模块   ngx_mail_*
Stream 模块  ngx_stream_*  (TCP代理) 
第三方模块









































易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!