Nginx学习笔记(十八):事件处理框架

前言


       如果接着上两篇笔记走的话,现在就应该说worker循环工作中的核心处理方法ngx_process_events_and_timers()。但是在看这个功能函数之前,需要先学习相关的事件模块内容。这一块也算是我学习Nginx的核心了,里面有许多比较有趣的内容,比如常见的负载均衡,“惊群”现象等等。当然,最想学习的还是Nginx中关于epoll事件驱动机制了。

事件处理框架


       Nginx事件处理框架主要围绕两种事件进行,分别是是网络事件以及定时器事件。其中,网络事件主要就是以TCP事件为主了。Nginx的高可移植性决定了它能够在不同的操作系统内核中选择符合的事件驱动机制支持网络事件的处理。Nginx支持的事件驱动机制可以看《笔记十一》中的模块间关系图。

       那Nginx的事件处理框架又是如何选择事件驱动机制的呢?
       1) Nginx定义了一个核心模块ngx_events_module,在Nginx启动时调用ngx_init_cycle方法解析配置项,找到"events{}"配置项后,ngx_events_module模块即开始工作。它的主要工作就是为所有的事件模块解析"events{}"中的配置项,同时管理这些事件模块存储配置项的结构体;
       2) Nginx定义了一个非常重要的事件模块ngx_event_core_module,该模块决定使用哪种事件驱动机制,以及如何管理事件(后续笔记详细介绍);
       3) Nginx定义了一系列运行在不同操作系统、不同内核版本上的事件驱动机制,包括:ngx_epoll_module、ngx_kqueue_module、ngx_poll_module、ngx_select_module、ngx_devpoll_module、ngx_eventport_module、ngx_aio_module、ngx_rtsig_module和基于Windows的ngx_kqueue_module模块。在ngx_event_core_module模块中,将会从以上9个模块中选择1个作为Nginx进程的事件驱动模块。

事件模块结构


       事件模块是一种新的模块类型,它的通用接口是ngx_even
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值