多层 Web 应用程序为业务关键型应用程序提供了一个更加灵活、更具扩展性的环境,并且可以满足这类应用程序的 24 x 7 小时可用性需求。如今的部署日趋复杂,在系统、基础设施和应用程序交互中引入了额外的复杂性。因此,通过对操作系统和硬件进行选择,在应用程序设计和编写阶段应用最佳实践,以及实施性能和应用程序监视,可以帮助最大化应用程序当前的性能并在未来获得可伸缩性。
UNIX? 和类 UNIX 操作系统通过 Internet 托管大部分 Web 浏览器和基于 Web 的应用程序。尽管这些操作系统主要针对多处理、网络和性能进行设计,但是如今的分布式 n 层 Web 应用程序引入了其他很多可影响应用程序性能的因素。
常用缩写词API:应用程序编程接口(Application programming interface) FTP:文件传输协议(File Transfer Protocol) HTML:超文本标记语言(Hypertext Markup Language) I/O:输入/输出(Input/output) IT:信息技术(Information technology) SDK:软件开发工具箱(Software development kit) SQL:结构化查询语言(Structured Query Language) XML:可扩展标记语言(Extensible Markup Language)
在 Web 的早期,Web 服务器使用 HTML 以及位于给定 Web 服务器的本地图形文件交付静态数据。尽管这种方法适用于静态类内容,但是,企业应用程序需要访问动态的内容,包括客户信息、库存和定价信息,以及其他频繁变化、保存在数据库而非 Web 服务器内容目录(通常保存在数据库之类的外部资源中)的信息。
通过允许 Web 服务器直接访问包含动态内容的其他数据资源(比如数据库),2 层 Web 架构可以满足这些需求。2 层 Web 应用程序 是一种标准的客户机服务器系统,通过使用诸如 Common Gateway Interface (CGI) 之类的数据接口协议和各种 Web 脚本语言实现 Web 服务器和外部数据资源之间的直接通信。面向 Web 应用程序和相关数据源的所有连接和业务逻辑都在 Web 应用程序内完成编码,并且不管数据是本地存储还是远程存储,该应用程序都可以直接访问所需数据。UNIX 和类 UNIX 操作系统是 2 层 Web 应用程序的理想选择,因为它们的设计目标就是实现多处理、支持大量物理内存,并且包括高性能虚拟内存功能来解决应用程序内存需求超出物理内存容量的问题。
然而,不管底层操作系统和硬件有多么强大,2 层应用程序在处理大量请求或维护大量 Web 客户机的状态信息时变得有些低效,因为应用程序的所有组件通常都运行在同一台机器上。使用数据库和 Web 服务器上的本地数据源将增加复制和备份的难度,并且加重了 Web 服务器的负荷。同样,如果系统被侵入并受到破坏,那么将数据库或数据库访问信息存储在正在运行 Web 服务器的机器上会引发安全性问题。
n 层 Web 应用程序架构解决了这些问题,它在不同的机器上运行不同的服务,并使用称为应用服务器 的中间件充当 Web 应用程序逻辑和远程数据需求之间的中介层。N 层架构提供了大量其他简单架构无法比拟的优势,其中包括:
提升高通信量 Web 服务器的性能,因为 Web 应用程序要访问的数据存储在其他系统中。使用除 Web 服务器或应用服务器以外的系统运行数据库(或其他数据)服务器可以降低这些系统上的整体负载,提供更多可用于这些服务器的资源。类似地,诸如对远程数据库、内容管理系统(CMS)和其他数据源执行备份之类的管理任务并不会影响 Web 服务器或应用服务器的性能。 通过实现可伸缩性改善服务器和数据资源管理。Web 服务器和应用服务器可以轻松地执行复制,从而实现负载平衡。通过在多个 Web 服务器和应用服务器之间实现自动故障转移,3 层架构可以提高 Web 应用程序的可用性。与远程资源的连接可以实现智能管理。 提高远程数据的安全性,因为远程数据始终存储在单独的系统中,而不是存储在正在运行 Web 服务器(以及应用服务器)的系统中。对 Web 服务器的入侵和破坏并不会直接暴露私有数据和业务关键数据。N 层架构依赖于多个计算机系统的相互操作,根据所提供的服务的类型,每个计算机系统具有不同的性能考虑因素。这些计算机系统之间的互操作常常需要对 IT 基础设施进行额外的投入,这是因为对网络负载和应用程序响应性的需求更加迫切,包括与监视和同步多个系统来支持冗余和故障转移所需的额外通信量,以及与集中化网络附加存储(Network Attached Storage,NAS)和存储区域网络(Storage Area Network,SAN)数据存储资源相关的网络通信量。
UNIX 和类 UNIX 操作系统一直在高性能联网、分布式应用程序和分布式存储需求方面保持领先,这些需求是实现健壮的、高性能的 n 层 Web 应用程序的基础。然而,除了使应用程序更加易于理解、更加容易维护、更具可伸缩性外,对 n 层应用程序本身实现的优化还可以大幅提升这些应用程序的性能。