译者 | albon_arith白眉林 | Elle公司出品 | CSDN 网志
Nginx 是两个完全免费的,开放源码的,高效能的 HTTP 伺服器和逆向全权,和 IMAP / POP3 伺服器端。Nginx 以其高效能,灵活性,多样的机能,单纯的实用性和低天然资源耗用而闻名于世。
Nginx 的总体构架Nginx 里有两个 master 民主化和数个 worker 民主化。master 民主化并不处置互联网允诺,主要就负责管理工作运维组织工作民主化:读取实用性、开启组织工作民主化及非停升级换代。worker 民主化负责管理工作处置互联网允诺与积极响应。
master民主化主要就用以管理工作worker民主化,具体内容主要包括如下表所示4个主要就机能:
转交源自外间的讯号。
向各worker民主化发送讯号。
监控woker民主化的运行状态。
当woker民主化退出后(异常情况下),会自动重新开启新的woker民主化。
woker民主化主要就用以处置基本的互联网事件:
数个worker民主化之间是对等且相互独立的,他们同等竞争源自客户端的允诺。
两个允诺,只可能在两个worker民主化中处置,两个worker民主化,不可能处置其它民主化的允诺。
worker民主化的个数是可以设置的,一般我们会设置与机器cpu核数一致。同时,nginx为了更好的利用多核特性,具有cpu绑定选项,我们可以将某两个民主化绑定在某两个核上,这样就不会因为民主化的切换带来cache的失效。
Ngnix 是如何实现高效能的?事件驱动模型
基于异步及非阻塞的事件驱动模型,可以说是 Nginx 得以获得高并发、高效能的关键因素。这一点上和 Netty 类似,底层都是使用的 BSD kqueue、Linux epoll 及 Solaris event ports。
多民主化机制
使用多民主化的好处有两点:
民主化之间不共享天然资源,不需要加锁,减少了使用锁对性能造成的影响,同时降低编程的复杂度,降低开发成本。
采用独立的民主化,可以让民主化互相之间不会影响,如果两个民主化发生异常退出时,其它民主化正常组织工作,master 民主化则很快开启新的 worker 民主化,确保服务不会中断,从而将风险降到最低。
内存池
为了避免出现内存碎片,减少向操作系统申请内存的次数、降低各个模块的开发复杂度,Nginx 设计了单纯的内存池,它的作用主要就是把多次向系统申请内存的操作整合成一次,这大大减少了 CPU 天然资源的耗用,同时减少了内存碎片。
模块化设计高度模块化的设计是 Nginx 的构架基础。Openresty 就是在 Nginx 上引入了 lua 等第三方模块,使得扩展更加方便了。
原文:https://blog.csdn.net/hustspy1990/article/details/102989305
【End】热 文 推 荐
☞华为辟谣将发布石墨烯电池手机;梁建章回应携程杀熟;GitLab 12.6 发布 | 极客头条☞为什么我们最终抛弃 Chromium 选择了 Firefox ?
☞你的 App 在 iOS 13 上被卡死了吗?☞Hinton、吴恩达们也“吹牛”炒作?媒体和研究人员共谋,AI圈误导信息泛滥
☞2019 最烂密码排行榜大曝光!网友:已中招!☞不用失去控制权和所有权,也能在区块链中通过数据共享获得奖励?
,即刻参加!
你点的每个“在看”,我都认真当成了喜欢