|
| |
名片设计 CorelDRAW Illustrator AuotoCAD Painter 其他软件 Photoshop Fireworks Flash |
|
Microsoft Application Center 2000 组件负载平衡技术概述 作者:Chris Rees 本技术概述将讨论 Microsoft Application Center 2000 (Application Center) 组件负载平衡技术 (CLB)。 引言 Microsoft Application Center 2000 (Application Center) 是 Enterprise Server 的一部分,而 Enterprise Server 是 Microsoft 公司推出的 .NET 概念的组成部分。Enterprise Server 包括的其它成员有:Commerce Server 2000、BizTalk Server 2000 和 SQL Server 2000。有关 .NET 的具体信息,请查看站点: http://www.microsoft.com/net 。 .NET 中 Application Center 的用途是,为基于 Windows 2000 和 Internet Information Services 5.0 的 Web 站点提供内容部署和治理功能。Application Center 使 Web 站点可伸缩、更强劲、易于治理而且更加安全。其核心思想就是由许多 Web 服务器组成一个群集,对客户来说,这个群集就是一个 Web 站点。与此相配合的思想是,被复制到所有群集成员的单个应用程序映像。应用程序映像含有商务解决方案所需的所有部分, 包括 Web 站点、注册表设置、文件、COM+ 组件等。通过反映群集当前状态的事件、性能计数器和监视器,可以很轻易地监视群集的运作状况。 Application Center 群集 通过Application Center,可以构建多级群集,它们可以使用各种负载平衡技术。负载平衡技术有助于 Application Center 提供可伸缩性和稳定性。有两种负载平衡技术受到支持:
Application Center 群集的拓扑结构决定了该如何支持负载平衡技术。一种典型的 Application Center 群集拓扑是以 n 层解决方案为基础的,这种解决方案中包括一个 Web 层群集,用来为客户机提供内容服务。这种 Web 层群集就使用了 IIS 和网络负载平衡 (NLB) 来满意传入的 IP 哀求。 file:///F:/My%20Work/技术文档/服务器群设置/Microsoft%20Application%20Center%202000%20组件负载平衡技术概述.files/CLBOVR01.gif 图 1 Application Center 群集的典型拓扑结构 Web 层群集上的软件(ASP 页等)可以在本地计算机上创建和使用 COM+ 组件,或者在另一台远程计算机上通过使用分布式 COM 创建和使用 COM+ 组件。假如没有 CLB,远程活动将是静止的,因为它与已经加在远程服务器上的工作负载无关。这就是 CLB 的真正用途 ― 让安装在独立服务器群集上的 COM+ 组件进行可靠、可伸缩和负载平衡地操作。 网络负载平衡 网络负载平衡 (NLB) 是 IP 负载平衡技术,它是 Windows 2000 Advanced Server 和 Windows 2000 Data Center 的一部分。有了 NLB,传入的 TCP 通信、用户数据报协议 (UDP) 通信和一般路由封装 (GRE) 通信哀求被分发给各个群集成员。分发的依据是基于服务器负载百分比设置的统计算法。NLB 提供了动态伸缩功能,即在不影响客户机的情况下,自动适应群集内服务器的添加和删除。NLB 是鲁棒的,因为它可以检测到服务器故障,并将其从正运行的群集内静静地删除。 Application Center 大大简化了对基于 NLB 的群集的治理。Application Center 群集创建向导会自动配置 NLB 设置。这比单机使用 Windows 2000 时所需的步骤要简朴得多。Application Center 还易于在群集内添加、删除服务器,以及将服务器置于联机/脱机状态。 有关 NLB 的具体信息,请查看站点:http://www.microsoft.com/windows2000/library/howitworks/cluster/nlb.asp。 组件负载平衡 组件负载平衡技术可以使 COM+ 组件实现负载平衡。COM+ 组件是经过编译的软件对象,可用于多种不同语言,包括 VBS、ASP、Visual Basic 和 C++。它们提供了一种很有用的方式,用来把软件绑定到方便且可重用的实体中。在 CLB 中,COM+ 组件位于独立的 COM+ 群集内的服务器上。旨在激活 COM+ 组件的调用被均衡地加载到 COM+ 群集内的各个服务器上。如图 1 所示,CLB 软件的决策元素运行在 Web 层上。有些收集信息的 CLB 软件的确在 COM+ 群集上运行。 组件对象模型 CLB 的根部是组件体系结构,这一结构由组件对象模型 (COM) 构成。当根据这一标准编写基于对象的软件时,该标准提供了一种使软件服务可用的通用机制。它答应以各种语言、在各种操作系统中编写软件。实现这种灵活性的要害是 COM 接口。 COM 组件的功能通过一个或多个接口来实现。要想使用 COM 组件,客户软件必须以一种知道如何处理接口的语言编写。Visual Basic、ASP、VBS、JavaScript 和 Visual C++ 等语言都是可以的。接口本身只是一个由数字组成的表,其中保存着该接口所支持的方式的地址。 file:///F:/My%20Work/技术文档/服务器群设置/Microsoft%20Application%20Center%202000%20组件负载平衡技术概述.files/CLBOVR02.gif 图 2 COM 组件上的接口 通常,COM 组件位于动态链接库 (DLL) 或者可执行文件 (.exe) 内。它们可以安装在客户机上,也可以位于远程计算机上。当它们被远程使用时,由基于远程过程调用 (RPC) 的分布式 COM (DCOM) 机制来完成调用。 COM+ 服务 COM+ 服务是 Windows 2000 操作系统的一部分,提供了一套基于 COM 和 Microsoft Transaction Sever (MTS) 的服务。COM+ 服务提供了企业级功能,如事务支持、对象生存期服务、安全服务、事件、排队组件等。 COM+ 组件 COM+ 组件是可以利用 COM+ 服务的 COM 组件。对 COM+ 组件的要求之一是它要携带配置信息。配置信息是一组属性,它们使得底层 COM 体系结构能够查明特定的 COM+ 服务(例如事务支持,还有后面我们将要提到的负载平衡)是否被支持。 COM+ 组件被集合组成称为“应用程序”的软件包,这里的应用程序不同于 Application Center 应用程序。COM+ 应用程序是一组 COM+ 组件,而 Application Center 应用程序则是商务解决方案中使用的一系列资源。这方面的例子有 Web 站点、文件、COM+ 组件,以及注册表项。 组件负载平衡的工作方法 CLB 有两大部分:
CLB 软件 CLB 软件负责确定激活 COM+ 组件时使用 COM+ 群集成员的顺序。 用于创建 COM+ 组件的业务逻辑运行在 Web 层群集上。这通常是一个 Visual Basic ASP 脚本,当要求使用 COM+ 组件时,该脚本便调用 CreateObject。(在内部被转变为对 CoCreateInstance 的调用)。使用 CLB 时,不是在本地服务器上创建组件,而是用路由列表和服务器响应时间表来帮助把 COM+ 组件激活哀求传递到已实现负载平衡的 COM+ 群集。然后,COM+ 群集成员创建组件并对客户机返回一个接口。组件一经创建,CLB 就不再对其进行更多的操作。 路由列表路由列表存在于每个 Web 层群集成员上,其中含有需要进行负载平衡的 COM+ 群集成员列表,如图 3 所示。另外,路由列表还存在于一个称为 COM+ 路由群集的位置。这个位置只用于路由,而没有 Web 层功能。本白皮书将重点介绍 Web 层方案。 file:///F:/My%20Work/技术文档/服务器群设置/Microsoft%20Application%20Center%202000%20组件负载平衡技术概述.files/CLBOVR03.gif 图 3 路由列表和响应时间 路由列表最初由 Web 层群集控制器上的治理员创建,然后自动与每个群集成员保持同步。这样一来,就不可能(实际上也不可取)让群集成员具有的路由列表中包含变化的 COM+ 群集成员。在每个 Web 层群集成员上都有路由列表的一大长处是,消除了单点故障。假如某个 Web 层群集成员停止运行(无论是否故意),其它成员将继承通过自己的路由列表对 COM+ 群集进行负载平衡。 响应时间表每隔 200 毫秒,运行在每个 Web 层群集成员上的 CLB 软件就对自己路由列表中的每个成员进行轮询。自此,就在内存中创建了一个表,其中以响应时间为等级列出了 COM+ 群集成员 ― 响应越快的成员在表中的地位就越高。Web 层成员以循环的方法使用响应时间表,以此将接收到的激活哀求传递到 COM+ 群集成员。这意味着,当接收到激活哀求时,响应最快、最不繁忙的 COM+ 群集成员被首先使用,次快的成员被用来处理下一个哀求。响应时间表用完之后,下一个哀求将被发送到表中的第一条。就这样依次处理后面的激活哀求。这种情形将继承下去,直到对响应时间作了更新为止,并且激活哀求被重设到新负载平衡表的开头。 每个 Web 层群集成员都拥有自己的 COM+ 群集成员响应时间表。不要试图在整个 Web 层群集内让这些值保持同步,因为路由列表的复制速度跟不上 COM+ 群集负载的变化。 COM+ 群集 在 Web 层群集内,治理员利用 Application Center 群集创建向导来创建 COM+ 群集。每个群集成员都必须装有一样的 COM+ 组件副本。有一个部署向导可用来安装组件。组件一经创建,就必须知道自己是在 CLB 群集内。 支持群集的 COM+ 组件 为了使用 CLB,必须编写 COM+ 组件来确认它们所处的状况。其要害问题是组件状态。在 COM+ 中,组件不应该保留每个组件的状态信息,因为这样会对可伸缩性和事务治理有负面影响。可伸缩性之所以会受影响,是因为假如组件是有状态的,就无法被重新利用。事务治理之所以会更复杂,是因为每个组件的状态无法穿过事务边界。使用 CLB 时还要考虑其它的因素。从本质上讲,不必担心成员节点的位置,因为在 CLB 群集的任何成员上都可以创建组件。例如在 COM+ 中,全过程存储可以用来存储对服务器上运行的多个组件都有用的信息。在 COM+ 群集内使用这一技术时需要细心的治理,因为无法保证一个组件将在哪个成员上创建。这样一来,后面对于组件的再激活将有可能发生在别的群集成员上。这就使得组件丧失了对前一个成员上的全过程存储的访问权。 组件状态要么应保存为永久状态(如 DBMS),这样可以从任何群集成员访问它;要么应保存在客户机上(如 Cookie 信息就保存在 Internet 客户机上)。 建立组件负载平衡 以下是建立 COM+ 群集所需的步骤。这些步骤基于 Application Center Beta 2 中的功能。
这样就可以了。一旦所有的东西安装完毕,代表客户端运行的 Web 层软件将使用 COM+ 群集内的 COM+ 组件,COM+ 组件的位置不会对此操作有影响。 返回类别: 教程 上一教程: 检测客户端显示器分辨率、浏览器类型和客户端IP 下一教程: 用C#写vs插件中的一些Tip 您可以阅读与"转贴:Microsoft Application Center 2000 组件负载平衡技术概述(1)"相关的教程: · 转贴:Microsoft Application Center 2000 组件负载平衡技术概述(2) · .NET语言的选择 [特殊推荐] (转贴) · .Net 下对SqlServer2000中的存储过程的调用 · .net框架程序设计读书笔记二(Microsoft .net 框架开发平台体系架构) · ANN:Microsoft Releases Shared Source CLI and C# Implementation |
| 快精灵印艺坊 版权所有 |
首页 |
||