互联网的全球化导致了互联网的数据量快速增长,为了应答现在互联网上海量的用户,轻松解决数百万、上千万的连贯,Nginx应运而生。如果你还不懂Nginx是什么,想必曾经被拍在时代浪潮之下了。明天尽量用绝对易懂的语言进行解释,不足之处望大家补充。
Nginx是什么?
首先咱们晓得,在网站输出网址的时候拜访某一个网站,能够失去想要的后果,如果是淘宝呢,淘宝购物每天用户量十分大,达到百万或者千万级怎么办了,这个时候人太多了,拜访的时候操作系统的多线程和过程建的切换耗费了大量的CPU资源,重大会导致服务器宕机,失去用户量,企业面临破产,所以就须要有一个能解决并发拜访服务器的货色。俄罗斯的工程师Igor Sysoev,他在为Rambler Media工作期间,应用C语言开发了Nginx。Nginx作为WEB服务器始终为Rambler Media提供杰出而又稳固的服务。
NGINX生态的重要开源模块和产品
Nginx高性能服务器有什么特点?
Nginx高性能服务器:是一种自在的,开源的,高性能的HTTP服务器;同时也是一个IMAP,POP3,SMTP代理服务器;用来实现负载平衡的。
特点:高可用,高并发,热部署,高扩大,低消耗。
Nginx的模块化机制
Nginx的模块化机制从第一个版本就有了,然而过后Igor并不是为了第三方思考的,只是为了不便本人的开发。用Nginx的人大都会为它的模块化机制感到惊叹,谁都能够不必改Nginx源码,只需退出本人的模块,以满足本人的需要。Lua就是最好的例子。
这问题也让Igor很头大,为什么呢?大量的第三方模块,品质参差不齐,它们重大依赖Nginx的API。Nginx是20年前的软件,过后的服务器架构跟现在曾经不可同日而语。软件须要进化,就要做重构,然而API不能轻易改。关注Nginx社区的人晓得,Igor亲自设计了另一个跟Nginx不同的软件Unit,这软件不会再反对模块化了,这是他们的抉择。
所以从短期看,Nginx的模块化让它疾速建设了整个生态。从长期看,整个生态也解放在它的架构上。Nginx最大的问题不具备热加载,这种当初支流软件里曾经不是问题,反而在它这里变成很辣手的问题,好在很多以Lua为主的利用能够解决这个问题。
如何看懂Nginx设计?
通用性能:将它扔进Nginx里,如果你能做模块开发,这点尤为重要。它意味着你将享受将来稳固和保护的红利。举个理论例子,咱们在开发NJS里,有个querystring的性能,开发须要肯定的老本,用JS语言来写会简略很多,然而咱们仍然抉择将它放在JS引擎里。集体感觉相似Lua里的http request这种库,如果原生Lua模块里反对是再好不过了。对NJS,咱们会抉择放在js模块里,用户能够间接应用,而不必再引入任何库。还有不少的能用性能,比方常用工具函数md5,sha2之类的。
业务性能:这个不必多说,保护好业务模块就行了。
从整体看,Lua既封装了Nginx的HTTP申请,也提供了独立于申请的性能,比方timer(定时器)和cosocket(跟第三方交互的根底机制)。不论什么模块,也都是基于这两方面进行设计的。我始终推动NJS在这方面的能力,因为目前NJS只能解决申请,但行将引入内置的HTTP库,齐全独立于申请的。反复一遍:申请和非申请。
基于nginx-lua-module的API框架
以上就是Nginx的相干常识了,心愿帮忙到大家对Nginx是什么有一个根本的理解。Nginx很值得深刻、系统地进行学习,对于Nginx作为代理进行实现负载平衡的内容,会再来与大家探讨分享。