首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >服务器-Nginx的事件驱动模型

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

作者头像
小二三不乌
发布2018-08-02 10:54:07
1.4K0
发布2018-08-02 10:54:07
举报

服务器-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队列中等待工作进程的处理。
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-01-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 服务器-Nginx的事件驱动模型
    • 什么是事件驱动模型
      • 事件驱动处理库
        • select库
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档