将Nginx 核心知识点扒了个底朝天(二)

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

Nginx 是如何实现高并发的

如果一个 server 采用一个进程(或者线程)负责一个request的方式那么进程数就是并发数。那么显而易见的就是会有很多进程在等待中。等什么最多的应该是等待网络传输。

而 Nginx 的异步非阻塞工作方式正是利用了这点等待的时间。在需要等待的时候这些进程就空闲出来待命了。因此表现为少数几个进程就解决了大量的并发问题。

Nginx是如何利用的呢简单来说同样的 4 个进程如果采用一个进程负责一个 request 的方式那么同时进来 4 个 request 之后每个进程就负责其中一个直至会话关闭。期间如果有第 5 个request进来了。就无法及时反应了因为 4 个进程都没干完活呢因此一般有个调度进程每当新进来了一个 request 就新开个进程来处理。

回想下BIO 是不是存在酱紫的问题

Nginx 不这样每进来一个 request 会有一个 worker 进程去处理。但不是全程的处理处理到什么程度呢处理到可能发生阻塞的地方比如向上游后端服务器转发 request 并等待请求返回。那么这个处理的 worker 不会这么傻等着他会在发送完请求后注册一个事件“如果 upstream 返回了告诉我一声我再接着干”。于是他就休息去了。此时如果再有 request 进来他就可以很快再按这种方式处理。而一旦上游服务器返回了就会触发这个事件worker 才会来接手这个 request 才会接着往下走。

这就是为什么说Nginx 基于事件模型。

由于 web server 的工作性质决定了每个 request 的大部份生命都是在网络传输中实际上花费在 server 机器上的时间片不多。这是几个进程就解决高并发的秘密所在。即

webserver 刚好属于网络 IO 密集型应用不算是计算密集型。

异步非阻塞使用 epoll 和大量细节处的优化。也正是 Nginx 之所以然的技术基石。

什么是正向代理

一个位于客户端和原始服务器(origin server)之间的服务器为了从原始服务器取得内容客户端向代理发送一个请求并指定目标(原始服务器)然后代理向原始服务器转交请求并将获得的内容返回给客户端。

客户端才能使用正向代理。正向代理总结就一句话代理端代理的是客户端。例如说我们使用的OpenVPN 等等。

什么是反向代理

反向代理Reverse Proxy方式是指以代理服务器来接受 Internet上的连接请求然后将请求发给内部网络上的服务器并将从服务器上得到的结果返回给 Internet 上请求连接的客户端此时代理服务器对外就表现为一个反向代理服务器。

反向代理总结就一句话代理端代理的是服务端。

 

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: nginx
返回列表

上一篇:01背包问题

下一篇:C++实现链表