为什么使用Nginx
1,引言
为什么使用Nginx?我(萌新)觉得应该先从以前传统的开发模式讲起,因为任何事物存在即合理,Nginx能在今天大火的同时,与它本身的优点和他解决了传统开发模式的哪些痛点,一定分不开的,下面,作为一位纯萌新,我想从以下几个方面大胆地谈谈我对Nginx的看法。
2,传统的开发模式
众所周知,我们所熟知的单体架构就属于传统开发模式的一种,我想以单体架构为例来阐述。
所谓单体,简单理解就是一个程序包含了一个系统的所有的业务功能,比如一个ERP系统,就包含了商品模块、订单模块、采购模块、销售模块、库存模块、报表模块等等,这个程序在部署时就是一个进程,比如把war包部署到tomcat中。

单体架构看似简单,优点却有很多。
1)开发简单 2)测试简单 3)发布和维护简单
所适用的场景:
1)业务场景简单 2)功能简单 3)性能要求极致 4)一些用户量小,使用单体架构再适合不过
缺点也是显而易见:
随着5G的推出,用户量激增,每天的请求量惊人,就如一些大型的商城系统,遇到节假日的话,请求量更是惊人。这时候,单体架构显然是不适用的。
这时候nginx横空出世。下面,作为一个纯萌新,我想谈谈我对Nginx的一些看法。
3,Nginx的定义
Nginx 是俄罗斯人编写的十分轻量级的 HTTP 服务器,Nginx,它的发音为“engine X”,是一个高性能的HTTP和反向代理服务器,同时也是一个 IMAP/POP3/SMTP 代理服务器。
如果不用Nginx做负载均衡的话,那么大量的请求都会直接打到后端服务器上,很容易造成服务器的瘫痪,宕机,用户体验不佳。
4,Nginx的架构图

Nginx包含一个单一的master进程和多个worker进程。所有这些进程都是单线程的,并且设计为同时处理成千上万的连接。work进程是处理连接的地方,因为这个组件就是处理客户端请求的。Nginx使用了操作系统的事件机制来快速响应这些请求。
Nginx的master进程负责读取配置文件,处理套接字,派生worker进程,打开日志文件和编译嵌入式的Perl脚本。master进程是一个可以通过处理信号响应来管理请求的进程。
Nginx的worker进程运行在一个忙碌的事件循环的处理中,用于处理进入的连接。每一个nginx模块被构筑在worker中,因此任何请求处理,过滤,处理代理的连接和更多的操作都在worker进程中完成。由于这种worker模型,操作系统能够处理每一个进程,并且调度处理程序最佳运行在每一个处理器内核上。如果有任何阻塞worker进程的进程,例如,磁盘的I/O,那么需要配置的worker进程要多于CPU内核数,以便于处理负载。
还有少数辅助程序的Nginx的master进程用于处理专门的任务,在这些进程中有cache loader和cache manage进程。cache loader进程进程负责worker进程使用缓存的元数据的准备。cache manage进程负责检查缓存条目和有效期。
Nginx建立在一个模块化的方式之上。master进程提供了每个模块可以执行器功能的基础,每一个协议和处理作为自己的模块执行,各个模块连接在一起成为一个管道来处理连接和请求。在处理完成一个请求之后,交给一系列的过滤器,在这些过滤器中响应被处理。这些过滤器有的处理子请求,有的是Nginx的强大的功能之一。
子请求是Nginx根据客户端发送的不同URI返回的不同结果。这依赖于配置,他们可能会多重嵌套和调用其他的子请求。过滤器能够从多个子请求收集响应,并且将他们组合成一个响应发送给客户端。然后,最终确定响应并且将其发送到客户端。在这种方式下,可以让多个模块发挥作用。
相对于传统的单体架构,Nginx的加入大大缓解了服务器的压力。
5,Nginx的优点
1、可以高并发连接
官方测试Nginx能够支撑5万并发连接,实际生产环境中可以支撑2~4万并发连接数。
原因,主要是Nginx使用了最新的epoll模型(Linux2.6内核)和kqueue(freeBSD)网络I/O模型,而Apache使用的是传统的Select模型,其比较稳定的Prefork模式为多进程模式,需要经常派生子进程,所以消耗的CPU等服务器资源,要比Nginx高很多。
2,配置简单
3,支持热部署
4,内存消耗小
总感觉该把linux的学习提上日程了,epoll模型是啥,还不清楚,
,支持热部署**
4,内存消耗小
总感觉该把linux的学习提上日程了,epoll模型是啥,还不清楚,
作为一个编程菜鸟,只能理解到这种程序,不足之处,请大佬批评指正!
文章介绍了为什么使用Nginx,从传统的单体架构出发,阐述了Nginx作为高性能HTTP服务器和反向代理的优势,包括其高并发能力、简单的配置、支持热部署和低内存消耗。Nginx的架构设计允许它有效地处理大量连接,缓解服务器压力。
7827

被折叠的 条评论
为什么被折叠?



