要提供更高级的高速缓存功能,请将高速缓存代理作为逆向代理与负载均衡器组件配合使用。通过将高速缓存和负载均衡功能集成在一起,可以创建一种高效且非常易于管理的 Web 性能基础结构。
图 4 描绘了如何将高速缓存代理与负载均衡器组合在一起高效地传递 Web 内容,即使在高需求的情况下也是如此。在此配置中,代理服务器 (4) 已配置为截取请求,这些请求的 URL 包含要由负载均衡器 (6) 执行负载均衡的内容主机集群 (7) 的主机名。
图注:1 — 客户机 2 — 因特网 3 — 路由器/网关 4 —高速缓存代理 5 — 高速缓存 6 —负载均衡器 7 — 内容主机当客户机 (1) 请求文件 X 时,此请求将经过因特网 (2) 并通过企业的内部网关 (3) 进入企业的内部网络。代理服务器截取此请求,生成一个以其 IP 地址作为起源地址的新请求,并将该新请求发送到集群地址处的负载均衡器。负载均衡器使用负载均衡算法来确定哪个内容主机当前最能够满足对文件 X 的请求。该内容主机将文件 X 返回给代理服务器,而不是通过负载均衡器返回。代理服务器确定是否将该文件进行高速缓存并以上述相同方式将其传递给最终用户。
高速缓存代理的动态高速缓存插件还提供了高级高速缓存功能。在与 WebSphere® Application Server 配合使用时,高速缓存代理能够高速缓存和提供 JavaServer Pages (JSP) 格式的动态内容以及 WebSphere Application Server 生成的 servlet 响应,同时也能够使它们无效。
一般来说,因为基于时间的标准动态内容到期逻辑不能确保及时除去具有无限到期时间的动态内容,所以必须将该动态内容标记为“不进行高速缓存”。动态高速缓存插件的事件驱动到期逻辑使代理服务器能够高速缓存具有无限到期时间的内容。在网络边缘将这种内容进行高速缓存使内容主机不必重复调用应用程序服务器也能满足客户机的请求。这可以提供下列益处:
Servlet 响应高速缓存非常适合于动态生成的 Web 页面,这些页面是否到期取决于应用程序逻辑或事件(如来自数据库的消息)。虽然这种页面的生存期有限,但无法在创建时设置生存时间值,这是因为无法预先知道到期触发器。如果将这种页面的生存时间设置为零,那么内容主机在提供动态内容时将承受较高负载。
使高速缓存代理和 Application Server 的动态高速缓存同步由两个系统共同负责。例如,提供当前天气预报的应用程序动态创建的公共 Web 页面可以由 Application Server 导出并由高速缓存代理进行高速缓存。然后,高速缓存代理可以对许多不同用户提供该应用程序的执行结果,直到该页面无效为止。在代理服务器因为高速缓存代理的 servlet 响应高速缓存已满、由高速缓存代理的配置文件中 ExternalCacheManager 伪指令设置的缺省超时已到期或者高速缓存代理接收到指示将清除其高速缓存中的内容的“使之无效”消息而除去一个条目后,该高速缓存中的内容将无效。“使之无效”消息起源于拥有该内容的 WebSphere Application Server 并且将传播到每个已配置的高速缓存代理。
高速缓存代理提供了其他关键的高级高速缓存功能: