1. I/O模型
I/O类型:
同步和异步:synchronous, asyncrhonous
关注的是消息通知机制
同步:调用发出不会立即返回,但一旦返回就可以返回最终结果;
异步:调用发出之后,被调用方立即返回消息,但返回的非最终结果;被调用者通过状态、通知机制来通知调者,或通过回调函数来处理结果;
阻塞和非阻塞:block, nonblock
关注的是调用等等调用结果(消息、返回值)时的状态
阻塞:调用结果返回之前,调用者(调用线程)会被挂起;调用者只有在得到结果之后才会返回;
非阻塞:调用结果返回之前,调用不会阻塞当前线程;
5种I/O模型:
blocking IO
nonblocking IO
IO multiplexing
signal driven IO
asyncrhonous IO
2. Nginx是什么?
基本功能
- 静态资源的web服务器,能缓存打开的文件 描述符
- http, smtp, pop3协议的反向代理服务器,缓存、负载均衡;
- 支持FastCGI (fpm)
- 模块化,非DSO机制,过滤器zip,SSI及图像大小调整;
- 支持SSL
Nginx的特性或者优点
- 模块化设计,较好的扩展性,但是不支持动态装卸载,tengine支持
- 高可靠性,低内存消耗
- 支持热部署,不停机更新配置文件、日志文件、更新服务器程序版本
- 支持Rewrite重写规则,将不同的请求分配到不同的后端服务器群组。
- 内置健康状态检查,可以提前知道后端服务器的状态,实现自动化上线机制。(故意让后端的某一台健康故障,然后更新服务器,然后更改健康状态,完成平滑上线
扩展功能
- 基于名称和IP的虚拟主机;
- 支持keepalive
- 支持平滑升级
- 定制访问日志 ,支持使用日志缓冲区提高日志存储性能
- 支持url rewrite
- 支持路径别名
- 支持基于IP及用户的访问控制
- 支持速率限制,支持并发数限制
3.Nginx的基本架构
- 一个master进程,生成一个或多个worker
- 事件驱动: epoll, kqueue, /dev/poll (event ports)
- 消息通知:select, poll, rt signals
- 支持sendfile, sendfile64
- 支持AIO
支持mmap
Nginx关键字:事件驱动,异步,非阻塞, 一个master生成一个或者多个worker,每个worker响应n个请求