欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

nginx基础架构

程序员文章站 2022-03-04 18:12:21
...
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结构体

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

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