Nginx 基础架构

来源:互联网 发布:app微信支付php服务端 编辑:程序博客网 时间:2024/06/05 15:29

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

0 0
原创粉丝点击