为什么选择Nginx

 为什么选择Nginx?因为它具有以下特点:

1、更快

  这表现在两个方面:一方面,在正常情况下,单词请求会得到更快的响应;另一方面,在高峰期(如有数以万计的并发请求),Nginx可以比其他Web服务器更快地响应请求。

2、高扩展性

  Nginx的设计极具拓展性,它完全是由多个不同的功能、不同层次、不同类型且耦合度极低的模块组成。因此,当对某一个模块修复BUG或者进行升级时,可以专注与模块自身,无须在意其他。而且在HTTP模块中,还设计了HTTP过滤器模块:一个正常的HTTP模块在处理完请求后,会有一串HTTP过滤器模块对请求的结果进行再处理。这样,当我们开发一个新的HTTP模块时,不但可以使用诸如HTTP核心模块、events模块、log模块等不同层次或者不同类型的模块,还可以原封不动的复用大量已有的HTTP过滤器模块。这种低耦合度的优秀设计,造就了Nginx庞大的第三方模块,当然,公开的第三方模块也如官方发布的模块一样容易使用。

  Nginx的模块都是嵌入到二进制文件中执行的,无论官方发布的模块还是第三方模块都是如此。这使得第三方模块一样具备极其优秀的性能,充分利用Nginx的高并发特行,因此,许多高流量的网站都倾向于开发符合自己业务特行的定制模块。

3、高可靠性

  高可靠性是选择Nginx的基本条件,因为Nginx的可靠性是大家有目共睹的,很多高流量网站都在核心服务器上大规模使用Nginx。Nginx的高可靠性来自于其核心框架代码的优秀设计、模块设计的简单性;另外,官方提供的常用模块都非常稳定,每个worker进行相对独立,master进程在1个worker进程出错时可以快速拉起新的worker子进程提供服务。

4、低内存消耗

  一般情况下,10000个非常活跃的HTTP Keep-Alive连接在Nginx中仅消耗2.5M的内存,这是Nginx支持高并发连接的基础。

5、单机支持10万以上的并发连接

  这是一个非常重要的特行!随着互联网的迅猛发展 喝互联网用户数量的成倍增长,各大公司、网站都需要应付海量并发请求,一个能够在峰值顶住10万以上并发请求的server,无疑会得到大家的青睐。理论上,Nginx支持的并发连接上限取决于内存,10万远未封顶。当然,能够及时地处理更多的并发请求,是和业务特点紧密相关的。

6、热部署

  master管理员进程与worker工作进程的分离设计,是的Nginx能够提供热部署功能,即可以在7x24小时不间断提供服务的前提下,升级Nginx的可执行文件。当然,它也支持不停止Nginx服务器就更新配置项、更换日志文件等功能。

7、最自由的BSD许可协议

  这是Nginx可以快速发展的强大动力。BSD许可协议不只是允许用户免费试用Nginx,它还允许用户在自己的项目中直接使用或修改Nginx源码,然后发布。这吸引了无数开发者继续为Nginx贡献自己的智慧。

 

  以上7个特点当然不是Nginx的全部,拥有无数个官方功能模块、第三方功能模块使得Nginx能够满足绝大部分应用场景,这些功能模块间可以叠加实现更加强大、复杂的功能,有些模块还支持Nginx与Perl、Lua等脚本语言继承工作,大大提高开发效率。这些特点促使用户在寻找一个Web服务器时更多考虑Nginx。

  当然,选择Nginx的核心理由还是它能在支持高并发请求的同时还保持高效的服务。

  如果Web服务器的业务访问量巨大,就需要保证在数以百万计的请求同时访问服务器时,用户可以得到良好的体验,不会出现并发量达到一个数值后,新的请求无法获得服务,或者虽然成功建立起了TCP连接,单大部分请求得不到响应的情况。

  通常,高峰期服务器的访问量可能是正常情况下的许多倍,若有热点事件的发生,可能会导致正常情况下非常顺畅的服务器直接"挂死"。然而,如果在部署服务器时,就预先针对这种情况进行扩容,又会使得正常情况下所有服务器的负载过低,这回造成大量的资源浪费。因此,我们会希望在这之间取得平衡,也就是说,在低并发压力下,用户可以获得高速体验,在高并发压力下,更多的用户都能接入,可能访问速度会下降,但这只是受制于带宽和处理器的速度,而不应该是服务器设计导致的软件瓶颈。

  事实上,由于中国互联网用户群体的数量巨大,致使对Web服务器的设计往往要比欧美公司更加困难。例如,对于全球性的一些网站而言,欧美用户分布在两个半球,欧洲用户活跃时,美洲用户通常在休息,反之亦然。而国内巨大的用户群体则对业界的程序员提出更高的挑战,早上9点和晚上20点到24点这段时间并发的请求压力是非常巨大的,尤其是节假日、寒暑假到来之际时,更会对服务器提出极高的要求。

  另外,国内业务上的特性,也会引导用户在同一时间内大并发地访问服务器。例如,许多SNS网页游戏会在固定时间刷新游戏资源或者允许"偷菜"等好友互动操作。这些会导致服务器处理高并发请求的压力增大。

  上述情形都对我们的互联网服务在大并发压力下是否还能够给予用户良好的体验提出了更高的要求。若要提供更好的服务,那么可以从多方面入手,例如,修改业务特性、引导用户从高峰期分流或者把服务分层分级、对于不同并发压力给用户提供不同级别的服务等。但最根本的是,Web服务器要能支持大并发压力下的正常服务,这才是关键。

  快速增长的互联网用户群以及业内所有互联网服务提供商越来越好的用户体验,都促使我们在大流量服务中用Nginx取代其他Web服务器。Nginx先天的事件驱动设计、全异步的网络/IO处理机制、极少的进程间切换以及许多优化设计,都使得Nginx天生善于处理高并发压力下的互联网请求,同时Nginx降低了资源消耗,可以把服务器硬件资源"压榨"到极致。

posted @ 2017-12-19 12:58  StaryJie  阅读(115)  评论(0)    收藏  举报