nginx的事件驱动模型

2024-08-24 16:18
文章标签 模型 nginx 事件驱动

本文主要是介绍nginx的事件驱动模型,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


nginx的事件驱动机制:
    事件发生源产生事件->事件收集器来收集分发事件(选择自己感兴趣的)->消费事件.

传统web服务器(例如apache)的事件驱动机制:
    当一个连接到来时候,事件驱动,建立连接.当连接建立以后直到关闭之前进程将退化成按顺序执行每个操作的批处理模式.每个请求的始终占据资源,无论是否进行数据传输.尤其是中途的阻塞,会造成资源的极大浪费.这种传统的web服务器常常把一个线程或者进程作为一个事件的消费者,在进程阻塞的时候会休眠,而休眠占用的资源第不到有效的利用,并且当有上百万连接时候,进程(线程)间频繁的切换将成为服务器的瓶颈.

传统web服务器的瓶颈原因:进程切换占用过多资源+进程睡眠浪费资源
nginx解决之道:单个进程+多阶段异步处理
    nginx采用单个或者几个进程(一般是cpu的数目)来处理事件,这样就不会由于进程间的频繁切换而造成服务器的瓶颈,
    nginx采用多阶段异步处理,这样就不会造成进程睡眠而产生的资源浪费.

nginx的事件驱动+多阶段异步处理机制:
    nginx完全采用事件驱动架构来处理业务,他不同于传统的事件驱动模型.他不会为单个消费事件去创建一个线程或进程,他只是把消费事件当作一个模块,只有收集分发器才会占用资源,他们会分发某个事件时候调用消费模块使用当前占用的进程资源.
nginx多阶段的划分方法:
  1.将阻塞方法根据触发事件划分成多个阶段
    第一阶段:将阻塞方法转换成非阻塞方法,第二阶段将处理返回结果.
  2.将阻塞方法根据时间划分成多个阶段
    如果阻塞方法没有对应的非阻塞方法,并且阻塞方法消耗的时间是可测并且可划分的,那么->第一阶段分解阻塞方法划分成多个极短时间的阻塞方法,第二个阶段处理结果,并在一定情况下再次调用第一步.
  3.对于空转的情况,使用定时器解决.
  4.对于无法将阻塞方法划分的情况,只能将阻塞调用放在一个独立的进程,等到阻塞方法调用完成后在通知原进程.(慎用,这条违反了nginx的设计规则)

多阶段请求异步连接提高了网络性能,降低了请求延时.
(web影响并发的因素:睡眠+线程(进程)切换)
传统web与nginx的比较:
    传统web服务器的每个事件消费者独占一个进程(线程)资源,这种情况对于用户规模较小的情况来说,用户响应速度快,但是当并发规模达到数十万上百万的时候,由于线程(进程)数目过多,会频繁的切换,而且当线程阻塞的时候会进行睡眠,也会造成资源的浪费,这样服务器就会产生瓶颈.
    nginx服务器采用的事件驱动机制不同,他不会为每个消费事件创建一个进程或线程,这样就不会产生由于进程间频繁切换占用cpu而产生的瓶颈,而且nginx不会让事件阻塞,即采用无阻塞事件驱动模型,这样就不会因为事件阻塞使进程睡眠而造成的资源浪费.
nginx将一个请求划分成多个阶段异步处理,每个阶段仅仅完成一个请求中的一部分,当本阶段任务完成后进入下一阶段.等待事件发生不是阻塞的等待,等待事件发生时候内核通知,在等待阶段继续处理其他任务.


nginx优点:
  对阶段异步处理+事件驱动机制可以是并发达到百万以上,极大的提高服务器的响应速度,增加了用户体验.

这篇关于nginx的事件驱动模型的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1102979

相关文章

centos7基于keepalived+nginx部署k8s1.26.0高可用集群

《centos7基于keepalived+nginx部署k8s1.26.0高可用集群》Kubernetes是一个开源的容器编排平台,用于自动化地部署、扩展和管理容器化应用程序,在生产环境中,为了确保集... 目录一、初始化(所有节点都执行)二、安装containerd(所有节点都执行)三、安装docker-

