nginx学习一 --基础知识

一、什么是中间件:

在我们的网站后台,往往存在着很多的应用服务,对应的是我们的操作系统来驱动我们的硬件为我们提供对应的服务,应用与应用服务之间的直接调用或者应用与操作系统之间的交互,这样会导致我们在有很多应用的情况下,层次化的应用不够隔离,代码耦合程度高,我们需要有一个东西来代理来处理对应的一些请求,让应用只负责业务的逻辑。中间件可以起到与操作系统间的直接调用,也可以调用应用分发给对应的应用去进行相应的逻辑请求,这样整个网站承上启下层次性的作用就会越发的好,中间件可以直接对应与接收web请求,并把请求直接给操作系统,对于有逻辑请求的,可以分发给对应的应用,起到代理与分发的作用,现实环境下,应用通常不只有一个,这种情况下应用同样可以把请求先给到中间件,再有中间件分发给对应的应用。中间件可以用作web的负载均衡,对于http请求的缓存服务,安全应用防护等等功能。

 

二、什么是nginx

Nginx是一个开源且高性能、可靠的HTTP中间件、代理服务。

常见的HTTP服务:

HTTPD----Apache基金会

IIS----微软

GWS----Googel

Nginx特性:

1、IO多路复用epoll

IO复用解决的是一个并发性的问题,处理多个并发的请求,对于中间件就要产生多个IO流对系统的读写,对于IO流请求操作系统内核有并行处理和串行处理的概念,IO复用技术就是一个Socket作为复用来完成整个IO流的请求(如下所示为其中一种)

 

IO多路复用epoll:多个描述符的I/O操作都能在一个线程内并发交替的顺序完成,这就叫IO多路复用,这里的复用指的是一个线程。

IO多路复用的实现方式:selectpollepoll

 

IO多路复用就是内核态对于IO请求的时候主动会发送所需要处理的文件对象就绪时会发送对应的文件可用信息给应用端,应用端在整个FD没有就续前处于block状态即阻塞住对应的socket请求,它也还会维护整个FD的列表,当内核态发送可用的FD就绪以后,整个应用端采用select这个模式会一直在不断地遍历所维护的FB列表,以等到唤醒对应的进程去完成数据的拷贝,在这个模型中采用的线性遍历的方式。

Select缺点:能够监视文件描述符的数量存在最大限制(1024)。线性扫描效率低下。

epoll模型:每当FD就绪,采用系统的回调函数之间将FD放入,效率更高。且最大连接无限制。

2、轻量级(功能模块少,代码模块化)。

3、CPU亲和性。Nginx利用cpu的亲和性来提升它的处理并发能力和CPU的处理能力及其效率,减少不必要的性能损耗

 

Nginx是有多个不同work的进程进行处理,将不同work绑定到不同的cpu核心上,减少cpu切换带来的性能损失。

CPU亲和性:是一种把CPU核心和nginx工作进程绑定方式,把每个work进程固定在一个cpu核心上处理,减少cpucache miss,获得更好的性能。

4、nginxsendfile

由于nginx采用sendfile这种工作机制,nginx在处理静态文件的效率方面是非常有优势的。对比原先http server的服务,当我们去请求一个文件的时候,它要经过操作系统的内核空间和用户空间,最终到达socket传递给用户,对于一台服务的操作系统而言,它要经过内核空间跟用户空间,也就会发生多次的切换,然而静态文件其实不需要过多的用户空间的逻辑性的处理,直接就可以通过内核空间传输,所以sendfile真是利用到了这种模式,也就是linux2.2以后出来的零拷贝这种传输模式,文件的传输只通过内核空间传递给socket,响应给用户。Nginx在很多cdn的服务里或者在处理做动静分离时静态文件的处理时,nginx服务会比其他的服务的性能会高很多。

传统的http server处理静态文件:

 

Nginx处理文件:

 

猜你喜欢

转载自blog.csdn.net/qq_34871626/article/details/80657858