nginx服务企业应用

红米2年前技术文章549

1、软件的分类

1.1 常用来提供静态服务的软件

  • Apache :这是中小型Web服务的主流,Web服务器中的老大哥,

  • Nginx :大型网站Web服务的主流,曾经Web服务器中的初生牛犊,现已长大。

  • Nginx 的分支Tengine ( http://tengine.taobao.org/)目前也在飞速发展

  • Lighttpd :这是一个不溫不火的优秀Web软件,社区不活跃,静态解析效率很高.在Nginx流行前,它是大并发静态业务的首选,国内百度贴吧、豆瓣等众多网站都有Lighttpd奋斗的身彩"  

1.2 常用来提供动态服务的软件

  1. PHP ( FastCGI ):大中小型网站都会使用,动态网页语言PHP程序的解析容器。它可配合Apache解析动态程序,不过,这里的PHP不是FastCGI守护进程横式,而是mod_php5.so ( module)也可配合Nginx解析动态程序,此时的PHP常用FastCGI守护进程模式提供服务。

  2. Tomcat :中小企业动态Web服务主流,互联网Java容器主流(如jsp、do )

  3. Resin :大型动态Web服务主流,互联网Java容器主流(如jsp、do )

  4. IIS ( Internet information services ):微软 windows 下的 Web 服务软件(如 asp、aspx )

2、nginx 软件

2.1 软件介绍

  如果你听说或使用过Apache软件,那么很快就会熟悉Nginx软件,与Apache软件类似,Nginx (engme x")是一个开源的,支持高性能、高并发的WWW服务器和代理服务软件。它是由俄罗斯人Igor Sysoev开发的,最初被应用在勘罗斯的大型网站www.rambler.ru,后来作者将源代码以类BSD许可证的形式开源出来供全球使用。

Nginx因具有高并发(特别是静态资源)占用系统资源少等特性,且功能丰富而逐渐流行起来。

  在功能应用发面,Nginx不但是一个优秀的Web服务软件,还具有反向代理负载均衡功能和缓存服务功能。在反向代理负载均衡功能方面,它类似于大名鼎鼎的LVS负载均衡及Haproxy等专业代理软件,但是Nginx部署起来更为简单、方便;在缓存服务功能方面,它又类似于Squid等专业的缓存服务软件。

   Nginx 可以运行在UNIXLinuxBSDMac 0S XSolaris,以及Microsoft Windows等操作系统中。随着Nginx在国内很多大型网站中的稳定高效运行,近两年它也逐渐被越来越多的中小型网站所使用。当前流行的Nginx Web组合被称为LNMPLEMP(Linux Nginx MySQL PHP),其中LNMP里的N取自Nginx ( "engine x" )


2.2 NGINX 软件特性


2.2.1 HTTP服务器的特色及优点

支持高并发:能支持几万并发连接(特别是静态小文件业务环境)
资源消耗少:在3万并发连接下,开启10Nginx线程消耗的内存不到200MB
可以做HTTP反向代理及加速缓存、即负载均衡功能,内置对RS节点服务器健康检查功能,这相当于专业的Haproxy软件或LVS的功能。
具备Squid等专业缓存软件等的缓存功能。
支持异步网络I/O事件横型epoll(Linux2.6+)


2.2.2 nginx功能特性

web网站服务
反向代理负载均衡(nginx /lvs /haproxy)
nginx缓存服务(memcache /redis /mongodb


2.3 nginx软件的企业功能应用

业务类型
应用方案
静态业务
若是高并发场景,尽量采用NginxLighttpd,二者首选Nginx
动态业务
理论上采用NginxApache均可,建议选择Nginx,为了避免相同业务的服务软件多样化,增加额外维护成本。动态业务可以由Nginx兼做前端代理,再根据页面元素的类型或目录,转发到后端相应的服务器处理进程。
---首选tomcat
既有静态业务又有动态业务
采用Nginx
利用nginx软件是无法处理动态业务请求,要让nginx结合php软件处理动态业务请求,在加上mysql LNMP架构


2.4 nginx软件的动态访问瓶颈

2.4.1 与其他软件的对比

Apache软件的特点

Apache2.2版本非常稳定强大,据官方说,Apache2.4版本性能更强。
Prefork模式取消了进程创建开销,性能很高。
处理动态业务数据时,因关联到后端的引擎和数据库,瓶颈不在Apache上。
高并发时消耗系统资源相对多一些。
基于传统的select模型,高并发能力有限。
支持扩展库,可通过DSOapxs方法编译安装额外的插件功能,不需要重新编译Apache
功能多,更稳定,更安全,插件也多。
市场份额在逐年递减

Nginx软件的特点:

基于异步网结I/O型(epollk kqueue
具备支持高性能,高并发的特性,并发连接可达数万。
对小文件(小于1 MB的静态文件)高并发支持很好,性能很高
不支持类似ApacheDSO模式、扩展库必须编译进主程序(缺点)
进程占用系统资源比较低。
支持Web、反向ProxyCache三大重点功能,幷且都很优秀。
市场份额在逐年快速增加。

最后是Lighttpd的特点,如下:

基于异步网络I/ O模型,性能、并发都与Nginx相近。
扩展库是SO模式,比Nginx灵活
目前国内的使用率比较低,安全性没有ApacheNginx好。
通过插件(mod_secdownload)可实现文件URL地址加密(优点)
社区不活跃,市场份额较低,

2.4.2 最主要的区别(select & epoll)

NGINX 使用的是epoll 和Kqueue 异步网络I/O模型,而apache使用的是传统的select模型

例1:

假设你在大学读书,住的宿舍楼有很多房间,你的朋友要来找你。select版宿管大妈就会带着你的朋友到各房间挨个去找,直到找到你为止。而epoll版宿管大妈会先记下每位入住同学的房间号,你的朋友来找你时,只需告诉你的朋友你住在哪个房间即可,不用亲自带着你的朋友满宿舍楼找人了。如果同时来了100个人,都要找自己住这栋楼的同学,select版和epoll版宿管大妈,谁的效率更高,就很明显了。

例2:

select的调用复杂度是线性的,即O(n)。举个例子,一个保姆照看照看一群孩子,如果把孩子是否需要尿尿比作网络I/O事件,select的作用就好比这个保姆挨个询问每个孩子"你要尿尿吗?”如果孩子回答是,保姆则把孩子领出来放到另外一个地方。当所有孩子询问完之后,保姆领着这些要尿尿的孩子去上厕所(处理网络I/O事件).在epoll机制下,保姆不再需要挨个询问每个孩子是否需要尿尿。取而代之的是,如果孩子需要尿尿,他就自己主动站到事先约定好的地方,而保姆的职责就是查看事先约定好的地方是否有孩子。如果有小孩,则领着孩子去上厕所(网络事件处理)。因此,epoll的这种机制,能够高效地处理成千上万的并发连接,并且性能不会随着连接数増加而下降太多。

相关文章

Hbase 存储相关知识

1.Hbase的写流程Client 写入-> 存入MemStore,一直到MemStore 满-> Flush 成一个StoreFile,直至增长到一定阈值-> 触发Compact...

kafka模拟消费报错 ISR缺失 指定offset提取数据失败场景

kafka模拟消费报错 ISR缺失 指定offset提取数据失败场景

测试集群信息kafka版本:3.0.0172.16.120.236  kafka-id: 0172.16.121.150  kafka-id: 1172.16.121.225  kafka-id: 2...

K8s数据持久化

K8s数据持久化

一、为什么需要持久化为了解决pod里面的容器被删除后数据不丢失,则引入了存储类型,类似于docker中的数据卷。在kubernetes集群中,其是支持多种存储类型,包括但不限于emptyDir,Hos...

开源大数据集群部署(二)集群基础环境实施准备

开源大数据集群部署(二)集群基础环境实施准备

1、部署实施Ø  部署实施章节中灰色文本内容为操作命令和配置文件内容。Ø  下文中$表示系统命令解释器开始符号,且表示所有机器都要执行,如出现[hadoop@hd1.dtstack...

ES模糊查询(Wildcard Query)导致CPU打满问题

ES模糊查询(Wildcard Query)导致CPU打满问题

一、概述    Wildcard Query是es中实现模糊查询的一种方式,尤其对有SQL经验的人,会常常习惯于它,毕竟这是和SQL里like操作最相似的查询方式,最近一个客户的es集群就在这上面踩了...

SQL Server优化入门系列(三)—— 性能计数器(performance counter)

SQL Server优化入门系列(三)—— 性能计数器(performance counter)

说明Performance Counter是windows系统中通用的性能分析工具。Windows OS和SQL Server暴露了很多Performance Counter,可用户分析整个系统的运行...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。