愤怒的小鸟三星攻略,超等扫描器,米果网
公众号复原'架构'获取架构师电子书及视频课程
前言
近来在读 Nginx 相关的册本,做一下读书条记。
Nginx 作为业界知名的高性能服务器,被广泛的应用。它的高性能正是由于其优秀的架构设计,其架构主要包含这几点:模块化设计、变乱驱动架构、哀求的多阶段异步处理、管理历程与多工作历程设计、内存池的设计,以下数据依次进行阐明。
模块化设计
高度模块化的设计是 Nginx 的架构根蒂。在 Nginx 中,除了少量的焦点代码,其他统统皆为模块。
所有模块间是分条理、分类其余,Nginx 官方共有五大类型的模块:焦点模块、配置模块、变乱模块、HTTP 模块、mail 模块。它们之间的关系如下:
在这 5 种模块中,配置模块和焦点模块是与 Nginx 框架密切相关的。而变乱模块则是 HTTP 模块和 mail 模块的根蒂。HTTP 模块和 mail 模块的“地位”类似,它们都是更存眷于应用层面。
变乱驱动架构
变乱驱动架构,简洁的说便是由一些变乱产生源来发生变乱,由变乱网络器来网络、分发变乱,然后由变乱处理器来处理这些变乱(变乱处理器必要先在变乱网络器里注册本身想处理的变乱)。
对于 Nginx 服务器而言,一般由网卡、磁盘发生变乱,Nginx 中的变乱模块将负责变乱的网络、分发操纵;而所有的模块都可能是变乱消费者,它们首先必要向变乱模块注册感兴趣的变乱类型,这样,在有变乱发生时,变乱模块会把变乱分发到相应的模块中进行处理。
对于传统 web 服务器(如 Apache)而言,采用的所谓变乱驱动往往局限在 TCP 毗邻创建、关闭变乱上,一个毗邻创建以后,在其关闭之前的所有操纵都不再是变乱驱动,这时会退化成按顺序执行每个操纵的批处理模式,这样每个哀求在毗邻创建后都将始终占用着体系资源,直到关闭才会开释资源。这种哀求占用着服务器资源守候处理的模式会造成服务器资源极大的虚耗。如下图所示,传统 web 服务器往往把一个历程或线程作为时间消费者,当一个哀求发生的变乱被该历程处理时,直到这个哀求处理竣事时,历程资源都将被这一哀求所占用。对照典型的例子如 Apache 同步阻塞的多历程模式便是这样的。
传统 web 服务器处理变乱的简洁模型(矩形代表历程):
Nginx 采用变乱驱动架构处理买卖的方式与传统的 web 服务器是分歧的。它不使用历程或者线程来作为变乱消费者,所谓的变乱消费者只能是某个模块。只有变乱网络、分发器才有资格占用历程资源,它们会在分发某个变乱时调用变乱消费模块使用当前占用的历程资源,如下图所示,该图中列出了 5 个分歧的变乱,在变乱网络、分发者历程的一次处理过程中,这 5 个变乱按照顺序被网络后,将起头使用当前历程分发变乱,从而调用相应的变乱消费者来处理变乱。当然,这种分发、调用也是有序的。
本文地址:http://www.wbwb.net/bianchengyuyan/220775.html 转载请注明出处!