Nginx基础篇(理念)

Nginx基础篇(理念)

什么是中间件

在这里插入图片描述
Nginx是一个开源且高性能,可靠的HTTP中间件和代理服务,
能使得我们的程序层次性更高,对于有逻辑的请求,中间件也可以起到代理和分发的作用
更多的场景是我们的应用一般需要依赖别的应用进行处理,这个时候就可以先使用应用A请求对应的中间件再由中间件分发给对应的应用C,在大型的网站之中,有了一个一个的中间件的串联,使得我们的网站层次性更高,维护起来也更简单

常见的HTTP中间件服务

HTTPD Apache基金会
IIS - 微软
GWS - Google (google web server) 不对外开放

Nginx特性实现优点

优点一: IO多路复用epoll

串行
  • 一个一个的进行处理,前一个如果发生阻塞,后边的就无法完成请求,一直处于等待状态.
IO复用
  • 这个时候就需要考虑并行的方式来完成整个IO流的请求,以实现最大的并发和吞吐,使用一个Socket来作为复用整个IO流的请求
  • 下图,是IO复用的一种方式-多线程
    在这里插入图片描述
多路复用
  • 多线程的IO流处理,会产生一定的消耗,这个时候,就演进出了IO多路复用,
  • 当一个IO流要进行文件处理的时候,要获取一组文件的描述符,当文件的描述符还没有就绪时,那么它就在等待,直到描述符准备就绪,马上上报系统通知的一个机制,告诉应用程序,我已经准备好了,你可以进行操作了,这种方式,就是IO多路复用的方式,
  • 定义:多个描述符的I/O操作都能在一个线程并发交替地顺序完成,这就叫I/O多路复用,这里的"复用"指的是复用同一个线程
什么是eopll?
  • 常见内核多路复用的模型
  • IO多路复用的实现方式select poll epoll
在linux下最早出现的是 select

在这里插入图片描述
IO多路复用就是内核态对于IO请求的时候,主动会发送所需要处理的文件对象,文件对象就绪时,会发送对应的文件可用信息给应用,应用在fd没有就绪之前是Block的,当内核态发送可用的fd就绪以后,用户端采用select模式,会一直遍历所维护的fd文件描述符的列表,以等到唤醒对应的进程,去完成对应的数据拷贝,所以在这个过程,select模型采用的是线性遍历方式,这种方式存在一个问题,他会不断地去遍历这里面的内容,从而效率低下

  • select的缺点
  • 能够监视文件描述符的数量的最大限制(1024)
  • 线性扫描效率低下
epoll模型
  • 1)每当FD就绪,采用系统的回调函数将FD放入到对应的就绪列表,效率更高.
  • 2)没有最大连接数的一个限制.
    科普知识:
    内核(kernel)利用文件描述符(file descriptor)来访问文件。文件描述符是非负整数。打开现存文件或新建文件时,内核会返回一个文件描述符。读写文件也需要使用文件描述符来指定待读写的文件。

优点二 轻量级

  • 功能模块少 源代码只保留了跟http以及相关核心功能的代码
  • 代码模块化 益读

优点三 CPU亲和(affinity)

为什么需要CPU亲和

  • 是一种把CPU核心与Nginx工作进程绑定方式,把每个worker进程固定在一个CPU上执行,减少切换CPU的chache miss(缓存泄漏),获得更好的性能

优点四 sendfile

原来 http server服务 要经过内核空间和用户空间 最终到达Socket 通过Socket在传递给Response给客户
在这里插入图片描述
静态文件其实是不需要经过用户空间逻辑性的处理 直接就可以通过内核空间进行传输, sendfile正式用了这种方式
在这里插入图片描述

待完善…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值