服务器-Nginx的事件驱动模型

服务器-Nginx的事件驱动模型

什么是事件驱动模型

事件驱动概念:在持续的事物管理过程中,由当前时间节点上出现的事件引起的调用可用资源执行相关任务,解决问题,防止事物堆积的一种策略。 一般由:事件收集器、事件发送器和事件处理器组成。

事件驱动处理库

又称为多路IO复用方法:主要包括以下几种:

select库

  1. 创建所关注事件的描述符集合,每个描述符,可以关注读事件、写事件以及异常发生事件。
  2. 调用底层的select函数,等待事件发生。
  3. 轮询所有事件描述符集合中的每一个事件描述符,检查是否有相应的事件发生,如果有,就进行处理。poll库 Linux下平台的基本事件驱动模型。基本工作方式与select库相同。 区别在于:select库需要为读事件、写事件和异常事件分别创建一个描述符集合,因此在最后轮询的时候,需要分别轮询三个集合。而poll库只需要创建一个集合。轮询的时候同时检查三种事件是否发生。epoll库 Nginx服务器支持的高性能事件驱动库。主要的改动是:把描述符列表的管理交由内核负责,一旦有某种事件发生,内核把发生的事件的描述列表通知给进程,这样就避免了轮询整个描述符列表。
  4. epoll库通过相关调用通知内核创建一个有N个描述符的事件列表。然后给这些描述符设置关注的事件,并添加到内核的事件列表中去。
  5. 完成设置之后,epoll库就开始等待内核通知事件发生。一旦发生,内核将发生事件的描述符上报给epoll库。rtsig模型 Real-time signal,实时信号。使用rtsig时,工作进程会通过系统内核建立一个rtsig队列用于存放标记事件发生的信号。每个事件发生时,系统内核就会产生一个信号存放在rtsig队列中等待工作进程的处理。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏流媒体人生

lib库转dll库

假如你有从源文件编译好的静态库lib,你希望从这个lib生成对应的dll,你需要一个def文件里面定义导出的符号,这些符号的定义在那个静态库里,你要生成dll了...

1182
来自专栏用户2442861的专栏

./configure,make,make install的作用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/haluoluo211/article/details...

3893
来自专栏木头编程 - moTzxx

oracle 10g(服务端+客户端,支持win7、win8) 资源分享

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011415782/article/de...

4633
来自专栏Web 开发

jQuery Select菜单二级联动

参考地址: http://wlog.cn/javascript/jquery-select.html

1800
来自专栏性能与架构

Kafka 消息存储及检索

Kafka是一个分布式的消息队列系统,消息存储在集群服务器的硬盘 Kafka中可以创建多个消息队列,称为topic,消息的生产者向topic中发布消息,消息的...

4686
来自专栏ytkah

laravel出现No hint path defined for [sudosu]的解决方法

  今天ytkah在部署laravel项目时出现了No hint path defined for [sudosu]的问题,大概意思是没有定义sudosu的提示...

1171
来自专栏大数据

开始使用Kafka

我们来看一个使用Kafka命令行的生产者和消费者的简单例子。

3071
来自专栏小夜博客

Nginx combined 日志参数记录

45710
来自专栏后端技术探索

两种Nginx日志切分方案,狼厂主要在用第1种

所谓的定时任务切分,是指通过定时任务(比如crontab),发送信号给nginx,让其重新打开文件。该方法也是nginx官网上面比较推荐的,原文说明比较清楚,这...

1392
来自专栏小白安全

小白博客 sqlmap之POST登陆框注入方式二【自动搜索表单的方式】

sqlmap.py -u "http://192.168.160.1/sqltest/post.php" --forms 它会有几次消息提示: ? ...

9148

扫码关注云+社区

领取腾讯云代金券