首页  >  文章  >  后端开发  >  Nginx 基础架构

Nginx 基础架构

WBOY
WBOY原创
2016-07-29 09:09:12884浏览

Web服务器设计中的关键约束

  1. 性能
    1. 网络性能
    2. 单次请求的延迟性
    3. 网络效率
  2. 可伸缩性
  3. 简单性
  4. 可修改性
  5. 可见性
  6. 可移植性
  7. 可靠性

Nginx 的架构设计

  1. 模块化设计
    高度模块化设计时Nginx 的架构基础。除了少量的核心代码,其他一切皆为模块。
    特点:
    1. 高度抽象的模块接口
    2. 模块接口非常简单,具有很高的灵活性
    3. 配置模块的设计
    4. 核心模块接口的简单化
    5. 多层次、多类别的模块设计
  2. 事件驱动架构
    由一些事件发生源来产生事件,由一个或者多个事件收集器来收集、分发事件,然后许多事件处理器会注册自己感兴趣的事件,同时会“消费”这些事件。

  3. 请求的多阶段异步处理
    请求的多阶段异步处理 只能 基于 事件驱动架构实现。
    把一个请求的处理过程按照事件的触发方式分为多个阶段,每个阶段都可以由事件收集、分发器来触发。

  4. 管理进程、多工作进程设计
    Nginx 采用一个master管理进程、多个worker工作进程的设计方式。
    这种设计的优点:
    1. 利用多核系统的并发处理能力
    2. 负载均衡
    3. 管理进程会负责监控工作进程的状态,并负责管理其行为
  5. 平台无关的代码实现
    C语言实现,尽量减少使用与操作系统平台相关的代码。
    Nginx重新封装了日志、各种基础数据结构、常用算法等工具软件。
    核心代码使用与操作系统无关的代码实现,与操作系统相关的系统调用则非别针对各个操作系统有独立的实现。

  6. 内存池的设计
    把多次向系统申请内存的操作整合成一次,大大减少了CPU资源的消耗,同时减少了内存碎片。

  7. 使用 统一管道过滤器模式的HTTP过滤模块

  8. 其他一些用户模块

    Nginx 框架中的核心结构体 ngx_cycle_t

').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i ').text(i)); }; $numbering.fadeIn(1700); }); });

以上就介绍了Nginx 基础架构,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn