云上WEB服务器和应用服务器几点选型考虑

目前最主流的3个Web服务器是Apache、Nginx、IIS

除了Web服务器,还有应用服务器,它们主要用于运行动态语言PHPJSP的服务器。

图片[1]-云上WEB服务器和应用服务器几点选型考虑-不念博客

在说明选型考虑的因素前,先回顾一下WEB发展的3个阶段:

  • Web 1.0时代 (1990年代中期)

Web 1.0是指互联网的早期阶段,大约从1991年至2004年左右。

在这个阶段,Web主要是以静态网页为主,网页内容主要是由HTMLCSSJavaScript等技术组成,网页的内容呈现形式以文本和图片为主,用户主要是通过超链接进行简单的页面跳转和浏览。

Web 1.0时代的技术基础主要是HTMLCSSJavaScript等前端技术,后端技术主要是CGIASPPHP等脚本语言。网站的部署和维护主要是通过FTP等传统的文件传输协议进行,缺乏现代化的开发、测试和部署工具。

总的来说,Web 1.0时代是互联网的初期阶段,虽然网站的功能和交互性较低,但它为后续的Web发展和演化奠定了基础。Web 1.0时代的经验和教训也启示我们,在Web的发展和演化中,需要不断地引入新的技术和概念,不断地改进用户体验和互动性,才能更好地满足用户的需求和期望。

  • Web 2.0时代(2000年代初期)

大约从2004年2010年左右。在这个阶段,Web主要是以动态网页和社交媒体为主,内容更加丰富多样化,用户可以通过Web应用程序进行更加复杂的交互和操作。

Web 2.0时代的网站大多采用开放标准和技术,如AjaxXMLRSS等,用户可以通过浏览器和Web应用程序进行更加灵活的操作和交互。此外,Web 2.0时代的网站开发和管理也得到了极大的改进和提升,出现了许多新的工具和框架,如jQueryBootstrapReact等,使得网站的开发和维护更加高效、便捷。同时,Web 2.0也促进了开放数据、开放知识等概念的发展,使得互联网变得更加开放、透明和共享。

Web 2.0时代的网站主要以社交媒体、博客和在线办公应用为主,如FacebookTwitterWordPressGoogle Docs等。这些网站的特点是用户生成的内容多,个性化程度高,交互性强,用户可以通过分享、评论、点赞等方式与其他用户进行互动。

Web 2.0时代是互联网的一个重要阶段,它为互联网的发展和演化带来了重大的影响和变革。

  • Web 3.0时代(当前)

Web 3.0是指互联网的第三个阶段,也被称为智能互联网语义互联网,其主要特点是实现了数据的智能化、语义化和分布式存储,使得互联网可以更加智能、开放、安全和去中心化。

Web 3.0的相关技术包括:

  • 人工智能(AI)Web 3.0时代的互联网需要具备智能化的能力,可以通过机器学习、自然语言处理等技术对数据进行分析和处理,提高数据的质量和价值。
  • 区块链(Blockchain)Web 3.0的互联网需要具备去中心化的能力,可以通过区块链技术实现分布式存储和去中心化的管理,保护数据的安全和隐私。
  • 语义Web(Semantic Web)Web 3.0的互联网需要具备语义化的能力,可以通过RDFOWL等技术对数据进行描述和表示,使得数据能够被机器理解和利用。
  • Web服务(Web Services)Web 3.0的互联网需要具备开放性的能力,可以通过Web服务实现跨平台、跨语言的数据交互和共享。
  • 物联网(Internet of Things,IoT)Web 3.0的互联网需要具备智能化的能力,可以通过物联网技术实现设备之间的互联、数据共享和智能化管理。
  • 3D技术(3D Web)Web 3.0的互联网需要具备虚拟化和沉浸式的能力,可以通过3D技术实现虚拟现实、增强现实等新的应用和体验。
  • 大数据(Big Data)Web 3.0的互联网需要具备数据驱动的能力,可以通过大数据技术实现对海量数据的处理和分析,提高数据的价值和意义。

总的来说,Web 3.0的相关技术是多种多样的,它们共同构成了一个智能、开放、安全和去中心化的互联网生态系统。这些技术的不断发展和应用将带来更多新的应用和机会,推动互联网的发展和演化。

1.稳定性考虑

目前,在云上LNMP(Linux+Nginx+MySQL+PHP)架构的应用也明显比LAMP(Linux+Apache+MySQL+PHP)要多,有替代其趋势。这里要注意的是,Nginx+FastCGI(PHP-FPM)经常出502错误,不是Nginx不稳定导致的问题,Nginx甚至运行几十年都不会出现稳定性问题,而更多是后端PHP运行出现错误,直接体现到Nginx检测出后端的异常,从而报出502HTTP状态码。

所以部署前优先选用Nginx作为WEB服务器。

2.性能考虑

Nginx基于EpoIl网络IO模型,Apache基于SeIect网络模型。

Nginx相比Apache,高性能、高并发、系统资源占用少。

Nginx核心特点是轻量级。Nginx官网表示,Nginx保持10000个没有活动的连接,而这些连接只占用2.5MB内存。而在3万并发连接下,开启10Nginx线程消耗的内存不到200MB。因此,类似DOS这样的攻击对Nginx来说基本上是没有任何作用。而在性能力面,Apache是可望而不可即的。Apache强大的处理功能导致各种模块过于臃肿,带来性能上的较大损耗。

3.对负载均衡功能的支持考虑

Nginx不仅能作为七层/四层方面的负载均衡,在Web服务器、静态缓存、丰富的第三方插件等其他方面的功能也很优秀,这让用户选择HAProxy的可能性降低。

而相比NginxApache也支持七层的负载均衡功能,Apache+Tomcat经典的组合,就是利用Apache七层负载均衡的功能。在七层,Apache有专门的proxy模块来实现这样的负载均衡配置。相比Nginx+Tomcat的组合,Apache针对Tom的集成的紧密度更深。Apache服务器和Tomcat的连接方法其实有3种:JKhttp_proxyajp_proxy。不过Apache在七层负载均衡的性能,相比于Nginx来讲,要弱太多。

4.前端静态数据缓存考虑

web存服务方面,Nginx可通自身的proxy_cache模块实现类squid等专业缓存软件的功能。

在静态缓存这块,一般采用squidvarnishNginx,当前CDN产品的出现,底层其实就是采用这3个开源缓存技术。虽然Apache也能做静态缓存这块功能,但至少没听说过CDN的静态缓存是用Apache来实现的。另外,Nginx的静态资源,如图片、HIMLCSSJS等的处理能力也要强于Apache

5.插件及二次开发考虑

Nginx在热门开源软件中都有相应的丰富插件。比如针对MemcacheRedisLDAPMongoDB的插件,让Nginx也能对MemcacheRedisLDAPMongoDB做反向代理。

虽然Nginx有很多的特性和优势,但是随着Nginx的应用逐渐深人,Nginx自带的功能特性可能满足不了我们特定场景下的需求,不可避免地需要一些定制化的功能,即需要做二次开发。而Nginx源代码采用C语言开发,这将使我们的二次开发变得非常复杂。为了方便开发人员,OpenResty整合了NginxLua的框架,它帮我们实现用Lua的规范开发实现各种业务,并且理清各个模块的编译顺序。而同时OpenResty在云端开源WAF上使用得非常广泛。

OpenResty是云端开源WAF的最佳实践。

© 版权声明
THE END