使用Nginx来共享文件的详细教程

《使用Nginx来共享文件的详细教程》有时我们想共享电脑上的某些文件,一个比较方便的做法是,开一个HTTP服务,指向文件所在的目录,这次我们用nginx来实现这个需求,本文将通过代码示例一步步教你使用... 在本教程中,我们将向您展示如何使用开源 Web 服务器 Nginx 设置文件共享服务器步骤 0 —

Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)

《Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)》:本文主要介绍Python基于火山引擎豆包大模型搭建QQ机器人详细的相关资料,包括开通模型、配置APIKEY鉴权和SD... 目录豆包大模型概述开通模型付费安装 SDK 环境配置 API KEY 鉴权Ark 模型接口Prompt

一文带你搞懂Nginx中的配置文件

《一文带你搞懂Nginx中的配置文件》Nginx(发音为“engine-x”)是一款高性能的Web服务器、反向代理服务器和负载均衡器,广泛应用于全球各类网站和应用中,下面就跟随小编一起来了解下如何... 目录摘要一、Nginx 配置文件结构概述二、全局配置(Global Configuration)1. w

若依部署Nginx和Tomcat全过程

《若依部署Nginx和Tomcat全过程》文章总结了两种部署方法:Nginx部署和Tomcat部署,Nginx部署包括打包、将dist文件拉到指定目录、配置nginx.conf等步骤,Tomcat部署... 目录Nginx部署后端部署Tomcat部署出现问题:点击刷新404总结Nginx部署第一步:打包

Nginx、Tomcat等项目部署问题以及解决流程

《Nginx、Tomcat等项目部署问题以及解决流程》本文总结了项目部署中常见的four类问题及其解决方法:Nginx未按预期显示结果、端口未开启、日志分析的重要性以及开发环境与生产环境运行结果不一致... 目录前言1. Nginx部署后未按预期显示结果1.1 查看Nginx的启动情况1.2 解决启动失败的

tomcat在nginx中的配置方式

《tomcat在nginx中的配置方式》文章介绍了如何在Linux系统上安装和配置Tomcat,并通过Nginx进行代理,首先,下载并解压Tomcat压缩包,然后启动Tomcat并查看日志,接着,配置... 目录一、下载安装tomcat二、启动tomcat三、配置nginx总结提示:文章写完后,目录可以自动

大模型研发全揭秘:客服工单数据标注的完整攻略

在人工智能(AI)领域,数据标注是模型训练过程中至关重要的一步。无论你是新手还是有经验的从业者,掌握数据标注的技术细节和常见问题的解决方案都能为你的AI项目增添不少价值。在电信运营商的客服系统中,工单数据是客户问题和解决方案的重要记录。通过对这些工单数据进行有效标注,不仅能够帮助提升客服自动化系统的智能化水平,还能优化客户服务流程,提高客户满意度。本文将详细介绍如何在电信运营商客服工单的背景下进行

Andrej Karpathy最新采访:认知核心模型10亿参数就够了,AI会打破教育不公的僵局

夕小瑶科技说 原创  作者 | 海野 AI圈子的红人,AI大神Andrej Karpathy,曾是OpenAI联合创始人之一,特斯拉AI总监。上一次的动态是官宣创办一家名为 Eureka Labs 的人工智能+教育公司 ,宣布将长期致力于AI原生教育。 近日,Andrej Karpathy接受了No Priors(投资博客)的采访,与硅谷知名投资人 Sara Guo 和 Elad G

Retrieval-based-Voice-Conversion-WebUI模型构建指南

一、模型介绍 Retrieval-based-Voice-Conversion-WebUI(简称 RVC)模型是一个基于 VITS(Variational Inference with adversarial learning for end-to-end Text-to-Speech)的简单易用的语音转换框架。 具有以下特点 简单易用:RVC 模型通过简单易用的网页界面,使得用户无需深入了