今天的 web 应用程序处在极为两难的状态之中 — 它们必须足够强大以处理高峰负载,还要足够灵活以便可以轻易地修改和伸缩。要害的商务事务现在通过浏览器来进行处理,并且这些要害事务要求每周 7 天天天 24 小时的正常运行时间。 停机时间只是带来失望和造成收入损失,而拖延可能意味着客户将点击转向实力最为接近的竞争对手。
过去,构建高性能、高可用性的 web 应用程序意味着要付出高价,要为大型硬件和昂贵的软件支付大笔费用。今天,部分得益于像 linux 集群这样的操作系统改进,以及得益于紧缩的 IT 预算,更多商用级价格水平的硬件正被大家所使用。但商用硬件也意味着更多的治理问题;更多的负载均衡问题,非凡是对于动态内容;当部署或升级应用程序时更多的要处理的机器;一旦服务器节点出现故障而引起的潜在故障或可能导致的瓶颈,等等。
记得堪萨斯吗?回顾我们购买那些大型、昂贵、单一的服务器来保持我们的应用程序持续运行的时候。我们在前面扔掉了一些 web 服务器,然后让大型计算机来处理所有繁重的负载。然而,经历了一场风暴,那些堪萨斯的日子一去不返了。IT 预算被削减,在发展的要害转折阶段,为了进一步提高生产效率并降低成本,对 Web 应用程序的要求也更高了。
为了控制 IT 成本,公司(包括 Oracle)将运行要害商务应用程序的任务分派给了更便宜的商用服务器。但在商用服务器中,每个机器的负载容量更少了,而且更便宜的服务器更可能出现故障。存储器和操作系统方面的改进提供了一些帮助,但实际情况仍然是运行商用硬件意味着使用多得多的服务器,这反过来导致更多的故障节点和瓶颈。
OracleAS 10g 使用了 Advanced Clustering 来实现更多的功能。这个软件不仅使均衡负载在一个集群中的服务器上变得轻易,而且还能够检测故障并在剩余的服务器上重新分配任务来无缝地承担额外的工作负载。例如,在一个三节点的集群中,节点 A、B 和 C 承担了相等的工作负载。假如在一个 10g 集群中£节点 C 出现了故障,则将自动对节点 A 和 B 重新分配任务来继续处理节点 C 的工作负载,就像什么也没有发生过一样。
但今天的多层次应用程序甚至比上面的例子更复杂。它们可能有专门分配给应用程序层的节点和分配给 web 服务器层的单独的节点。假如应用程序使用了高速缓存(我们一会将讨论这个主题),则可能存在专门为 web 高速缓存层分配的节点。在一个多层次应用程序内部的任何节点上出现的节点故障都可能引起层叠的效应。(参见图 1。)
OracleAS 10g Web Cache 是独一无二的,它确保了高性能和高可用性。Web Cache 还可以无缝地与来自 BEA、IBM、ATG、Sun、Apache 和 Microsoft 等的第三方应用程序和 web 服务器一起工作,因此它可以为您的整个 Web 体系结构提供帮助 — 无论它是否建立在 Oracle 之上。
下面我们将研究 OracleAS 10g Web Cache 的高可用性功能,高性能特性留待我们的第 2 部分再讨论。
Web Cache 面向服务器节点,并像常规的高速缓存一样,响应所有的入站 HTTP 请求,并根据每台 Web 服务器的容量分配这些请求。回到我们假定的由节点 A、B 和 C 组成的集群中,我们可以配置 Web Cache 来将 30% 的负载分配给 Web 服务器 A,另外的 30% 给 Web 服务器 B,40% 给 Web 服务器 C。
OracleAS 10g Web Cache 有一个要害的优点:假如三台服务器中的一台出现了故障,Web Cache 自己可以自动将该负载的 50% 重新分配到剩余的两台 Web 服务器上。当出现故障的服务器回到在线状态时,Web Cache 将负载重新分配回所有的三台服务器,而所有这些对用户都是透明的。
但假如在这个 Web Cache 层出现了故障,情况会怎样?这不会成为单个故障节点吗?回答当然是“不会”。在 OracleAS 10g 中能够让一个 Web Cache 与集群中其它的 Web Caches 通信,从而将它们连接在一起来提高总体的缓存容量。这种通信还可以在一个高速缓存集群成员出现故障时检测出来。例如,假如一个节点上的高速缓存出现故障,则集群中其它的成员可以承担额外的高速缓存负载 — Web Cache 可以无缝地处理它自身的故障。
Web Cache 仅是 OracleAS 10g 中所带的各种各样性能和可用性元素中的一个。在其表面之下,您将发现一个轻型且非常强大的 J2EE 引擎,它具有一个令人吃惊的微小内核。在第 2 部分中,我们将讨论许多用来部署和治理您的 Web 应用程序的命令和控制工具。以及具有记录回放功能的监控和分析工具,以根据实际用户的经验确保一切都优化地运行。而在性能方面,OracleAS 10g 提供了几个加速您的应用程序的选项 — 单独使用 Web Cache 就可以加速您的应用程序达 20 倍。但这是第 2 部分要讨论的内容……