CN1292118A - 网络上的动态分布式计算的方法和设备 - Google Patents
网络上的动态分布式计算的方法和设备 Download PDFInfo
- Publication number
- CN1292118A CN1292118A CN99803347A CN99803347A CN1292118A CN 1292118 A CN1292118 A CN 1292118A CN 99803347 A CN99803347 A CN 99803347A CN 99803347 A CN99803347 A CN 99803347A CN 1292118 A CN1292118 A CN 1292118A
- Authority
- CN
- China
- Prior art keywords
- server
- task
- client
- computer
- result
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17306—Intercommunication techniques
- G06F15/17318—Parallel communications techniques, e.g. gather, scatter, reduce, roadcast, multicast, all to all
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44568—Immediately runnable code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5044—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
- G06F9/548—Object oriented; Remote method invocation [RMI]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/42—Loop networks
- H04L12/427—Loop networks with decentralised control
- H04L12/433—Loop networks with decentralised control with asynchronous transmission, e.g. token ring, register insertion
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/549—Remote execution
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computing Systems (AREA)
- Computer And Data Communications (AREA)
- Multi Processors (AREA)
Abstract
在一客户—服务器环境中,想要具有许多能处理广泛的应用程序的服务器,这些应用程序诸如计算密集应用程序或诸如描绘等图形操作。在异构客户—服务器环境中,常规的系统把可执行程序静态地存储在服务器上以便今后执行。这要求应用程序从具有不同目标模块的客户机装入服务器,需要大量存储量和许多编程员的时间。本发明通过在一异构客户—服务器网络中产生一同构执行环境解块了这些问题。相应地,本系统把代码动态地下载到计算机服务器上,在计算机服务器上执行该代码并把结果返还调用客户方法。此技术不需要下载多个代码拷贝也不需要进行编译,因为可在所有不同的系统上执行服务器代码。依据本技术设计的系统也是有效的。一般,在客户上就地编译服务器代码,并把该服务器代码作为字节码下载到服务器然后执行。
Description
技术领域
本发明涉及分布式计算系统,尤其涉及在网络上进行动态分布式计算的方法和设备。
背景技术
在分布式计算网络中,用户可利用耦合到网络的大量计算机的处理能力。可通过分割网络上不同计算机中的处理,可快速地并行处理具有许多不同的独立计算的任务。此外,通过定位网络上最适用于处理数据的计算机,可更快地计算专门任务。例如,在客户系统上完成需大量浮点计算的任务,可在耦合到网络的服务器系统上更快地执行,后者具有适用于这些特定计算的专用浮点硬件。
不幸的是,不容易在典型的异构计算环境中实现用于分布式计算的常规技术。通常,网络上的每个计算机是异构的,它包含不同的处理器和操作系统组合,而且需要执行不同的目标模块。在客户一侧,不同的目标模块需要用户对每个不同的平台编译不同版本的任务,并把此模块装载到相应平台上,从而增加对每个客户的存储要求,还需要多次进出和编译相同的任务。此外,常规的技术需要在执行代码前很早就要在计算机上分配代码。在常规系统中,进行分布式计算所需的大量准备妨碍了许多计算采用该技术。
基于脚本编排(scripting)语言的分布式计算系统是对某些常规分布式计算系统的改进。不幸的是,基于脚本编排的系统消除了对重新编译代码的需要,但它仍旧不是非常有效。基于脚本编排的分布式系统可在多个平台上执行相同的指令,因为该语言是由位于每个系统上的解释器来解释的。结果,大多数脚本编排语言较慢,因为它们必须把高级脚本编排指令实时地翻译成低级当地(native)指令。此外,脚本编排语言难于优化,且可能会浪费存储空间,因为通常不对它们进行压缩。
基于在常规系统中所发现的以上限制,想要改进分布式计算系统。
发明内容
在有关客户计算机的本发明的一个方面,提供了用于动态分布式计算的方法和设备。最初,客户从网络中选择一服务器来处理该任务。此选择可基于服务器的可用性或服务器的专门处理能力。接着,客户承接程序(stub)把参数和数据引入(marshal)到一任务请求中。客户把此任务请求发送到服务器,服务器启用通用计算方法。服务器自动地确定在服务器上是否可获得有关任务的类型并在必要时从网络下载这些任务类型。使用任务类型中的信息来提取存储在特定任务请求中的参数和数据。使用通用计算方法在选中的服务器上执行该任务请求。在服务器处理了该任务请求后,客户接收从选中服务器返回的结果或经计算的任务。
在有关服务器计算机的本发明的另一个方面,提供了动态分布式计算的方法和设备。最初,服务器将自动地确定服务器上可获得哪些任务类型,并将在必要时从网络下载任务类型。这些任务类型有助于服务器从一任务请求中引出(unmarshal)参数和数据并产生一本地任务。接着,服务器启用能处理所有类型的计算任务或子类型的计算任务的通用计算方法。使用通用计算方法在选中的服务器上执行此任务请求。如果随后的任务要使用结果,则服务器把来自经计算的任务的结果存入本地高速缓冲存储器中。一旦完成该任务,服务器就把结果或经计算的任务返还客户。
附图概述
包含在本说明书中并构成其一部分的附图示出本发明的一个实施例,这些附图与描述一起用来说明本发明的优点和原理。
在图中:
图1示出适用于符合本发明的方法和系统的网络;
图2是适用于符合本发明的方法和系统的计算机系统的方框图;
图3是适用于使用符合本发明的方法和系统的客户-服务器网络环境的方框图;
图4是客户依据符合本发明的方法和系统所进行的步骤的流程图;以及
图5是服务器依据符合本发明的方法和系统所进行的步骤的流程图。
介绍
现在将详细地参考附图所示的本发明实现。可能时,在附图和以下描述中使用相同的标号来指示相同或相似的部分。
符合本发明的系统解决了已有技术的缺点并提供了在服务器计算机的网络上使用的动态分布式计算系统。这种动态分布式计算系统尤其有用于异构计算机网络,该网络具有包含不同处理器、不同操作系统及其组合的计算机。这种系统使得客户应用程序可选择一处于实时运行的服务器计算机来执行特定任务。在符合本发明的方法和系统中,该任务是一具有特定类型或类定义的对象。一般,服务器可能推迟知道实际类定义,直到在服务器上接收到有关此对象任务的参数和数据。结果,如果在服务器上不能获得此特定类型,则服务器下载此特定类型。例如,如果未知类的对象实例传递到该服务器,该服务器下载该未知类。然后,服务器使用该类来处理对象。这种推迟把类定义分配给对象增强了在服务器计算机的网络上处理复杂任务的灵活性。此外,本设计通过利用现有的远程过程调用子系统(诸如加里福尼亚州Mountain View的Sun Microsystems Inc.所开发的远程方法启用(RMI)子系统)中的特征以最小的额外开销来促进灵活性。对于有关远程方法启用(RMI)的进一步信息,见由Ann M.Wolrath、James Waldo和Roger Riggs于1996年4月23日提交的名为“有助于装载“承接程序”信息以使得在一地址空间内操作的程序可启用另一地址空间内的远程方法或过程的处理的系统和方法”的08/636,706号未决美国专利申请,该申请已转让给本发明的受让人并在这里引用作为参考。此外,在FTP://ftp.javasoft.com/docs/jdk1.2/rmi-spec-jdk 1.2ps的JavaSoft WebPage(网页)上更详细地描述了RMI,也在这里引用作为参考。
与常规的系统不同的是,符合本发明的动态分布式系统中的任务可被写一次,且该任务可在网络中的任何服务器计算机上执行。此能力在异构网络中尤其有优势,因为不必在执行该任务前使该任务进出每一个平台。而是,把依据本发明设计的通用计算任务装载在每个系统上。此通用计算任务能执行客户在运行时所指定的广泛类型的任务。例如,可开发一种所谓的“Compute(计算)”类型以及一种以面向对象的语言(诸如Java)来接受此“计算”类型的通用计算任务。在许多文章中描述了Java,包括1996年由James Gosling、Bill Joy和Guy Steele、Addison-Wesley写的名为“Java语言说明书”的文章,这里通过引用作为参考。客户产生具有“计算”类型的子类型的任务,并把相应于此任务的对象传递给服务器上的通用计算任务。远程过程调用机构把此对象下载到服务器和执行此任务的通用计算任务。
在Java中,客户所发送的任务实际上是包括一系列字节码的对象。只要服务器实现了Java Virtual Machine(虚拟机)(JVM),就可立即执行这些字节码。JVM可直接以硬件来实现,或者它可有效地以在当地操作系统顶部运行的软件层来模拟。把Java语言设计成在具有Java虚拟机(JVM)说明书所指定的特性的计算系统上运行。在Addison Wesley的名为Java虚拟机说明书的文章中更详细地描述了JVM说明书,这里引用作为参考。此统一的JVM环境使得即使计算机系统为异构且具有不同处理器、不同操作系统及其组合时也可同构地执行任务。依据本发明的设计,把强大的远程过程调用子系统与服务器上的通用计算任务相组合产生了强大的动态分布式计算环境。
使用字节码的计算机服务器可处理任务的速度比使用基于脚本编排语言的常规文本或基于语言的其它字符的系统快得多。每个字节码是紧凑的(8位)且具有数字格式。结果,服务器计算机在运行时不必花费计算机周期对字符和自变量进行分析(parse)。此外,可在把字节码传输到服务器前在客户处优化这些字节码。服务器可任选地在运行时使用诸如Just-in-Time(及时)(JIT)编译器把字节码转换成当地指令以直接在硬件上执行。对于有关JIT编译器的更多信息,见Java虚拟机说明书。
依据本发明设计的系统假设每个客户能通过诸如TCP/IP等公共网络协议与每个服务器进行通信。此外,假设在客户和服务器上存在远程过程调用(RPC)子系统,该子系统能接收来自客户的远程请求并在服务器上执行这些请求。此RPC系统还在运行时自动地下载完成该任务所需的代码和有关信息。Sun MicrosystemsInc.所开发的RMI是提供这些特征的适当的RPC子系统。然而,本领域内的技术人员将理解,代替RMI,可使用诸如Microsoft Inc.的DCOM/COM等其它RPC子系统。
计算机网络
图1示出可实现本发明的一个实施例的网络100。网络100的本质结构中包括局域网(LAN)101、主干或广域网(WAN)112及局域网(LAN)116。LAN 101包括一系列工作站和服务器计算机102、104、106和108。LAN 116包括一系列工作站和服务器计算机118、120、122和124。这些计算机系统102-108及118-124耦合在一起,以共享信息、发送数据及共享计算能力。使用网络互连设备110把LAN 101耦合到较大的整体网络。网络互连器件的特定类型可以是路由器、交换器(switch)或与特定网络结构有关的网络集线器(hub)。一般,网络互连器件110包括路由器、交换器、网络集线器或能把LAN 101、WAN 112和LAN 116与用户终端连接成综合网络的任何其它网络互连器件。网络互连器件114也可包括路由器、交换器、网络集线器或能把LAN 116上的计算机与用户终端耦合成综合网络的任何其它网络互连器件。一般,依据本发明设计的动态分布式计算系统通常位于耦合到网络100的每个计算机系统上。相应地,每个计算机可依据所构成的特定请求和所提供的服务而作为客户或服务器进行操作。通常,客户请求在服务器计算机上计算一任务,服务器计算机将处理该任务。
计算机系统
现在参考图2,示出适用于实行符合本发明的方法和系统的计算机系统的系统体系结构。示例的计算机系统只是为了描述的目的。虽然此描述可参考在描述特定计算机系统(诸如IBM PS/2个人计算机)时所常用的术语,但此描述和概念同样适用于其它计算机系统,诸如网络计算机、工作站、甚至是体系结构与图1不相似的大型计算机。
此外,虽然本发明同样可应用于具有类似要求的其它计算机系统,但参照实现Java编程语言和Java虚拟机说明的计算机系统来描述本实现。具体来说,以面向对象和非面向对象的编程系统来实现本发明。
计算机系统200包括中央处理单元(CPU)105(它可以常规的微处理器来实现)、用于暂时存储信息的随机存取存储器(RAM)210和用于永久性存储信息的只读存储器(ROM)215。设有用于控制RAM 210的存储器控制器220。
总线230使计算机系统200的部件互连。设有用于控制总线230的总线控制器225。使用中断控制器235来接收和处理来自系统部件的各种中断信号。
可通过软盘242、CD ROM 247或硬盘驱动器252来提供海量存储。可经由诸如软盘242和CD ROM 247等可移去的媒体与计算机系统200交换数据和软件。软盘242可插入软盘驱动器241,继而软盘驱动器241由控制器240连到总线230。类似地,CD ROM 247可插入CD ROM驱动器246,继而CD ROM驱动器246由控制器245连到总线230。硬盘252是由控制器250连到总线230的固定磁盘驱动器251的一部分。
可由许多器件向计算机系统200提供用户输入。例如,键盘256和鼠标器257通过控制器255连到总线230。对本领域内的技术人员很明显的是,需要时,可把诸如笔和/或输入板等其它输入器件连到总线230和适当的控制器及软件。设有用于对RAM 210进行直接存储器访问的DMA控制器260。由控制视频显示器270的视频控制器265来产生视觉显示。
计算机系统200还包括通信适配器290,该适配器使得该系统可与局域网(LAN)或广域网(WAN)(如总线291和网络295示意所示)互连。
计算机系统200的操作通常由操作系统软件来控制和协调。操作系统控制系统资源的分配并进行诸如处理调度、存储器管理、网络连接和服务等任务。
动态分布式计算
动态分布式计算通常是一个客户服务器过程。对所进行的每个调用建立客户-服务器关系,通常其作用是可以改变的。通常,把客户定义为作出调用以请求位于服务器处或由服务器所控制的资源的过程。在此情况下,也可把执行请求过程的计算机或处理器叫做客户。然而,这些作用可依据信息的上下文和所发生的特定处理而改变。
图3是用来实现本发明的一个实施例的客户-服务器网络环境的方框图。该图包括强调本发明的一个实施例的与本发明最有关的那些子系统。根据实际实现,可能需要未包含在图3中的附加子系统。
相应地,图3包括客户302、服务器316和对象/方法资源库314,它们在操作时都耦合到网络312。客户302包括作出远程计算调用306以在远程服务器计算机上处理任务的应用程序304。通常使用在RMI说明书中所述的远程过程调用子系统产生的远程承接程序310用来使有关特定远程计算机调用306的参数和数据形成包。典型的客户还可包括本地对象/方法308的集合,它可包含调用远程计算调用306以执行的任务客户302类型。或者,任务可位于对象方法资源库314中,并可在需要时被计算方法320所访问。服务器316包括远程框架(skeleton)322来引出从客户发送的参数和数据。远程框架322准备计算方法320所使用的信息。本地对象/方法324还包括客户302可请求服务器316进行处理的任务。
在操作中,远程计算调用306调用计算方法320来处理特定任务。远程承接程序310引入有关调用方法的信息,使服务器316上的计算方法320可执行该任务。远程承接程序310还可引入被服务器302上的计算方法320用作自变量的基本参数。远程框架322接收该任务并引出在该网络上接收到的数据和参数,提供给计算机方法320。如果在服务器316上不可获得任务和相关的类型,则框架从客户302、对象/方法资源库314或丢失类型的某些其它安全可靠的资源下载该类型。类型信息映射了数据在对象中的位置,并使远程框架完成对该对象的处理。RMI(未示出)是一个能提供远程承接程序310和远程框架322的远程过程调用(RPC)系统。一旦对象已被框架处理,计算方法320就执行该任务并把经计算的任务或经计算的任务的结果返还客户302。
图4是客户利用本发明的动态分布式计算系统和方法所进行的步骤的流程图。最初,客户从网络中选择处理该任务的适当服务器(步骤402)。选择标准可根据服务器计算机集合中的整个处理负荷分布或每个服务器计算机的专门计算能力。例如,可使用负荷平衡技术来自动地确定在给定的时刻具有最少负荷的计算机。此外,客户可选择具有诸如图形加速器或数学协处理器等专门硬件的某些计算机,因为该任务具有诸如描绘(render)三维线框等大量的图形计算,或者必须进行许多浮点计算。
一旦服务器被选中,则客户在选中的服务器上启用远程计算方法(标准404)。诸如RMI等RPC系统有利于在服务器计算机上启用远程计算方法。典型地,客户只需要知道远程计算方法可被用作在远程计算机上处理特定任务的渠道。例如,在Java中,在客户上所执行的远程指令“Server.runTask(new PI(1000))”使得在“ComputerServer”类型的远程服务器“Server”上启用远程方法“runTask”。这一步骤通过远程方法“runTask”把任务(在此情况下,任务是由“new PI(1000)所例示的类型任务对象)作为一个参数提供给通用计算方法。服务器上的“runTask”方法实现一Compute远程接口。可选择地,该指令可向服务器指示应把来自经计算的任务的结果存入选中服务器上的结果高速缓冲存储器中。这使得随后的任务可在叠代(iteration)间共享结果。例如,计算“PI”得到的结果以后可被使用“PI”的值计算球的体积或完成另外精确计算的另一远程方法所使用。
接着,使用承接程序把参数和数据引入到一任务请求中。然后,把此任务请求提供给选中的服务器。典型地,任务请求包括该任务的数据和参数以及该类型或类(如果它不在服务器上)的网络位置。服务器上的框架使用该类型或类信息来处理对象并引出数据和参数。在使用Java和RMI的系统中,任务请求是一对象,类位置信息包含在代码库(codebase)URL(全球记录定位器(universal recordlocator))参数中。在RMI说明书中包含了与此有关的进一步详细信息。服务器可调度立即执行该任务或一旦服务器找到执行任务的适当时间时执行该任务。在服务器进行计算后,客户接收来自经计算的任务的结果(步骤408)。
图5是符合本发明的动态分布式计算系统和方法所进行的步骤的流程图。最初,服务器上的框架引出来自任务请求的参数和数据并重新产生与发送时相同的原始任务(步骤504)。这些参数的引出可包括下载几个附加类型。框架确定在该服务器上是否可获得有关任务请求的类型(步骤506)。如果不能获得有关任务请求的类型,则框架必须从网络上的区域之一下载该任务(步骤509)。例如,如果“PI()”类型不在服务器上,则框架服务器将从客户下载这一类型。框架使用该类型或类来映射该对象中的数据并引入参数和数据。
典型地,客户将指示请求包中特定类型所在的地方。框架可从对象/方法资源库中下载被请求的类型并可高速缓存此类型用以将来的服务器请求。此外,被请求的类型也可位于客户上。例如,在Java和RMI中,包含特定类型的类位于客户所发送的给定代码库URL(全球记录定位器)中。RMI中的动态类装载特征有利于使用代码库自动地下载类。这些类型使得框架可分析任务请求并提取适当的数据和参数。以上简述的步骤使得可容易地获得进一步处理用的参数和数据。
一旦可获得适当的类型,则框架启用通用计算方法(步骤508)。然后,服务器上的通用计算方法执行被客户所请求的特定任务(步骤510)。例如,假设客户调用“ComputeServer.runTask(new PI(1000))”。框架将在服务器上启用通用计算方法“runTask”。“runTask”方法调用嵌入用户所调用的任务中的“run()”方法。此外,“runTask”方法实现了保持与客户的远程连接的远程接口“Compute”。在客户或服务器上的预定设置的选项处,如果后续的任务将使用来自经计算的任务的结果,则框架把这些结果存入高速缓存存储器中。作为服务器上的最后一个步骤,通过在服务器上执行“return t.run()”把经计算的任务或结果返还客户(步骤512)。
示例实现
依据本发明,提供以下代码样本作为一个实现。虽然以面向对象的Java编程语言来提供本例,但也可使用其它编程语言。例如,服务器可包括以下Java码:
THE TASK
public interface Task extends Serializable{
//This interface allows a class(the“PI”
//class)to implement the abstract
//run() class
{
Public Object runO;
}THE REMOTE INTERFACE:import java.rmi.*;public interface Compute extends Remote {
//The RMI/RPC Interfacepublic Object runTask(Task t)throws RemoteException;
//The abstract runIt method}
//abstract “runTask” method// ...Code in this area is used for initializing the routine with RPC system
public Object runTask(Task t)throws RemoteException
//runTask implements the abstract method
//defined in ComputerServer interfacereturn t.run(); //可在在进行符合本发明的动态分布式计算的客户上使用以下示例Java码。class PI {private int precision;PI (int howManyPlaces) { //sets precision of PI value to be calculated later
precision=howManyPlaces;}public Object runO { //implement the abstract run method in the
//compute interfacedouble pi=computePIsomehow(precision);//calcualate pireturn new Double(pi);}public static void main (String[] args) {ComputerServer server=getAComputerServer(); //Select a server from
//the network
//and store in remote
//compute call to RMI
//RPC abstract remote
//interfaceDouble pi=server.runTask(new PI(1000));//implement abstract remote
//to execute a“pi”computation
//defined in “PI”class.System.out.println("PI seems to be"+pi);//return results in“pi”variable
//and print to standard out
虽然这里为了说明的目的描述了特定实施例,但可进行各种修改而不背离本发明的精神和范围。本领域内的技术人员理解,本发明可以在各种硬件和软件平台来实现,且不限于以上所讨论的传统路由器、交换器和智能网络集线器。相应地,本发明不限于以上所描述的实施例,而根据附加权利要求书按照整个等价范围来限定。
Claims (27)
1.一种在一计算机系统上执行的方法,该计算机系统具有主存储器件、次级存储器件、显示器件和输入/输出机构,该方法使得客户给服务器计算机集合中的一个服务器计算机动态地分配以与每一个服务器计算机兼容的编程语言所开发的任务,其特征在于所述方法包括以下步骤:
根据服务器集合中的整个处理负荷分布和每个服务器计算机的专门计算能力,从多个异构服务器中选择一个服务器来处理一任务;
把参数和数据引入到一任务请求中,这一步骤进一步包括以下子步骤,
确定在选中的服务器上是否存在与被请求的任务有关的代码和数据类型,以及
当选中的服务器上不存在该代码和数据类型时,把代码和有关的数据类型下载到选中的服务器上;
启用有关选中服务器的通用计算方法,这一步骤执行任务且进一步包括以下子步骤,
把任务作为参数提供给通用计算方法,以及
向服务器指示应把来自于经计算的任务的结果存入选中服务器上的结果高速缓冲存储器中以便使随后的任务使用;以及
接收从选中服务器返还的经计算的任务以在客户上进行进一步处理。
2.一种在包含在一计算机系统内的处理器上执行的方法,该计算机系统具有主存储器件、次级存储器件、显示器件和输入/输出机构,该方法使得与一服务器集合相连的一个服务器动态地接收和处理来自客户计算机的任务,其中该任务为与每一个服务器计算机兼容的可执行编程语言,其特征在于所述方法包括以下步骤:
把一任务请求中的参数和数据引出到一任务中,这一步骤进一步包括以下子步骤,
确定在该服务器上是否可获得有关该任务的类型,以及
当在该服务器上不能获得有关该任务的类型时,从客户所提供的参数所指示的位置把类型下载到服务器上;
启用能处理所有类型的任务的通用计算方法,这一步骤执行任务并产生结果;
如果随后的任务要使用来自所执行任务的结果,则把这些结果存入高速缓冲存储器中;以及
把来自所执行任务的结果返还客户。
3.一种在一处理器上执行的方法,所述处理器在操作上耦合到一服务器集合,所述方法使与该处理器相连的客户把一任务动态地分配给一服务器,其特征在于所述方法包括以下步骤:
选择一服务器来处理该任务;
从参数和数据中形成一任务请求;
把该任务请求发送到选中的服务器,这一步骤启用能在选中服务器上执行任务请求的通用计算技术并产生结果;以及
接收从选中服务器返还的结果。
4.如权利要求3所述的方法,其特征在于所述处理器在操作上耦合到一计算机系统,该计算机系统具有主存储器件、次级存储器件、显示器件和输入/输出机构。
5.如权利要求3所述的方法,其特征在于该任务是以与每一个服务器计算机兼容的编程语言和环境来开发的。
6.如权利要求3所述的方法,其特征在于所述服务器是从多个异构计算机系统中选出的。
7.如权利要求5所述的方法,其特征在于所述环境包括远程过程调用子系统。
8.如权利要求7所述的方法,其特征在于所述远程过程调用子系统是远程方法启用(RMI)系统。
9.如权利要求3所述的方法,其特征在于选择服务器的准则包括服务器计算机集合中的整个处理负荷分布。
10.如权利要求6所述的方法,其特征在于在预定的时间周期内,与诸服务器的平均负荷特性相比,选中的服务器具有最低的负荷特性。
11.如权利要求3所述的方法,其特征在于选择服务器的准则包括每一个服务器计算机的专门计算能力。
12.如权利要求11所述的方法,其特征在于专门计算能力包括描绘图像。
13.如权利要求3所述的方法,其特征在于发送步骤还包括以下子步骤:
确定在选中的服务器上是否存在有关被请求任务的代码;以及
当选中服务器上不存在所述代码时把该代码下载到选中服务器上。
14.如权利要求3所述的方法,其特征在于发送步骤还包括,
把任务作为参数提供给通用计算方法。
15.如权利要求3所述的方法,其特征在于还包括向所述服务器指示应把来自经计算的任务的结果存入选中服务器上的结果高速缓冲存储器中为随后的任务使用。
16.如权利要求3所述的方法,其特征在于所述结果用于在客户上进行进一步处理。
17.如权利要求3所述的方法,其特征在于结果是一对象。
18.一种在一处理器上执行的方法,所述处理器在操作上耦合到一服务器集合,所述方法使与所述处理器相连的一服务器动态地接收和处理来自客户计算机的任务,其中所述任务是与每一个服务器计算机兼容的可执行编程语言,其特征在于所述方法包括以下步骤:
从一个任务请求中检索参数和数据而形成一任务;
在服务器上启用能处理多个类型的任务的通用计算方法,这一步骤执行所述任务并产生结果;
把结果返还客户。
19.如权利要求18所述的方法,其特征在于所述处理器在操作上耦合到一计算机系统,该计算机系统具有主存储器件、次级存储器件、显示器件和输入/输出机构。
20.如权利要求18所述的方法,其特征在于该任务是以与每一个服务器计算机兼容的编程语言来开发的。
21.如权利要求18所述的方法,其特征在于该任务是使用Java编程语言和环境来开发的。
22.如权利要求21所述的方法,其特征在于所述环境包括远程过程调用子系统。
23.如权利要求22所述的方法,其特征在于所述远程过程调用子系统是远程方法启用(RMI)系统。
24.如权利要求18所述的方法,其特征在于检索步骤还包括以下子步骤:
确定在服务器上是否存在与任务有关的类型;以及
当服务器上不存在所述类型时把该类型从客户所提供的参数所指定的位置下载到选中服务器上;以及
根据客户所提供的数据和参数来执行任务。
25.如权利要求24所述的方法,其特征在于由远程过程调用(RPC)子系统来完成确定步骤和下载步骤。
26.如权利要求25所述的方法,其特征在于由远程过程调用子系统的远程方法启用(RMI)类型来进行确定步骤。
27.如权利要求18所述的方法,其特征在于还包括,如果在随后的任务中要使用来自所述任务的所述结果时把所述结果存入高速缓冲存储器中的子步骤。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US7604898P | 1998-02-26 | 1998-02-26 | |
US09/030,840 US6446070B1 (en) | 1998-02-26 | 1998-02-26 | Method and apparatus for dynamic distributed computing over a network |
US60/076,048 | 1998-02-26 | ||
US09/030,840 | 1998-02-26 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1292118A true CN1292118A (zh) | 2001-04-18 |
Family
ID=26706519
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN99803347A Pending CN1292118A (zh) | 1998-02-26 | 1999-02-25 | 网络上的动态分布式计算的方法和设备 |
Country Status (6)
Country | Link |
---|---|
EP (1) | EP1057101A2 (zh) |
JP (1) | JP2002505462A (zh) |
KR (1) | KR20010034542A (zh) |
CN (1) | CN1292118A (zh) |
AU (1) | AU2787699A (zh) |
WO (1) | WO1999044121A2 (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1308822C (zh) * | 2002-12-20 | 2007-04-04 | 国际商业机器公司 | 管理自主计算机系统中的工作负荷的方法和系统 |
CN100383745C (zh) * | 2004-03-10 | 2008-04-23 | 国际商业机器公司 | 促进异构计算环境中的资源分配的方法和系统 |
CN100450256C (zh) * | 2002-10-28 | 2009-01-07 | 中兴通讯股份有限公司 | 移动通信网络规划中小区覆盖文件的分布式处理方法 |
CN100470486C (zh) * | 2004-06-15 | 2009-03-18 | 索尼计算机娱乐公司 | 处理管理装置、计算机系统、分布式处理方法和计算机程序 |
CN101146116B (zh) * | 2006-09-11 | 2010-11-10 | 河南科技大学 | 一种基于网络的cad图形处理系统 |
CN101140525B (zh) * | 2007-10-17 | 2010-12-08 | 中兴通讯股份有限公司 | 分布式编译方法 |
CN101176079B (zh) * | 2005-03-16 | 2011-12-07 | 航空照片技术有限公司 | 在服务器和客户机之间分配计算的方法以及分布式计算机系统 |
CN101809597B (zh) * | 2007-09-26 | 2013-06-12 | 佳能株式会社 | 计算处理装置及方法 |
CN104794095A (zh) * | 2014-01-16 | 2015-07-22 | 华为技术有限公司 | 分布式计算处理方法及装置 |
CN104871133A (zh) * | 2012-12-18 | 2015-08-26 | 微软技术许可有限责任公司 | 基于服务器健康以及客户端信息的应用智能请求管理 |
CN105765578A (zh) * | 2013-11-26 | 2016-07-13 | 起元科技有限公司 | 分布式文件系统中的数据的并行访问 |
CN107194490A (zh) * | 2016-03-14 | 2017-09-22 | 商业对象软件有限公司 | 预测建模优化 |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6460082B1 (en) * | 1999-06-17 | 2002-10-01 | International Business Machines Corporation | Management of service-oriented resources across heterogeneous media servers using homogenous service units and service signatures to configure the media servers |
US7783695B1 (en) * | 2000-04-19 | 2010-08-24 | Graphics Properties Holdings, Inc. | Method and system for distributed rendering |
EP1314085B1 (en) * | 2000-05-09 | 2006-07-19 | Sun Microsystems, Inc. | Remote function invocation with messaging in a distributed computing environment |
JP2001344199A (ja) * | 2000-06-02 | 2001-12-14 | Nec Corp | 分散型処理システム及び方法並びに記録媒体 |
JP2002095071A (ja) * | 2000-09-13 | 2002-03-29 | Sanyo Electric Co Ltd | ネットワークシステム及び機器制御方法 |
DE60135200D1 (de) | 2001-01-31 | 2008-09-18 | Hewlett Packard Co | Verfahren und Gerät um Dokumente zu erstellen |
KR20030021114A (ko) * | 2001-09-05 | 2003-03-12 | 주식회사 미리텍 | 부하분산기 |
GB2380911B (en) * | 2001-10-13 | 2004-09-08 | Hewlett Packard Co | Performance of a multi-stage service within an information technology network |
KR100497353B1 (ko) * | 2002-03-26 | 2005-06-23 | 삼성전자주식회사 | 영상 처리 장치 및 처리된 영상을 수신하는 장치 및 방법 |
SE0203297D0 (sv) * | 2002-11-05 | 2002-11-05 | Ericsson Telefon Ab L M | Remote service execution in an heterogenous network |
CA2693426A1 (en) | 2007-10-20 | 2009-04-23 | Citrix Systems, Inc. | Methods and systems for remoting three dimensional graphical data |
US8169436B2 (en) * | 2008-01-27 | 2012-05-01 | Citrix Systems, Inc. | Methods and systems for remoting three dimensional graphics |
US8751844B2 (en) | 2009-09-24 | 2014-06-10 | Citrix Systems, Inc. | Systems and methods for attributing an amount of power consumption to a workload |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE69030340T2 (de) * | 1989-02-24 | 1997-11-20 | Digital Equipment Corp | Makler für die Auswahl von Rechnernetzwerkservern |
US5515536A (en) * | 1992-11-13 | 1996-05-07 | Microsoft Corporation | Method and system for invoking methods of an object through a dispatching interface |
US5742848A (en) * | 1993-11-16 | 1998-04-21 | Microsoft Corp. | System for passing messages between source object and target object utilizing generic code in source object to invoke any member function of target object by executing the same instructions |
US5630066A (en) * | 1994-12-20 | 1997-05-13 | Sun Microsystems, Inc. | System and method for locating object view and platform independent object |
US5928323A (en) * | 1996-05-30 | 1999-07-27 | Sun Microsystems, Inc. | Apparatus and method for dynamically generating information with server-side software objects |
US6360256B1 (en) * | 1996-07-01 | 2002-03-19 | Sun Microsystems, Inc. | Name service for a redundant array of internet servers |
-
1999
- 1999-02-25 JP JP2000533805A patent/JP2002505462A/ja active Pending
- 1999-02-25 EP EP99908442A patent/EP1057101A2/en not_active Withdrawn
- 1999-02-25 CN CN99803347A patent/CN1292118A/zh active Pending
- 1999-02-25 WO PCT/US1999/004064 patent/WO1999044121A2/en not_active Application Discontinuation
- 1999-02-25 KR KR1020007009483A patent/KR20010034542A/ko not_active Application Discontinuation
- 1999-02-25 AU AU27876/99A patent/AU2787699A/en not_active Abandoned
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100450256C (zh) * | 2002-10-28 | 2009-01-07 | 中兴通讯股份有限公司 | 移动通信网络规划中小区覆盖文件的分布式处理方法 |
CN1308822C (zh) * | 2002-12-20 | 2007-04-04 | 国际商业机器公司 | 管理自主计算机系统中的工作负荷的方法和系统 |
CN100383745C (zh) * | 2004-03-10 | 2008-04-23 | 国际商业机器公司 | 促进异构计算环境中的资源分配的方法和系统 |
CN100470486C (zh) * | 2004-06-15 | 2009-03-18 | 索尼计算机娱乐公司 | 处理管理装置、计算机系统、分布式处理方法和计算机程序 |
CN101176079B (zh) * | 2005-03-16 | 2011-12-07 | 航空照片技术有限公司 | 在服务器和客户机之间分配计算的方法以及分布式计算机系统 |
CN101146116B (zh) * | 2006-09-11 | 2010-11-10 | 河南科技大学 | 一种基于网络的cad图形处理系统 |
CN101809597B (zh) * | 2007-09-26 | 2013-06-12 | 佳能株式会社 | 计算处理装置及方法 |
CN101140525B (zh) * | 2007-10-17 | 2010-12-08 | 中兴通讯股份有限公司 | 分布式编译方法 |
CN104871133B (zh) * | 2012-12-18 | 2018-10-02 | 微软技术许可有限责任公司 | 基于服务器健康以及客户端信息的应用智能请求管理 |
CN104871133A (zh) * | 2012-12-18 | 2015-08-26 | 微软技术许可有限责任公司 | 基于服务器健康以及客户端信息的应用智能请求管理 |
CN105765578A (zh) * | 2013-11-26 | 2016-07-13 | 起元科技有限公司 | 分布式文件系统中的数据的并行访问 |
CN105765578B (zh) * | 2013-11-26 | 2020-04-17 | 起元科技有限公司 | 分布式文件系统中的数据的并行访问 |
US10776325B2 (en) | 2013-11-26 | 2020-09-15 | Ab Initio Technology Llc | Parallel access to data in a distributed file system |
US11599509B2 (en) | 2013-11-26 | 2023-03-07 | Ab Initio Technology Llc | Parallel access to data in a distributed file system |
CN104794095A (zh) * | 2014-01-16 | 2015-07-22 | 华为技术有限公司 | 分布式计算处理方法及装置 |
CN107194490A (zh) * | 2016-03-14 | 2017-09-22 | 商业对象软件有限公司 | 预测建模优化 |
Also Published As
Publication number | Publication date |
---|---|
JP2002505462A (ja) | 2002-02-19 |
WO1999044121A3 (en) | 1999-10-21 |
EP1057101A2 (en) | 2000-12-06 |
WO1999044121A2 (en) | 1999-09-02 |
AU2787699A (en) | 1999-09-15 |
KR20010034542A (ko) | 2001-04-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1292118A (zh) | 网络上的动态分布式计算的方法和设备 | |
US6446070B1 (en) | Method and apparatus for dynamic distributed computing over a network | |
US5915113A (en) | Visual application partitioning for creating distributed object oriented applications | |
JP4146983B2 (ja) | サーバ・オブジェクトのメソッドを呼び出すプロセス方法及びデータ処理システム | |
EP1076290B1 (en) | Method for on-demand network application download and execution | |
CN1149478C (zh) | 从本地码有效调用Java方法的方法和设备 | |
CN1281180A (zh) | 为应用程序透明地加载只读存储器中的资源 | |
US7490316B2 (en) | Method and apparatus to implement adaptive scripting tool | |
JP2000155686A (ja) | 分散システム中におけるプログラム実行方法及びその装置、分散システム中におけるプログラム実行手順を記憶したコンピュ―タ読み書き可能な記憶媒体及びコンピュ―タシステム | |
JP2000029714A (ja) | 分散システム中における実行用プログラムコンポ―ネントのパッケ―ジ方法、実行用プログラムコンポ―ネントのパッケ―ジプログラムを記憶したコンピュ―タ読み書き可能な記憶媒体及びコンピュ―タシステム | |
EP0540680A1 (en) | System for high-level virtual computer with heterogeneous operating systems | |
EP1190307A2 (en) | Method and system for dynamic proxy classes | |
CN100378657C (zh) | 用于改进java方法调用速度的方法和装置 | |
Peng et al. | A prototype software framework for internet-enabled collaborative development of a structural analysis program | |
Hu et al. | Design and implementation of a CORBA-based genome mapping system prototype. | |
Goscinski | Towards an operating system managing parallelism of computing on clusters | |
Grosso et al. | An Agent Programming Framework Based on the C# Language and the CLI | |
Judd et al. | The DOGMA approach to high-utilization supercomputing | |
Brinkley et al. | Slisp: A flexible software toolkit for hybrid, embedded and distributed applications | |
Meesala | Parallel processing implementation on clusters of terminals using Java RMI | |
Reinke | Towards a haskell/Java connection | |
JPH11249919A (ja) | 手続き呼出しの処理方法およびスタブ生成方法 | |
Bangay | Experiences in porting a virtual reality system to Java | |
Wong | The enterprise executive | |
Meesala et al. | Multiple Instruction Multiple Data (MIMD) Implementation on Clusters of Terminals |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C01 | Deemed withdrawal of patent application (patent law 1993) | ||
WD01 | Invention patent application deemed withdrawn after publication |