nginx基础架构
2016-05-03 11:19
435 查看
web服务器设计中的关键约束
性能
网络性能、单次请求的延迟性、网络效率可伸缩性
简单性
可修改性
可进化性、可扩展性、可定制性、可配置性、可重用性可见性
关键组件的运行情况可以被监控的程度可移植性
可靠性
nginx的架构设计
优秀的模块化设计
高度抽象的模块接口
所有模块都遵循同样的ngx_module_t接口设计规范,这种方式带来了良好的简单性、静态可扩展性、可重用性模块接口非常简单,具有很高的灵活性
模块的基本接口ngx_module_t足够简单,只涉及模块的初始化、退出及对配置项的处理ngx_module_t结构体作为所有模块的通用接口,它只定义了init_master、init_module、init_process、init_thread、exit_thread、exit_process、exit_master;
ngx_command_t类型的commands数组则指定了模块处理配置项的方法。
配置模块的设计
ngx_conf_module提供了高可用性、高可扩展性、高可定制性、高可伸缩性核心模块接口的简单化
官方的核心类型模块共有6个具体模块:ngx_core_module、ngx_errlog_module、ngx_events_module、ngx_openssl_module、ngx_http_module、ngx_mail_module多层次、多类别的模块设计
事件驱动架构
nginx不会使用进程或线程来作为事件消费者,所谓的事件消费者只能是某个模块。请求的多阶段异步处理
将阻塞进程的方法按照相关的触发事件分解为两个阶段
将阻塞方法调用按照时间分解为多个阶段的方法调用
在“无所事事”且必须等待系统的响应,从而导致进程空转时,使用定时器划分阶段
如果阻塞方法完全无法继续划分,则必须使用独立的进程执行这个阻塞方法
管理进程、多工作进程设计
优点:利用多核系统的并发处理能力
负载均衡
管理进程或负责监控工作进程的状态,并负责管理其行为
平台无关的代码实现
内存池的设计
这种内存池的最大优点在于:把多次向系统申请内存的操作整合成一次,这大大减少CPU资源的消耗,同时减少了内存碎片使用统一管道过滤器模式的http过滤模块
nginx框架中的核心结构体ngx_cycle_t
ngx_listening_t结构体
ngx_cycle_t结构体
相关文章推荐
- nginx代理指定目录
- 访问Nginx发生SSL connection error的一种情况
- Nginx+Naxsi部署专业级Web应用防火墙
- CentOS 6.2实战部署Nginx+MySQL+PHP
- nginx中http核心模块的配置指令2
- nginx中http核心模块的配置指令3
- nginx中http核心模块的配置指令4
- nginx中http的fastcgi模块的配置指令1
- Nginx 学习笔记(一)
- 网站502与504错误分析
- 用zabbix监控nginx_status状态
- 艰难完成 nginx + puma 部署 rails 4的详细记录
- 把Lua编译进nginx步骤方法
- web 应用中常用的各种 cache详解
- Linux系统上配置Nginx+Ruby on Rails+MySQL超攻略
- window+nginx+php环境配置 附配置搭配说明
- 解析CI即CodeIgniter框架在Nginx下的重写规则
- 将PHP从5.3.28升级到5.3.29时Nginx出现502错误
- 基于Nginx0.8.54+PHP5.3.4+MySQL5.5.8的全新LNMP稳定版架构搭建的VPS