ColdFusion工作方式

ColdFusion 服务器即可用于单一服务器也可用于集群环境。

ColdFusion工作方式 - 图1

ColdFusion 服务器为可扩展性而作的设计

单服务器上的ColdFusion

ColdFusion服务器提供广泛的功能,单服务器上的ColdFusion具有容错性、实用性和可扩展性。

  • 多线程服务体系

  • 高级线程池

  • 用户缓存管理

  • Web服务器API接口

  • 基于页面的应用程序

  • JIT编译器和页面缓存

  • 数据库连接管理

  • 表格处理

  • 索引机制

  • 分布式对象

  • 与NT性能监控台结合使用

  • 手动配置

下面将详细的描述这些功能。

多线程体系

ColdFusion 服务器是运行于 NT 或 Solaris 的 32 位多线程系统。这种系统使 ColdFusion 支持多用户访问。多线程结构允许每个用户的请求都作为系统中的一个线程单独执行,各线程的处理是由操作系统来完成的。多线程服务器结构使应用服务器能运行于多 CPU 的主机,NT 和 Solaris 支持均衡多处理(SMP),它允许应用程序运行于有多个处理器的主机上。当主机上的 CPU 增加时,ColdFusion的处理能力也随之增加。

高级线程池

Web应用服务器还提供线程池,线程池使用I/O端口并与Web 服务器API紧密结合。采用这种方式,可大大提高多线程的处理能力,并提高ColdFusion的性能。

用户缓存管理

ColdFusion提供优化的本地缓存管理,减少了申请和释放内存的花销。

Web服务器接口(APIs)

ColdFusion通过Microsoft, O’ Reilly, Netscape 和 Apache 等标准服务器API接口与通用的Web服务器集成。Web服务器接口如Netscape Server API (NSAPI) 和Microsoft Internet Server API (ISAPI)提供给CGI 来处理用户请求。使用服务器API 对后台应用程序提出请求时不需要再运行一个独立的程序,只要建立一个独立的线程即可。这也有利于建立一个更加可靠的操作环境,在其中Web服务器和ColdFusion服务器互不干扰。

ColdFusion通过”stub(Windows占位程序)”与服务器接口相连,该程序用

来连接Web服务器和ColdFusion服务器,它作为一个独立的处理过程在Web服务器主机上运行。通过Stub可有效的解决由于创建文件I/O和各种处理开销所造成的性能瓶颈。它的维护是由ColdFusion独立完成的。

基于页面的应用程序

ColdFusion使用基于页面的应用程序体系,这意味着当用户向服务器发出申请时,应用程序开始工作,整个过程一直持继到ColdFusion服务器动态的生成页面并返回给用户。传输完成后,用户断开与应用服务器的连接,消除为保持这个会话而作的额外开销。

基于页面的应用在web环境中具有较好的扩展性。在一段时间内,它只执行应用程序的一小块,仅提供终端用户需要的那部分功能。它不同与客户/主机或Java 应用,这些应用必须始终保持与应用服务器或后台数据库的会话和连接,它们需要传送更多的数据给终端用户,而这样作会引起性能的降低。(例如,大量的Java 类或ActiveX控制)。

JIT编译器和页面缓存

基于页面的服务器的一个潜在问题是当用户每次访问页面时,服务器都必 须从硬盘上读取该页并解释执行。ColdFusion为此提供了解决方案,服务器在每页第一次被调用时对它进行自动编译,并将编译结果放入缓存。ColdFusion使用这种及时的编译器来提高应用程序的性能,在大用户情况下,效果明显。

数据库连接管理

建立数据库Web应用的一个关键问题是如何管理多个用户对后台数据库的申

请。在传统的客户/服务器环境下,系统为每个申请访问的用户建立一条数据库连接。在这种模式下Web应用的扩展能力很大部分决定于后台数据库最大支持多少个连接。

Web应用服务器最大的改变就是当大量的用户访问Web 应用服务器时,他们能共享数据库连接。ColdFusion使用“数据库连接池”在多个用户请求中共享数据库连接。使用连接池,系统更容易管理大容量用户,因为可节省为打开和关闭每个用户与数据库连接而消耗的缓存和网络资源。当数据库连接不再使用, ColdFusion可释放它们所占用的内存供别的任务使用。

