Apache不合适吗?

Apache,这种网络服务器软件在很大程度上仍然主宰着互联网,它的根源在于20世纪90年代初。最初,它的架构与当时存在的操作系统和硬件相匹配,但也与互联网状态相匹配,其中网站通常是运行单个Apache实例的独立物理服务器。到了2000年代初,很明显,无法轻松复制独立的Web服务器模型以满足不断增长的Web服务的需求。

在这里插入图片描述
尽管Apache为未来的开发提供了坚实的基础,但它的架构是为每个新连接生成自己的副本,这不适合网站的非线性可伸缩性。最终,Apache成为了一个通用的Web服务器,专注于拥有许多不同的功能,各种第三方扩展,并且普遍适用于几乎任何类型的Web应用程序开发。然而,没有任何代价,在单个软件中拥有如此丰富和通用的工具组合的缺点是可扩展性较差,因为每个连接的CPU和内存使用量增加。

因此,当服务器硬件,操作系统和网络资源不再成为网站增长的主要限制时,全球的Web开发人员开始寻找更有效的运行Web服务器的方法。大约十年前,杰出的软件工程师Daniel Kegel 宣称 “现在是Web服务器同时处理一万个客户端的时候了”,并预测了我们现在称之为Internet云服务的东西。凯格尔的C10K清单激发了许多尝试来解决网络服务器优化问题,同时处理大量客户端,而nginx成为最成功的客户之一。

旨在解决10,000个同时连接的C10K问题,nginx在编写时考虑了不同的体系结构 - 一个更适合同时连接数和每秒请求数的非线性可伸缩性。nginx是基于事件的,因此它不遵循Apache为每个网页请求生成新进程或线程的风格。最终结果是,即使负载增加,内存和CPU使用仍然可以管理。nginx现在可以在具有典型硬件的服务器上提供数万个并发连接。

当nginx的第一个版本发布时,它意味着与Apache一起部署,使得静态内容(如HTML,CSS,JavaScript和图像)由nginx处理,以卸载基于Apache的应用程序服务器的并发和延迟处理。在开发过程中,nginx通过使用FastCGI,uswgi或SCGI协议以及分布式内存对象缓存系统(如memcached)增加了与应用程序的集成 。还添加了其他有用的功能,例如具有负载平衡和缓存的反向代理。这些附加功能使nginx成为有效的工具组合,可构建可扩展的Web基础架构。

2012年2月,Apache 2.4.x分支向公众发布。虽然Apache的最新版本增加了新的多处理核心模块和旨在增强可扩展性和性能的新代理模块,但现在判断它的性能,并发性和资源利用率是否与纯事件相当或更好还为时尚早。驱动的Web服务器。不过,看看Apache应用程序服务器在新版本中的扩展性能会更好,因为它可能会缓解后端方面的瓶颈,这在典型的nginx-plus-Apache Web配置中仍然没有得到解决。

猜你喜欢

转载自blog.csdn.net/qq_30683393/article/details/89609495