二、Nginx高并发原理

反向代理
不直接处理客户端请求 , 而是转发请求给其他服务器 , 通常和组成反向代理
负载均衡
通常跟反向代理相结合 , 负责将客户端的请求转交给其他压力比较小的服务器 , 会有两台以上的服务器
资源缓存
对客户端经常访问的数据进行缓存 , 加快客户端访问的速度
安全防护
nginx本身对自己就有一定的防护措施
访问限制
类似于的order deny 和allow 即拒绝和允许
访问认证
对网站添加指定的用户名和密码
(4)I/O模型
单理想并发:2W
单nginx理想并发:5W
I/O即input和(上传和下载) , 不管是网络数据还是磁盘数据都需要进行I/O
而每次I/O都需要进行两个阶段:
第一步:将数据从磁盘文件先加载至内核空间(缓冲区) , 等待数据准备完成 , 时间较长
第二步:将数据从内核缓冲区复制到用户空间进程的内存中 , 时间较短
Nginx工作流程:
首先客户端想要访问Nginx服务器的index.html页面Nginx收到请求后 , Nginx进程发送请求给内核去处理内核收到请求后去磁盘获取index.html获取index , html后发送给内核中的缓冲区开始准备数据数据准备好之后再发送给Nginx进程中的缓冲区(内存)最后返回客户端Nginx服务器的index.html页面
-同步异步、阻塞和非阻塞
【二、Nginx高并发原理】调用者就是Nginx进程(用户进程) , 被调用者就是内核 , 用户进程调用内核拿取数据
1、同步和异步是在用户空间内的操作 , 关注被调用者消息的通信机制
例如: 老板给员工小王布置一个任务 , 老板在小王完成这个任务之前 , 会一直等待小王 , 在这个过程中老板不会去做其他事情
例如: 老板分配给员工小王一个任务 , 小王在做完这个任务后会向老板汇报 , 这个过程中老板不会进行等待 , 而是去做其他事情
同步:被调用者不会主动向调用者返回任务的状态 , 在返回状态之前 , 调用者需要一直等待被调用者完成任务
异步:被调用者会主动向调用者返回任务的状态 , 在返回状态之前 , 调用者可以执行下一个请求
2、阻塞和非阻塞是在内核空间内的操作 , 关注调用者在等待结果返回之前的状态
例如: 手洗衣服 , 没洗完之前手是干不了其他事情的
例如: 使用全自动洗衣机 , 不需要占用使用者的时间 , 洗完之后去拿就行 , 在这个期间使用者可以去干其他的事情
-模型介绍 同步阻塞型慢
同步非阻塞型
最慢
IO多路复用 , 异步阻塞
较慢
信号驱动型 , 异步半阻塞
较快
异步IO模型 , 异步非阻塞
最快
二、Nginx高并发原理 (1)Nginx高并发使用的方式
Nginx高并发使用的是epoll的方式 , 提供给用户访问 , 复制数据的一些操作让内核完成 , 而Nginx进程做的事情少了自然可以接受的请求数量就多了 , 使用的是的方式
1、能够监视文件描述符的数量存在最大限制
2、线性遍历扫描所有数据 , 效率低下
1、epoll在.6中增加了内存拷贝mmap机制 , 加速与内核空间的消息传递 , 即内存映射
2、每当FD就绪 , 采用系统的回调函数之间将fd放入 , 效率更高