共计 1518 个字符,预计需要花费 4 分钟才能阅读完成。
互联网的全球化导致了互联网的数据量快速增长,为了应答现在互联网上海量的用户,轻松解决数百万、上千万的连贯,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 作为代理进行实现负载平衡的内容,会再来与大家探讨分享。