ColdFusion4.0对存贮过程提供更好的支持,对查询进行优化,提高查询性能。

表格处理

ColdFusion 中的表格处理引擎能自动将数据库中的动态内容转换为静态页面。对于那些不经常改变的数据,采用这种方式不需要花费额外的资源进行动态模块管理和数据库管理,故能为用户提供较高的传输速率。例如,数据库不用为每次提出申请的用户动态生成报表,只需定期进行处理并生成静态的 HTML 返回给用户,这样不会对数据库造成额外的负担。

索引机制

ColdFusion服务器包括嵌入式、高性能文本索引和查找机制。Search ’ 97为开发者查找文本数据提供了高性能的搜索引擎。如今Web应用已能够完成大型数据库中查找信息的功能。

ColdFusion的另一项特殊的功能是能在关系型数据库中索引和查找文本内容。

SQL最初的目的是为了查询和管理结构化数据,然而如今,使用关系型数据库存贮非结构化文本数据的优势已显而易见。越来越多的开发者要在数据库中存贮和查询文本数据,但SQL 并不适用于这种查询。利用ColdFusion的索引机制,应用程序可在RDBMS中对非结构化数据建立高性能的索引的查询。

分布式对象

ColdFusion支持COM和CORBA,它们允许使用类似于C/C++的底层语言创建的外部对象来完成应用中底层处理工作。ColdFusion提供两种增强性能,第一,复杂的处理可由C++ 、Java 语言来完成,以加快应用处理速度。第二,处理的负担能够被分配到对象服务器上,以提供最高的运行性能。

实际的ColdFusion负载能够被分配到一组服务器中,这些服务器使用HTTP连接。任何一个ColdFusion服务器都能向另一个服务器提出请求,并选择相对空闲的一台执行用户操作。

与NT性能监控器结合

ColdFusion 服务器与 NT 性能监控器紧密结合,能提供更好的管理和谐调能力。

手动配置

ColdFusion 的许多扩展功能依赖于指定硬件或服务器配置。通过管理器界面, ColdFusion 提供方便的远程和本地服务器设置。服务器管理者可控制许多与性能有关的设置,如线程、缓存大小、数据源连接池等。

集群环境下ColdFusion

当主机上有大量的 ColdFusion 应用在运行或某个 ColdFusion 应用要求高性能时, 它们可在服务器集群下运行。所谓服务器集群就是一组机器运行同一个应用,在终端用户看来,它们就象是一台主机。在集群中,服务器分担负载,处理故障。并且这些服务器易于管理。

集群服务器与单服务器相比有许多优点。在集群环境中,一旦某个主机负载过重,

ColdFusion工作方式 - 图2则可将它的一部分请求和负载转移到另一台主机上去,这样,终端用户将始终获得最佳性能。集群服务比单机服务有较高的可用性,因为一旦某主机故障,另一台主机将接手它所有的负载。最后,集群主机易于管理,在不中断服务的情况下,可将其中一台卸下进行维护。

由硬件进行负载均衡的 ColdFusion 集群

服务器集群可由专用硬件如 Cisco Local Director 或软件如 BrightTiger ClusterCATS来进行管理。本文档不对这些技术进行详细的介绍。但,凡可用来配置标准服务器集群的设备即可用来对ColdFusion集群服务进行设置。

集群配置

ColdFusion4.0(Enterprise 版本)为 Web 应用服务器集群提供强劲的配置和管理功能。它使用 Bright Tiger ClusterCATS 技术来支持高性能多主机集群。有了这种技术, ColdFusion 可完成包括电子商务在内的一些要求高性能的应用服务。

ColdFusion工作方式 - 图3

由软件进行负载均衡的 ColdFusion 集群

负载均衡

ColdFusion4.0集群技术支持灵活的负载均衡。一旦配置完毕,ColdFusion 集群中主机自动均分负载。ColdFusion 对负载均衡进行优化并提供一套易于使用的远程管理工具对它进行管理。

高性能

ColdFusion 集群支持开放式用户状态仓库及故障处理。集群服务器在一个共享仓库中放置终端用户信息,这样不会由于集群中某一台主机的故障而导致信息的丢失。一旦某主机故障,它的负载将会由另一台主机自动接手完成。不同于基于硬件的解决方案,ColdFusion 的负载均衡和故障处理系统是智能的、基于软件的,它不会出现单点失败。