KR20010034542A - Method and apparatus for dynamic distributed computing over a network - Google Patents

Method and apparatus for dynamic distributed computing over a network Download PDF

Info

Publication number
KR20010034542A
KR20010034542A KR1020007009483A KR20007009483A KR20010034542A KR 20010034542 A KR20010034542 A KR 20010034542A KR 1020007009483 A KR1020007009483 A KR 1020007009483A KR 20007009483 A KR20007009483 A KR 20007009483A KR 20010034542 A KR20010034542 A KR 20010034542A
Authority
KR
South Korea
Prior art keywords
server
client
task
job
result
Prior art date
Application number
KR1020007009483A
Other languages
Korean (ko)
Inventor
아놀드케네쓰씨.알.씨.
왈도제임스에이치
월라스앤엠
존스피터씨
Original Assignee
케네쓰 올센
선 마이크로시스템즈, 인코포레이티드
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Priority claimed from US09/030,840 external-priority patent/US6446070B1/en
Application filed by 케네쓰 올센, 선 마이크로시스템즈, 인코포레이티드 filed Critical 케네쓰 올센
Publication of KR20010034542A publication Critical patent/KR20010034542A/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation 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/505Allocation 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations 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/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17306Intercommunication techniques
    • G06F15/17318Parallel communications techniques, e.g. gather, scatter, reduce, roadcast, multicast, all to all
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44568Immediately runnable code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation 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/5044Allocation 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • G06F9/548Object oriented; Remote method invocation [RMI]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/42Loop networks
    • H04L12/427Loop networks with decentralised control
    • H04L12/433Loop networks with decentralised control with asynchronous transmission, e.g. token ring, register insertion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/549Remote execution

Abstract

클라이언트-서버 환경에서는 컴퓨터 인텐시브 어플리케이션, 또는 렌더링(rendering)과 같은 그래픽 연산과 같은 광범위한 어플리케이션을 처리할 수 있는 많은 서버를 갖는 것이 바람직할 것이다. 이질적인 클라이언트-서버 환경에서, 종래의 시스템은 나중의 실행하기 위해 서버 상에 실행가능한 것들을 정적으로 저장한다. 이는 프로그래머가 서로 다른 오브젝트 모듈을 갖는 클라이언트 머신에서 서버 머신으로 어플리케이션을 운반하는데 많은 시간은 물론, 값비싼 기억장치를 필요로 하였다. 본 발명은, 이질적인 클라이언트-서버 네트워크 내에 동질적인 실행 환경을 생성함으로써 이와 같은 문제점들을 해결한다. 이에 따라, 본 시스템은 컴퓨터 서버 상에 코드를 동적으로 다운로드하고, 컴퓨터 서버 상의 코드를 실행하며, 그 결과를 호출하는 클라이언트 메소드에 반환한다. 이 기법은, 서버 코드가 모든 서로 다른 시스템 상에서 실행될 수 있기 때문에, 다수의 코드 사본이 다운로드되거나 또는 컴파일될 필요가 없다. 이 기법에 따라 설계된 시스템은, 또한 효율적이다. 서버 코드는 일반적으로 클라이언트 상에 국부적으로 컴파일되어, 바이트코드로서 서버에 다운로드된 다음에 실행된다.In a client-server environment, it would be desirable to have many servers capable of handling a wide range of applications, such as computer intensive applications, or graphical operations such as rendering. In heterogeneous client-server environments, conventional systems statically store executables on the server for later execution. This required a lot of time and expensive storage for programmers to transport applications from client machines with different object modules to server machines. The present invention solves these problems by creating a homogeneous execution environment within a heterogeneous client-server network. Accordingly, the system dynamically downloads the code on the computer server, executes the code on the computer server, and returns the result to the calling client method. This technique does not require multiple copies of code to be downloaded or compiled because server code can run on all different systems. Systems designed according to this technique are also efficient. Server code is generally compiled locally on the client, downloaded to the server as bytecode, and then executed.

Description

네트워크를 통한 동적 분산 컴퓨팅 방법 및 장치{METHOD AND APPARATUS FOR DYNAMIC DISTRIBUTED COMPUTING OVER A NETWORK}METHOD AND APPARATUS FOR DYNAMIC DISTRIBUTED COMPUTING OVER A NETWORK}

본산 컴퓨팅 네트워크에서, 사용자는 네트워크에 접속된 많은 컴퓨터의 처리 능력을 하네스할 수 있다. 네트워크 상의 서로 다른 컴퓨터들 간에 처리를 분산시킴으로서, 많은 서로 다른 독립적인 계산을 갖는 작업들이 병렬로 신속하게 처리될 수 있다. 또한, 데이타를 처리하는데 가장 적합한 네트워크 상에 컴퓨터를 위치시킴으로써 전문화된 작업들이 보다 신속하게 연산될 수 있다. 예를 들어, 인텐시브한(intensive) 부동 소수점 계산을 수행하는 클라이언트 시스템 상에서 실행하는 작업은, 특정 계산을 적합한 전용 부동 소수점 하드웨어를 갖는 네트워크에 결합된 서버 시스템 상에서 보다 신속하게 실행할 수 있다.In a native computing network, a user may harness the processing power of many computers connected to the network. By distributing processing among different computers on a network, tasks with many different independent calculations can be processed quickly in parallel. In addition, specialized tasks can be computed more quickly by placing a computer on a network that is most suitable for processing data. For example, a task running on a client system that performs intensive floating point calculations can execute certain calculations more quickly on a server system coupled to a network having suitable dedicated floating point hardware.

불행하게도, 분산 컴퓨팅을 위한 종래의 기술은 전형적인 이질적인 컴퓨팅 환경에서는 용이하게 구현되지 않는다. 네트워크 상의 각각의 컴퓨터는 전형적으로 서로 다른 프로세서 및 운영체제 조합을 구비하여 이질적이고, 실행을 위해 서로 다른 오브젝트 모듈을 필요로 한다. 클라이언트 측에서, 서로 다른 오브젝트 모듈은, 사용자가 서로 다른 플랫폼 각각에 대해 서로 다른 버젼의 작업을 컴파일하고, 이 모듈을 대응하는 플랫폼에 로드하여야 되므로, 클라이언트에 기억장치 구비조건을 부가하고, 또한 포팅(porting)을 필요로 하며, 동일한 작업을 다수회 컴파일하여야 된다. 더우기, 종래의 기술은, 코드가 실행되기 훨씬 전에 컴퓨터 상에 코드가 분산되어 있을 것을 필요로 한다. 종래의 시스템에서는, 분산 컴퓨팅을 수행하는데 필요한 집중적인 준비로 많은 이가 이 기술을 이용하는 것을 억제하여 왔다.Unfortunately, conventional techniques for distributed computing are not readily implemented in typical heterogeneous computing environments. Each computer on the network is typically heterogeneous with different processor and operating system combinations and requires different object modules for execution. On the client side, different object modules add storage requirements to the client and also port them, since the user must compile different versions of the job for each of the different platforms and load this module on the corresponding platform. It requires porting, and the same task must be compiled many times. Moreover, the prior art requires that the code be distributed on a computer long before the code is executed. In conventional systems, many have discouraged the use of this technique with the intensive preparation required to perform distributed computing.

스크리프팅 언어(scripting language)에 기초한 분산 컴퓨팅 시스템은, 일부 종래의 분산 컴퓨팅 시스템에 비해 개선된 것이다. 불행하게도, 스크리프팅에 기초한 시스템은 코드를 다시 컴파일할 필요성을 제거하지만, 여전히 극히 비효율적이다. 스크리프팅에 기초한 분산 시스템은, 이 언어가 각각의 시스템 상에 놓인 인터프리터에 의해 해석되기 때문에, 다수의 플랫폼 상의 동일한 명령어를 실행할 수 있다. 결국, 대부분의 스크리프팅 언어는, 상위 레벨의 스크리프팅 명령을 하위 레벨의 네티브 언어로 실시간으로 변환하여야 하기 때문에, 느리다. 더우기, 스크리프팅 언어는 최적화하기 힘들고, 일반적으로 압축되지 않기 때문에 기억공간을 소비할 수 있다.Distributed computing systems based on scripting languages are an improvement over some conventional distributed computing systems. Unfortunately, scripting-based systems eliminate the need to recompile code, but are still extremely inefficient. Distributed systems based on scripting can execute the same instructions on multiple platforms because this language is interpreted by an interpreter placed on each system. After all, most scripting languages are slow because they need to translate higher-level scripting instructions into lower-level native languages in real time. Moreover, scripting languages are difficult to optimize and can usually consume memory because they are not compressed.

종래 기술의 시스템에서 발견된 상기 한계에 기초하여, 분산 컴퓨팅 시스템을 개선하는 것이 바람직하다.Based on the above limitations found in prior art systems, it is desirable to improve distributed computing systems.

본 발명은 총체적으로 분산 컴퓨팅 시스템에 관한 것으로, 더 상세하게는 네트워크를 통해 동적인 분산 컴퓨팅(dynamic distributed computing)을 수행하기 위한 방법 및 장치에 관한 것이다.The present invention relates generally to distributed computing systems, and more particularly, to a method and apparatus for performing dynamic distributed computing over a network.

본 발명에 일체화되고 본 명세서의 일부를 구성하는 첨부 도면들은 본 발명에 따른 몇몇 실시예를 예시하며, 상세한 설명과 함께 본 발명의 원리를 설명하는데 도움이 된다.The accompanying drawings, which are incorporated in and constitute a part of this specification, illustrate some embodiments in accordance with the invention, and together with the description serve to explain the principles of the invention.

도 1은 본 발명에 따른 방법 및 시스템에 사용하는데 적합한 네트워크도.1 is a network diagram suitable for use in the method and system according to the present invention.

도 2는 본 발명에 따른 방법 및 시스템에 사용하는데 적합한 컴퓨터 시스템의 블럭도.2 is a block diagram of a computer system suitable for use in the method and system according to the present invention.

도 3은 본 발명에 따른 방법 및 시스템에 사용하는데 적합한 클라이언트-서버 네트워킹 환경의 블럭도 표현.3 is a block diagram representation of a client-server networking environment suitable for use in the method and system according to the present invention.

도 4는 본 발명에 따른 방법 및 시스템에 따라 클라이언트가 수행하는 단계들의 순서도.4 is a flowchart of steps performed by a client in accordance with the method and system according to the present invention.

도 5는 본 발명에 따른 방법 및 시스템에 따라 서버가 수행하는 단계들의 순서도.5 is a flowchart of steps performed by a server in accordance with the method and system according to the present invention.

클라이언트 컴퓨터에 연관된 본 발명의 한 특징에서, 동적인 분산 컴퓨팅을위한 방법 및 장치가 제공된다. 먼저, 클라이언트는 작업을 처리하기 위해 네트워크로부터 서버를 선택한다. 이와 같은 선택은, 서버의 이용가능성 또는 서버의 전용 처리 능력에 기초할 수 있다. 다음에, 클라이언트 스터브는 파라메타 및 데이타를 작업 요청에 마셀(marashals)한다. 클라이언트는 이 작업 요청을, 포괄 컴퓨트 메소드(generic compute method)를 호출하는 서버에 송신한다. 서버는 작업에 연관된 타입들이 서버 상에서 이용가능한지를 자동적으로 판정하고, 필요에 따라 네트워크로부터 작업 타입을 다운로드한다. 작업 타입 내의 정보는, 특정 작업 요청에 저장된 파라메타 및 데이타를 추출하는데 사용될 수 있다. 포괄 컴퓨트 메소드는 선택된 서버에 대한 작업 요청을 실행하는데 사용된다. 서버가 작업 요청을 처리한 후에, 클라이언트는 선택된 서버로부터 다시 그 결과 또는 연산된 작업을 수신한다.In one aspect of the invention associated with a client computer, a method and apparatus for dynamic distributed computing is provided. First, the client selects a server from the network to process the job. This choice may be based on the availability of the server or the dedicated processing power of the server. The client stub then marshals the parameters and data into the work request. The client sends this work request to the server invoking the generic compute method. The server automatically determines whether the types associated with the job are available on the server and downloads the job type from the network as needed. The information in the job type can be used to extract the parameters and data stored in a particular job request. The comprehensive compute method is used to execute work requests for the selected server. After the server has processed the work request, the client receives the result or computed work again from the selected server.

서버에 연관된 본 발명의 다른 특징에서, 동적인 분산 컴퓨팅을 위한 방법 및 장치가 제공된다. 먼저, 서버는 서버 상에서 어떤 작업이 이용가능한지를 자동적으로 판정하고, 필요에 따라 네트워크로부터 작업 타입을 다운로드할 것이다. 이들 작업 타입은 서버가 작업 요청으로부터 파라메타 및 데이타를 언마셀하고, 국부적인 작업을 생성하는 것을 돕는다. 다음에, 서버는 컴퓨트 작업의 모든 타입 또는 컴퓨트 작업의 서브타입을 처리할 수 있는 포괄 컴퓨트 메소드를 호출한다. 이 포괄 컴퓨트 메소드는 선택된 서버에 대한 작업 요청을 실행하는데 사용된다. 만일 후속하는 작업이 이 결과를 사용하면, 서버는 국부적인 캐쉬에, 상기 연산된 작업으로부터의 결과를 저장한다. 일단 작업이 완료되면, 서버는 클라이언트에게 그 결과 또는 연산된 작업을 반환한다.In another aspect of the invention associated with a server, a method and apparatus for dynamic distributed computing is provided. First, the server will automatically determine which jobs are available on the server and will download the job type from the network as needed. These job types help the server unmarshal parameters and data from job requests and create local jobs. Next, the server invokes a generic compute method that can handle all types of compute jobs or subtypes of compute jobs. This generic compute method is used to execute work requests for the selected server. If a subsequent job uses this result, the server stores the result from the computed job in a local cache. Once the job is completed, the server returns the result or computed job to the client.

개 요summary

지금부터, 첨부하는 도면에 예시된 바와 같이 본 발명의 실시예를 상세히 설명한다. 도면 및 다음의 상세한 설명 전체에 걸쳐 동일한 참조번호가 가능한 한, 동일하거나 유사한 부분을 지칭하는데 사용될 것이다.Hereinafter, embodiments of the present invention will be described in detail as illustrated in the accompanying drawings. Like reference numerals will be used throughout the drawings and the following detailed description to refer to the same or like parts as much as possible.

본 발명에 따른 시스템은, 종래 기술의 단점들을 시정하고, 서버 컴퓨터의 네트워크에 걸쳐 사용된 동적인 분산 컴퓨팅 시스템을 제공한다. 이 동적인 분산 컴퓨팅 시스템은, 컴퓨터들이 서로 다른 프로세서, 서로 다른 운영체제, 및 그 조합을 갖는 이질적인 컴퓨터 네트워크에 특히 유용하다. 이와 같은 시스템은, 클라이언트 어플리케이션이 특정 작업을 실행하기 위해 런타임으로 서버 컴퓨터를 선택할 수 있게 한다. 본 발명에 따른 방법 및 시스템에서, 작업(task)은 특정 타입 또는 클래스 정의를 갖는 오브젝트이다. 서버는 일반적으로 오브젝트에 연관된 파라메타와 데이타가 서버 상에 수신될 때까지 실제의 클래스 정의를 하는 것을 지연할 수 있다. 예를 들어, 만일 미지의(unknown) 클래스의 오브젝트 인스턴스가 서버에 전송되면, 서버는 이 미지의 클래스를 다운로드한다. 다음에 서버는 이 클래스를 사용하여 오브젝트를 처리한다. 이와 같이 오브젝트에 클래스 정의의 할당은, 서버 컴퓨터의 네트워크를 통해 복잡한 작업을 처리하는데 유연성을 증가시킨다. 또한, 현재의 설계는 미국, 캘리포니아, 마운틴 뷰에 소재한 Sun Microsystems, Inc.에 의해 개발된 원격 메소드 호출(RMI) 서브시스템과 같은 기존의 원격 프로시져 호출 서브시스템 내의 특징을 이용함으로서 최소의 부수적인 오버헤드를 갖는 유연성을 용이하게 한다. 원격 메소드 호출(RMI)에 대한 상세한 정보를 위해서는, 본 발명의 참조로서 일체화되어 있으며, 본 발명의 출원인에게 양도된, Ann M, Wolrath, James Waldo, 및 Roger Riggs에 의한 "System and Method For Facilitating Loading of "Stub" Information to Enable a Program Operating in One Address Space to Invoke Processing of a Remote Method or Procedure in Another Address Space"라는 제목의 미국특허출원 일련번호 08/636,706호를 참조한다. 또한, RMI는 또한 본 발명의 참조로서 일체화되어 있는 JavaSoft Webpage 상의 FTP://ftp.javasoft.com/docs/jdk1.2/rmi-spec-jdk1.2.ps에 상세히 설명되어 있다.The system according to the invention corrects the disadvantages of the prior art and provides a dynamic distributed computing system used over a network of server computers. This dynamic distributed computing system is particularly useful for heterogeneous computer networks where computers have different processors, different operating systems, and combinations thereof. Such a system allows a client application to select a server computer at runtime to execute a particular task. In the method and system according to the invention, a task is an object with a particular type or class definition. The server can generally delay the actual class definition until the parameters and data associated with the object are received on the server. For example, if an object instance of unknown class is sent to the server, the server downloads the unknown class. The server then uses this class to process the object. This assignment of class definitions to objects increases flexibility in handling complex tasks across a network of server computers. In addition, the current design utilizes features within the existing remote procedure call subsystem, such as the remote method call (RMI) subsystem developed by Sun Microsystems, Inc. of Mountain View, California, USA, to minimize minimal overhead. Facilitates flexibility with the head. For detailed information on remote method invocation (RMI), see "System and Method For Facilitating Loading" by Ann M, Wolrath, James Waldo, and Roger Riggs, incorporated by reference of the present invention and assigned to the applicant of the present invention. See US Patent Application Serial No. 08 / 636,706 entitled "Stub" Information to Enable a Program Operating in One Address Space to Invoke Processing of a Remote Method or Procedure in Another Address Space. RMI is also described in detail in FTP://ftp.javasoft.com/docs/jdk1.2/rmi-spec-jdk1.2.ps on JavaSoft Webpage, which is also incorporated by reference of the present invention.

종래의 시스템과는 달리, 본 발명에 따른 동적인 분산 시스템에서의 작업은 한번 기록될 수 있고, 네트워크 내의 임의의 서버 컴퓨터 상에서 실행될 수 있다. 이와 같은 능력은 작업이 실행되기 전에 모든 플랫폼에 포트될 필요가 없기 때문에 이질적인 네트워크에서 특히 장점이 된다. 대신에, 본 발명에 따라 설계된 포괄적인 컴퓨트 작업은 클라이언트에 의해 명시된 다양한 작업을 런타임으로 실행할 수 있다. 예를 들어, 사용자는 "Compute"라는 타입(type), 및 Java와 같은 오브젝트 지향 언어에서 "Compute" 타입을 수용하는 포괄 컴퓨트 작업을 개발할 수 있다. Java는 많은 책중에서 본 발명의 참조로서 일체화되어 있는 James Gosling, Bill Joy, 및 Guy Steels에 의한 "The Java Language Specification"(Addison-Wesley, 1996)이라는 책에 설명되어 있다. 클라이언트는 타입 "Compute"의 서브타입을 갖는 작업을 생성하고, 작업에 대응하는 오브젝트를 서버 상의 포괄 컴퓨트 작업에 전달한다. 원격 프로시져 호출 메커니즘은 이 오브젝트를 서버, 및 작업을 실행하는 포괄 컴퓨트 작업에 다운로드한다.Unlike conventional systems, work in a dynamic distributed system according to the present invention can be recorded once and executed on any server computer in the network. This capability is particularly advantageous in heterogeneous networks because the work does not have to be ported to all platforms before it can run. Instead, a comprehensive compute task designed in accordance with the present invention can execute various tasks specified by the client at runtime. For example, a user may develop a generic compute task that accepts a type called "Compute", and a type "Compute" in an object oriented language such as Java. Java is described in a book entitled "The Java Language Specification" (Addison-Wesley, 1996) by James Gosling, Bill Joy, and Guy Steels, which is incorporated by reference in many of the books. The client creates a job with a subtype of type "Compute" and passes the object corresponding to the job to a comprehensive compute job on the server. The remote procedure call mechanism downloads this object to the server and to the comprehensive compute job that runs the job.

Java에서, 클라이언트에 의해 송신된 작업은 실제로 일련의 바이트코드를 포함하는 오브젝트이다. 이들 바이트코드는 서버가 Java 버츄얼 머신(JVM)을 구현하는 한 즉시 실행될 수 있다. JVM은 하드웨어로 직접 구현되거나 또는 네티브한(native) 운영체제의 상부에서 실행하는 소프트웨어 층에서 효율적으로 시뮬레이트된다. Java 언어는 Java 버츄얼 머신(JVM) 명세에 의해 명시된 특성을 갖는 컴퓨팅 시스템 상에서 실행하도록 설계되어 있다. JVM 명세는 본 발명의 참조로서 일체화되어 있는 The Java Virtual Machine Specification,(Addison-Wesley)이라는 제목의 텍스트에 상세히 설명되어 있다. 단일의 JVM 환경은 컴퓨터 시스템들이 이질적이고 서로 다른 프로세스, 서로 다른 운영체제, 및 그 조합을 가질지라도, 작업의 동질적인 실행을 가능하게 한다. 강력한 원격 프로시져 호출 서브시스템을, 본 발명에 따라 설계된 서버 상의 포괄 컴퓨터 작업과 결합하면, 강력한 동적인 분산 컴퓨팅 환경이 결과가 된다.In Java, a job sent by a client is actually an object that contains a series of bytecodes. These bytecodes can be executed immediately as long as the server implements the Java Virtual Machine (JVM). JVMs are efficiently simulated at the software layer, either directly implemented in hardware or running on top of a native operating system. The Java language is designed to run on a computing system with the characteristics specified by the Java Virtual Machine (JVM) specification. The JVM specification is described in detail in the text entitled The Java Virtual Machine Specification, (Addison-Wesley), which is incorporated herein by reference. A single JVM environment enables homogeneous execution of tasks, even though computer systems are heterogeneous and have different processes, different operating systems, and combinations thereof. Combining a powerful remote procedure call subsystem with comprehensive computer tasks on a server designed in accordance with the present invention results in a powerful dynamic distributed computing environment.

바이트코드를 사용하는 컴퓨트 서버는 종래의 텍스트에 기초한 스크리프팅 언어 또는 다른 언어에 기초한 언어를 사용하는 시스템보다 훨씬 빠르게 작업을 처리할 수 있다. 각각의 바이트코드는 콤팩트(8 비트)하고, 수차 포맷으로 되어 있다. 결국, 서버 컴퓨터는 문자와 인수를 런타임으로 파싱하는데 컴퓨터 사이클을 허비하지 않는다. 또한, 바이트코드는 이들을 서버에 운반하기 전에 클라이언트 상에서 최적화될 수 있다. 서버는 선택적으로, 져스트-인-타임(Just-In-Time)(JIT) 컴파일러와 같은 프로세싱 메커니즘을 사용하여 하드웨어 상에서 직접 런타임으로 실행하기 위한 네티브 명령으로, 바이트코드를 변환할 수 있다. JIT 컴파일러에 대한 보다 상세한 설명은, The Java Virtual Machine Specification을 참조한다.Compute servers using bytecode can process tasks much faster than systems using conventional text-based scripting or other languages. Each bytecode is compact (8 bits) and is in aberration format. After all, the server computer doesn't waste computer cycles parsing characters and arguments at runtime. In addition, bytecodes can be optimized on the client before transporting them to the server. The server may optionally convert the bytecode into a native instruction for execution at runtime directly on hardware using a processing mechanism such as a Just-In-Time (JIT) compiler. For a more detailed description of the JIT compiler, see The Java Virtual Machine Specification.

본 발명에 따라 설계된 시스템은, 각각의 클라이언트가 TCP/IP와 같은 공통 네트워킹 프로토콜을 통해 각각의 서버에 통신할 수 있는 것으로 가정한다. 또한, 클라이언트, 및 클라이언트로부터 원격 요청을 수신하여 서버 상에서 실행할 수 있는 서버 상에는 원격 프로시져 호출(RPC) 서브시스템이 존재한다고 가정한다. RPC 시스템은 또한 작업을 런타임으로 수행하기 위한 코드 및 관련된 정보를 자동적으로 다운로드한다. Sun Microsystems, Inc.에 의해 개발된 RMI는 이와 같은 특징들을 제공하는 적합한 RPC 서브시스템이다. 그러나, 기술분야의 숙련자는 Microsoft, Inc.로부터의 DCOM/COM와 같은 다른 RPC 서버시스템이 RMI 대신에 사용될 수 있다는 것을 알 것이다.The system designed according to the present invention assumes that each client can communicate to each server via a common networking protocol such as TCP / IP. It is also assumed that a remote procedure call (RPC) subsystem exists on the client and on the server that can receive and execute remote requests from the client. The RPC system also automatically downloads code and related information to perform the task at runtime. RMI, developed by Sun Microsystems, Inc., is a suitable RPC subsystem that provides these features. However, those skilled in the art will appreciate that other RPC server systems such as DCOM / COM from Microsoft, Inc. may be used in place of RMI.

컴퓨터 네트워크Computer network

도 1은 본 발명의 한 실시예가 실시될 수 있는 네트워크(100)를 도시한다. 네트워크(100)는 그 필수 구성요소로서 근거리 네트워크(LAN)(101), 백본 또는 광대역 네트워크(WAN)(102), 및 근거리 네트워크(116)을 포함한다. LAN(101)은 일련의 워크스테이션과 서버 컴퓨터(102,104,106 및 108)을 포함한다. LAN(116)은 일련의 워크스테이션 및 서버 컴퓨터(118,120,122 및 124)를 포함한다. 이들 컴퓨터 시스템(102-108 및 118-124)은 정보를 공유하고, 데이타를 송신하고 또한 연산 능력을 공유하도록 함께 결합되어 있다. LAN(101)은 네트워크 상호접속 장치(110)를 사용하여 보다 큰 전체적인 네트워크에 결합된다. 특정 타입의 네트워크 상호접속 장치는 특정 네트워크에 따라 라우터, 스위치 또는 허브일 수 있다. 일반적으로, 네트워크 상호접속 장치(110)는 사용자 터미널과 LAN(101), WAN(112) 및 LAN(116)을 함께 통합 네트워크에 결합할 수 있는 라우터, 스위치, 허브 또는 임의의 다른 네트워크 상호접속 장치일 수 있다. 네트워크 상호접속 장치(114)는 또한 사용자 터미널과 LAN(116) 상의 컴퓨터들을 통합 네트워크에 결합할 수 있는 라우터, 스위치, 허브 또는 임의의 다른 네트워크 상호접속 장치일 수 있다. 일반적으로, 본 발명에 따라 설계된 동적인 분산 컴퓨팅 시스템은, 전형적으로 네트워크(100)에 접속된 각각의 컴퓨터 시스템 상에 위치된다. 따라서, 각각의 컴퓨터는 이루어진 특정 요청 및 제공된 서비스에 따라, 클라이언트 또는 서버로서 동작할 수 있다. 전형적으로, 클라이언트는, 서버 컴퓨터 상에서 작업이 연산되고, 서버 컴퓨터가 작업을 처리할 것을 요청한다.1 illustrates a network 100 in which one embodiment of the invention may be practiced. The network 100 includes, as its essential components, a local area network (LAN) 101, a backbone or broadband network (WAN) 102, and a local area network 116. The LAN 101 includes a series of workstation and server computers 102, 104, 106 and 108. LAN 116 includes a series of workstation and server computers 118, 120, 122, and 124. These computer systems 102-108 and 118-124 are coupled together to share information, transmit data and also share computing power. LAN 101 is coupled to a larger overall network using network interconnect 110. The particular type of network interconnect device may be a router, a switch or a hub, depending on the particular network. In general, network interconnect device 110 is a router, switch, hub, or any other network interconnect device capable of coupling a user terminal and LAN 101, WAN 112, and LAN 116 together in a unified network. Can be. Network interconnect device 114 may also be a router, switch, hub, or any other network interconnect device capable of coupling user terminals and computers on LAN 116 to an integrated network. In general, a dynamic distributed computing system designed in accordance with the present invention is typically located on each computer system connected to the network 100. Thus, each computer can act as a client or server, depending on the particular request made and the service provided. Typically, a client computes a job on a server computer and requests that the server computer process the job.

컴퓨터 시스템Computer systems

지금부터, 도 2를 참조하여, 본 발명에 따른 방법 및 시스템을 실시하는데 적합한 컴퓨터 시스템을 위한 시스템 아키텍춰가 예시된다. 예시적인 컴퓨터 시스템은 단지 설명을 위한 것이다. 비록 이 설명이 IBM PS/2 퍼스널 컴퓨터와 같이 특정 컴퓨터 시스템을 설명하는데 공통을 사용된 용어를 지칭하지만, 이 설명 및 개념은 네트워크 컴퓨터, 워크스테이션, 및 도 1과는 다른 아키텍춰를 갖는 심지어 메인프레임 컴퓨터와 같은 다른 컴퓨터에도 동등하게 적용할 수 있다.Referring now to FIG. 2, a system architecture for a computer system suitable for implementing the method and system according to the present invention is illustrated. The example computer system is for illustration only. Although this description refers to terminology commonly used to describe a particular computer system, such as an IBM PS / 2 personal computer, this description and concepts refer to network computers, workstations, and even mainframes with a different architecture than FIG. The same applies to other computers such as computers.

더우기, 비록 본 발명이 유사한 조건을 갖는 다른 컴퓨터 시스템에 동등하게 적용될 수 있더라도, 본 실시예는 Java 프로그래밍 언어 및 Java 버츄얼 머신 명세를 구현하는 컴퓨터 시스템을 참조하여 설명된다. 특히, 본 발명은 오브젝트 지향 및 비-오브젝트 지향 프로그래밍 시스템과 함께 실시될 수 있다.Moreover, although the present invention can be equally applied to other computer systems having similar conditions, this embodiment is described with reference to a computer system implementing the Java programming language and the Java virtual machine specification. In particular, the present invention may be practiced with object oriented and non-object oriented programming systems.

컴퓨터 시스템(200)은 종래 기술의 마이크로프로세서로서 실시될 수 있는 중앙처리 장치(CPU)(105), 정보를 일시적으로 저장하기 위한 랜덤 액세스 메모리(RAM)(210), 및 정보를 영구히 저장하기 위한 판독 전용 메모리(ROM)(215)를 구비한다. 메모리 제어기(220)는 RAM(210)을 제어하기 위해 제공된다.Computer system 200 includes a central processing unit (CPU) 105, which may be implemented as a prior art microprocessor, random access memory (RAM) 210 for temporarily storing information, and permanently for storing information. A read only memory (ROM) 215 is provided. The memory controller 220 is provided to control the RAM 210.

버스(230)는 컴퓨터 시스템(200)의 구성요소를 상호접속한다. 버스 제어기 (225)는 버스(230)를 제어하기 위해 제공된다. 인터럽트 제어기(235)는 시스템 구성요소로부터 다양한 인터럽트 신호를 수신하고 처리하는데 사용된다.Bus 230 interconnects the components of computer system 200. Bus controller 225 is provided to control bus 230. Interrupt controller 235 is used to receive and process various interrupt signals from system components.

대용량 기억장치는 디스켓(242), CD ROM(247) 또는 하드디스크(252)에 의해 제공될 수 있다. 데이타 및 소프트웨어는 디스켓(2452) 및 CR ROM(247)과 같은 무버블(removable) 매체를 거쳐 컴퓨터 시스템(200)과 교환될 수 있다. 디스켓(242)은 제어기(240)에 의해 버스(230)에 접속된 디스켓 드라이브(241)에 삽입가능하다. 이와 유사하게, CD ROM(247)는 제어기(245)에 의해 버스(230)에 접속된 CD ROM 드라이브(246)에 삽입가능하다. 하드 디스크(252)는 제어기(250)에 의해 버스(230)에 접속된 고정 디스크 드라이브(251)의 일부이다.The mass storage device may be provided by the diskette 242, the CD ROM 247, or the hard disk 252. Data and software may be exchanged with computer system 200 via removable media, such as diskette 2452 and CR ROM 247. Diskette 242 is insertable into diskette drive 241 connected to bus 230 by controller 240. Similarly, CD ROM 247 is insertable into CD ROM drive 246 connected to bus 230 by controller 245. Hard disk 252 is part of fixed disk drive 251 connected to bus 230 by controller 250.

컴퓨터 시스템(200)에의 사용자 입력은 다수의 장치에 의해 제공될 수 있다. 예를 들어, 키보드(256) 및 마우스(257)는 제어기(255)에 의해 버스(230)에 접속되어 있다. 기술분야의 숙련자는 펜 및/또는 테블릿과 같은 다른 입력 장치가 버스(230), 필요에 따라 적당한 제어기 및 소프트웨어에 접속될 수 있다는 것을 알 것이다. DMA 제어기(260)는 RAM(210)에의 직접 메모리 액세스를 수행하기 위해 제공된다. 버츄얼 디스플레이는 비디오 디스플레이(270)를 제어하는 비디오 제어기(265)에 의해 발생된다.User input to computer system 200 may be provided by a number of devices. For example, keyboard 256 and mouse 257 are connected to bus 230 by controller 255. Those skilled in the art will appreciate that other input devices such as pens and / or tablets may be connected to the bus 230, appropriate controllers and software as desired. DMA controller 260 is provided to perform direct memory access to RAM 210. The virtual display is generated by the video controller 265 which controls the video display 270.

컴퓨터 시스템(200)은 또한, 시스템이 버스(291) 및 네트워크(295)에 의해 예시된 바와 같이, 근거리 네트워크(LAN) 또는 광대역 네트워크(WAN)에 상호접속되게 하는 통신 어댑터(290)를 포함한다.Computer system 200 also includes a communication adapter 290 that allows the system to be interconnected to a local area network (LAN) or a wide area network (WAN), as illustrated by bus 291 and network 295. .

컴퓨터 시스템(200)의 동작은, 일반적으로 운영체제 소프트웨어에 의해 제어되고 조작된다. 운영체제는 시스템 자원의 할당을 제어하고, 다른 것들중에서, 스케쥴링, 메모리 관리, 네트워킹, 및 서버스와 같은 작업을 수행한다.The operation of computer system 200 is generally controlled and manipulated by operating system software. The operating system controls the allocation of system resources and, among other things, performs tasks such as scheduling, memory management, networking, and services.

동적인 분산 컴퓨팅Dynamic distributed computing

동적인 분산 컴퓨팅은 일반적으로 클라이언트 서버 프로세스이다. 클라이언트-서버 관계는 이루어지는 각각의 호출마다 수립되고, 일반적으로 역할이 변한다. 전형적으로, 클라이언트는 서버에 의해 발견되거나 제어되는 자원을 요청하기 위해 호출하는 프로세스로서 정의된다. 본 명세서에서, 요청하는 프로세스를 실행하는 컴퓨터 또는 프로세서는 또한 클라이언트로서 지칭될 수 있다. 그러나, 이들 역할은 정보의 콘텍스트 및 발생하는 특정 처리에 따라 변할 수 있다.Dynamic distributed computing is generally a client server process. Client-server relationships are established for each call made and generally change roles. Typically, a client is defined as a process that invokes to request a resource that is found or controlled by the server. In this specification, a computer or processor executing a requesting process may also be referred to as a client. However, these roles may vary depending on the context of the information and the particular processing that occurs.

도 3은 본 발명의 한 실시예를 실시하는데 사용되는 클라이언트-서버 네트워킹 환경의 블럭도이다. 이 도면은 본 발명의 한 실시예를 강조하기 우위해 본 발명에 긴밀하게 관련된 서브시스템을 포함한다. 실제의 구현에 따라 도 3에서 제외된 부수적인 서브시스템이 필요할 수 있다.3 is a block diagram of a client-server networking environment used to practice one embodiment of the present invention. This figure includes a subsystem closely related to the present invention, with an emphasis on one embodiment of the present invention. Depending on the actual implementation, additional subsystems excluded from FIG. 3 may be required.

따라서, 도 3은 네트워크(312)에 모두 동작가능하게 결합된, 클라이언트(302), 서버(316), 및 오브젝트/메소드 저장고(314)를 포함한다. 클라이언트(302)는 원격 컴퓨터(306)가 원격 서버 컴퓨터 상의 작업을 처리하게 하는 어플리케이션(304)를 포함한다. RMI 명세에 설명된 바와 같이 원격 프로시져 호출 서브시스템을 사용하여 전형적으로 발생되는 원격 스터브(310)는, 특정 원격 컴퓨트 호출(306)에 연관된 파라메타 및 데이타를 패키지하는데 사용된다. 전형적인 클라이언트는 또한 원격 컴퓨트 호출(306)이 실행하는 작업 클라이언트(302)의 타입을 포함할 수 있는 일단의 국부적인 오브젝트/메소드(308)를 포함할 수 있다. 선택적으로, 작업들은 오브젝트 메소드 저장고(314)에 위치될 수 있고, 필요에 따라 컴퓨트 메소드(320)에 의해 액세스된다. 서버(316)는 클라이언트로부터 송신된 파라메타와 데이타를 언마셀하는 원격 스켈턴(322)을 포함한다. 원격 스켈턴(322)은 컴퓨트 메소드(320)에 의해 사용하기 위해 정보를 준비한다. 국부적인 오브젝트/메소드(324)는 또한 서버(316)에게 처리를 요청할 수 있는 작업 클라이언트(302)를 포함한다.Thus, FIG. 3 includes a client 302, a server 316, and an object / method store 314, all operatively coupled to the network 312. Client 302 includes an application 304 that allows a remote computer 306 to process work on a remote server computer. Remote stubs 310, which are typically generated using a remote procedure call subsystem as described in the RMI specification, are used to package the parameters and data associated with a particular remote compute call 306. A typical client may also include a set of local objects / methods 308 that may include the type of work client 302 that the remote compute call 306 executes. Optionally, tasks may be located in object method repository 314 and accessed by compute method 320 as needed. The server 316 includes a remote Skelton 322 that unmarshalls the parameters and data sent from the client. Remote Skelton 322 prepares the information for use by compute method 320. Local object / method 324 also includes a task client 302 that can request processing from server 316.

동작에서, 원격 컴퓨트 호출(306)은 컴퓨트 메소드(320)를 호출하여 특정 작업을 처리한다. 원격 스터브(310)는, 서버(316) 상의 컴퓨터 메소드(320)가 작업을 실행할 수 있도록, 호출하는 메소드에 대한 정보를 마셀한다. 원격 스터브(310)는 또한 서버(302) 상의 컴퓨트 메소드(320)에 의해 인수로서 사용되는 기본적인 파라메타를 마셀할 수 있다. 원격 스켈턴(322)은 작업을 수신하고, 네트워크를 통해 수신된 데이타와 파라메타를 언마셀하고, 이들을 컴퓨터 메소드(320)에 제공한다. 만일 작업 및 관련된 타입들이 서버(316) 상에서 이용가능하지 않다면, 스켈턴은 클라이언트(302), 오브젝트/메소드 저장고(314) 또는 다른 안전하고 신뢰성있는 미싱 타입의 소스로부터 타입들을 다운로드한다. 타입 정보는 오브젝트 내의 데이타의 위치를 맵(maps)하고, 원격 스켈턴이 오브젝트의 처리를 완료할 수 있게 한다. RMI(도시않됨)는 원격 스터브(310)와 원격 스켈턴(322)를 제공할 수 있는 하나의 원격 프로시져 호출(RPC) 시스템이다. 일단 오브젝트가 스켈턴에 의해 처리되면, 컴퓨트 메소드(320)는 작업을 실행하고, 클라이언트(302)에 연산된 작업 또는 연산된 작업 결과를 반환한다.In operation, remote compute call 306 calls compute method 320 to process a particular task. The remote stub 310 meshes information about the calling method so that the computer method 320 on the server 316 can execute the task. The remote stub 310 can also mesh basic parameters used as arguments by the compute method 320 on the server 302. The remote Skelton 322 receives the job, unmarshals the data and parameters received over the network, and provides them to the computer method 320. If the job and associated types are not available on server 316, Skelton downloads the types from client 302, object / method store 314, or other secure and reliable missing type source. The type information maps the location of the data within the object and allows the remote Skeleton to complete processing of the object. RMI (not shown) is one remote procedure call (RPC) system capable of providing a remote stub 310 and a remote Skelton 322. Once the object is processed by Skelton, compute method 320 executes the task and returns the computed task or computed task result to client 302.

도 4는 본 발명에 따른 동적인 분산 컴퓨팅 시스템 및 방법을 이용하는 클라이언트에 의해 수행되는 단계들의 순서도이다. 초기에, 클라이언트는 작업을 처리하기 위해 네트워크로부터 적합한 서버를 선택한다(단계 402). 이 선택 기준은, 서버 컴퓨터의 집단 또는 각 서버 컴퓨터의 전용 컴퓨팅 능력중에서 전체적인 처리 부하 분산에 기초할 수 있다. 예를 들어, 부하 밸런싱 기법은 컴퓨터가 소정의 순간에 최소의 부하를 갖는 지를 자동적으로 판정하는데 사용될 수 있다. 더우기, 작업이 3차원 와이어프레임(wireframes)을 렌더링하는 것과 같는 인텐시브한 그래픽 계산을 갖거나 또는 많은 부동 소수점 연산을 수행하여야 하기 때문에, 그래픽 가속기 또는 매치(match) 코프로세서와 같은 전용 하드웨어를 갖는 일부 컴퓨터가 클라이언트에 의해 선택될 수 있다.4 is a flowchart of steps performed by a client using a dynamic distributed computing system and method in accordance with the present invention. Initially, the client selects a suitable server from the network to process the job (step 402). This selection criterion may be based on overall processing load balancing among a group of server computers or the dedicated computing capabilities of each server computer. For example, a load balancing technique can be used to automatically determine if a computer has the least load at a given moment. Furthermore, some work with dedicated hardware, such as graphics accelerators or match coprocessors, because the task must have intensive graphics calculations, such as rendering three-dimensional wireframes, or perform many floating point operations. The computer can be selected by the client.

일단 서버가 선택되면, 클라이언트는 선택된 서버 상의 원격 컴퓨트 메소드를 호출한다(단계 404). RMI와 같은 RPC 시스템은, 서버 컴퓨터 상의 원격 컴퓨트 메소드를 호출하는 것을 용이하게 한다. 전형적으로, 클라이언트는 원격 컴퓨터 메소드가 원격 컴퓨터 상의 특정 작업을 처리하는 도관으로서 사용될 수 있다는 것을 알 필요가 있다. 예를 들어, Java에서, 클라이언트 상에서 실행되는 원격 명령어 "Server.runTask(newPI(10000))"는 원격 메소드 "runTask"가 타입 "computeServer"의 원격 서버 "Server" 상에서 호출되게 한다. 이 단계는 원격 메소드 "runTask"를 통해 포괄 컴퓨트 메소드에 대한 파라메타로서 작업(이 경우에 작업은 "newPI(1000)에 의해 인스턴스화된 타입 작업 오브젝트임)을 제공한다. 서버 상의 "runTask" 메소드는 Compute 원격 인터페이스를 실시한다. 선택적으로, 이 명령은 연산된 작업으로부터의 결과가 선택된 서버 상의 결과 캐쉬에 저장되어야 한다는 것을 서버에게 가리킬 수 있다. 이는 후속하는 작업이 순환 간의 결과를 공유할 수 있게 한다. 예를 들어, "PI"를 계산한 결과는 나중에 구면의 체적을 계산하거나 또는 "PI"의 값을 사용하여 다른 정확한 계산을 수행하기 위해 다른 원격 메소드에 의해 사용될 수 있다.Once the server is selected, the client invokes a remote compute method on the selected server (step 404). RPC systems, such as RMI, facilitate calling remote compute methods on server computers. Typically, a client needs to know that a remote computer method can be used as a conduit to handle a particular task on the remote computer. For example, in Java, the remote command "Server.runTask (newPI (10000))" executed on the client causes the remote method "runTask" to be called on the remote server "Server" of type "computeServer". This step provides the task as a parameter to the generic compute method via the remote method "runTask", in which case the task is a type task object instantiated by "newPI (1000)." The "runTask" method on the server Implement the Compute remote interface Optionally, this command can tell the server that the results from the computed task should be stored in the results cache on the selected server, which allows subsequent tasks to share the results between the cycles. For example, the result of calculating "PI" can be used later by other remote methods to calculate the volume of a sphere or to perform other exact calculations using the value of "PI".

다음에, 스터브는 파라메타 및 데이타를 작업 요청으로 마셀(marshal)하는데 사용된다. 다음에 이 작업 요청은 선택된 서버에 제공된다. 전형적으로, 작업 요청은, 서버 상에 존재하지 않는다면, 타입 또는 클래스에 대한 네트워크 장소는 물론, 작업에 대한 데이타 및 파라메타를 포함한다. 서버 상의 스켈턴은 오브젝트를 처리하고 데이타와 파라메타를 언마셀하기 위해 타입 또는 클래스 정보를 사용한다. Java 및 RMI를 사용하는 시스템에서, 작업 요청은 오브젝트이고, 클래스 위치 정보는 코드베이스(codebase) URL(universal record locator) 파라메타에 포함된다. 이에 대한 세부적인 설명은 RMI 명세에 포함되어 있다. 서버는 즉시 또는 서버가 작업을 실행하기 위한 적합 시간을 발견할 때마다 실행하기 위한 작업을 스케쥴할 수 있다. 서버가 연산을 수행한 후에, 클라이언트는 연산된 작업으로부터 결과를 수신한다(단계 408).The stub is then used to marshal the parameters and data into the work request. This work request is then provided to the selected server. Typically, a work request includes data and parameters about the work as well as the network location for the type or class, if not present on the server. Skelton on the server uses type or class information to process objects and unmarshal data and parameters. In systems using Java and RMI, work requests are objects, and class location information is contained in codebase universal record locator (URL) parameters. A detailed description of this is included in the RMI specification. The server can schedule a task for execution immediately or whenever the server finds a suitable time to execute the task. After the server performs the operation, the client receives a result from the computed task (step 408).

도 5는 본 발명에 따른 동적인 분산 컴퓨팅 시스템 및 방법에 의해 수행되는 단계들의 순서도이다. 먼저, 서버 상의 스켈턴은 작업 요청으로부터의 파라메타와 데이타를 언마셀하고, 송신된 본래의 작업을 재생성한다(단계 504). 이와 같은 파라메타를 언마셀하는 것은, 몇몇 부수적인 타입을 다운로드하는 것을 포함한다. 스켈턴은, 작업 요청에 연관된 타입이 서버 상에서 이용가능한지의 여부를 판정한다(단계 506). 만일 작업 요청에 연관된 타입들이 이용가능하지 않으면, 스켈턴은 네워크 상의 영역중의 한 영역으로부터 작업을 다운로드하여야 한다(단계 509). 예를 들어, 만일 "PI()" 클래스가 서버에 존재하지 않으면, 스켈턴 서버는 이와 같은 타입을 클라이언트로부터 다운로드할 것이다. 타입 또는 클래스는 오브젝트 내의 데이타를 맵하고, 파라메타와 데이타를 언마셀하기 위해 스켈턴에 의해 사용된다.5 is a flowchart of steps performed by a dynamic distributed computing system and method in accordance with the present invention. First, Skelton on the server unmarshals the parameters and data from the job request and recreates the original job sent (step 504). Unmarshalling such parameters involves downloading some additional types. Skelton determines whether the type associated with the work request is available on the server (step 506). If the types associated with the work request are not available, Skelton must download the work from one of the areas on the network (step 509). For example, if the "PI ()" class does not exist on the server, the Skelton server will download this type from the client. Types or classes are used by Skelton to map data within objects and to unmarshal parameters and data.

전형적으로, 클라이언트는, 요청 패킷에서 특정 타입이 위치한 곳을 가리킬 것이다. 스켈턴은 오브젝트/메소드 저장고로부터 요청된 타입을 다운로드할 수 있고, 장래의 서버 요청을 위한 타입을 캐쉬할 수 있다. 또한, 요청된 타입은 또한 클라이언트 상에 위치할 수 있다. 예를 들어, Java 및 RMI에서, 특정 타입을 포함하는 클래스는 클라이언트에 의해 송신된 소정의 코드베이스 URL(uniform record locator)에 위치된다. RMI에서 동적인 클래스 로딩은 코드베이스를 사용하여 클래스의 자동적인 다운로딩을 용이하게 한다. 이들 타입들은 스켈턴이 작업 요청을 파스하고, 적당한 데이타와 파라메타를 추출하는 것을 가능하게 한다. 상기 설명한 단계들은 파라메타와 데이타가 장래의 처리에 용이하게 이용할 수 있게 한다.Typically, a client will point to where a particular type is located in a request packet. Skelton can download the requested type from the object / method repository and cache the type for future server requests. In addition, the requested type may also be located on the client. For example, in Java and RMI, a class containing a particular type is located in a given codebase uniform record locator sent by the client. Dynamic class loading in RMI facilitates the automatic downloading of classes using the codebase. These types allow Skelton to parse work requests and extract the appropriate data and parameters. The steps described above make the parameters and data readily available for future processing.

일단 적당한 타입이 이용가능하면, 스켈턴은 포괄 컴퓨트 메소드를 호출한다(단계 508). 다음에 서버 상의 포괄 컴퓨터 메소드는 클라이언트에 의해 요청된 특정 작업을 실행한다(단계 510). 예를 들어, 클라이언트가 "ComputeServer.runTask(newPI(1000))를 호출한다고 가정한다. 스켈턴은 서버 상의 포괄 컴퓨터 메소드 "runTask"를 호출할 것이다. "runTask" 메소드는 클라이언트에 의해 호출된 작업에 내장된 "run()" 메소드를 호출한다. 또한, "runTask" 메소드는 클라이언트와의 원격 접속을 유지하는 원격 인터페이스 "Compute"를 실시한다. 클라이언트의 선택시 또는 서버에 대한 선정된 설정시, 스켈턴은 후속하는 작업이 결과를 사용하면 캐쉬에 연산된 작업으로부터의 결과를 저장한다. 서버에 대한 최종 단계로서, 연산된 작업 또는 결과가 서버 상의 "return.t.run()"을 실행함으로써 클라이언트에 반환된다.Once the appropriate type is available, Skelton invokes a generic compute method (step 508). The comprehensive computer method on the server then executes the particular task requested by the client (step 510). For example, suppose a client calls "ComputeServer.runTask (newPI (1000)). Skelton will call the generic computer method" runTask "on the server. The" runTask "method will be used for tasks invoked by the client. Invoke the built-in "run ()" method, which also implements the remote interface "Compute", which maintains a remote connection with the client, at the time of client selection or at the specified configuration of the server. The turn saves the results from the computed work in the cache when the subsequent work uses the results As a final step for the server, the computed work or result executes "return.t.run ()" on the server Is returned.

예시적인 대체 실시예Example Alternative Embodiment

본 발명에 따르면, 다음 코드 예는 한 실시예로서 제공된다. 비록 본 예가오브젝트 지향 Java 프로그래밍 언어로서 제공되었지만, 다른 프로그래밍 언어가 또한 사용될 수 있다. 예를 들어, 서버는 다음과 같은 Java 코드를 포함할 수 있다.According to the invention, the following code example is provided as an embodiment. Although the example is provided as an object-oriented Java programming language, other programming languages may also be used. For example, the server could contain the following Java code:

THE TASKTHE TASK

public interface Task extends Serializable {public interface Task extends Serializable {

//이 인터페이스는 클래스 ("PI" 클래스)가// this interface has a class ("PI" class)

//추상 run() 클래스를 실시하는 것을// run the abstract run () class

//허용한다.// allow

{{

public Object run();public Object run ();

}}

THE REMOTE INTERFACE:THE REMOTE INTERFACE:

import java.rmi.*;import java.rmi. *;

public interface Compute extends Remote{public interface Compute extends Remote {

//RMI/RPC 인터페이스// RMI / RPC Interface

public Object runTask(Task t) throws RemoteException;public Object runTask (Task t) throws RemoteException;

//추상 runIt method// abstract runIt method

}}

THE COMPUTE SERVER IMPLEMENTATIONTHE COMPUTE SERVER IMPLEMENTATION

import java.rmi.*;import java.rmi. *;

import java.server.*;import java.server. *;

public class ComputeServer extends UnicasRemoteObjectpublic class ComputeServer extends UnicasRemoteObject

implements Compute{implements Compute {

public ComputeServer() throws RemoteException{}public ComputeServer () throws RemoteException {}

//Compute 인터페이스를 실시// implement the Compute interface

//추상 "runTask" 메소드// abstract "runTask" method

//..이 영역에 있는 코드는 RPC 시스템으로 루틴을 초기화시키는데 사용//..The code in this area is used to initialize the routine with the RPC system

public Object runTask(Task t) throws RemoteExceptionpublic Object runTask (Task t) throws RemoteException

//runTask는 ComputeServer 인터페이스에 정의된// runTask is defined in the ComputeServer interface

//추상 메소드를 실시// implement abstract method

return t.run(); //return t.run (); //

}}

다음 예시적인 Java 코드는 본 발명에 따른 동적인 분산 컴퓨팅을 수행하는 클라이언트 상에서 사용될 수 있다.The following example Java code can be used on a client to perform dynamic distributed computing in accordance with the present invention.

class PI{class PI {

private int precision;private int precision;

PI(int howManyPlaces){//sets precision of PI value to be calculated alter precision = howManyPlaces;PI (int how ManyPlaces) {// sets precision of PI value to be calculated alter precision = howManyPlaces;

}}

public Obejct run(){ //컴퓨트 인터페이스 내의 추상 run 메소드를 실시public Obejct run () {// execute abstract run method in compute interface

double pi=computePIsomehow(person); //pi를 계산double pi = computePIsomehow (person); // calculate pi

return new Double(pi);return new Double (pi);

}}

public static void (String[]args){public static void (String [] args) {

ComputerServer server=getAComputerServer(); //네트워크로부터 서버를 선 //택하고, RMI에 대한 원격ComputerServer server = getAComputerServer (); // select a server from the network, and remote to RMI

//컴퓨트 호출에 RPC 추상// abstract RPC on compute call

//원격 인터페이스를 저장// save the remote interface

Double pi=server.runTask(new(1000)); //"PI" 클래스 에 정의된 "pi" 연산 //을 실행하기 위해 추상 메소드를Double pi = server.runTask (new (1000)); // abstract method to execute the "pi" operation // defined in the "PI" class

//실시//practice

System.out.println("PI seems to be "+pi") //"pi' 변수내의 결과를 반환 //하고, 표준으로 출력System.out.println ("PI seems to be" + pi ") // returns the result in the" pi "variable // and prints it to standard

비록 본 명세서에 특정 실시예가 예시 목적으로 설명되었지만, 본 발명의 범위를 일탈하지 않고도 다양한 변형과 수정이 있을 수 있다. 기술분야의 숙련자는 본 발명이 다양한 소프트웨어와 하드웨어로 실시될 수 있으며, 상술한 전통적인 라우터, 스위치, 및 인텔리젼트 허드 장치에 국한되어 있지 않다는 것을 알 것이다. 따라서, 본 발명은 상기 설명한 실시예에 국한되어 있지 않고, 그 대신에 등가물의 완전한 범위에 비추어 첨부하는 특허청구범위에 의해 한정된다.Although specific embodiments have been described herein for purposes of illustration, various modifications and changes may be made without departing from the scope of the present invention. Those skilled in the art will appreciate that the present invention may be implemented in a variety of software and hardware, and is not limited to the traditional routers, switches, and intelligent head devices described above. Accordingly, the invention is not limited to the above described embodiments, but instead is defined by the appended claims in light of the full scope of equivalents.

Claims (27)

주 기억 장치, 보조 기억 장치, 디스플레이 장치, 및 입력/출력 메커니즘을 갖는 컴퓨터 시스템에 대해 수행되며, 클라이언트가 각각의 서버 컴퓨터와 호환가능한 프로그래밍 언어로 개발된 작을 서버 컴퓨터의 집합 내의 서버 컴퓨터에 동적으로 분산시키는 것을 가능하게 하는 방법에 있어서,A computer system having a main storage device, a secondary storage device, a display device, and an input / output mechanism. In a method that makes it possible to disperse, 상기 서버 컴퓨터의 집합중에서 전체적인 처리 부하 분산 및 각각의 서버 컴퓨터의 특수 컴퓨팅 능력에 기초하여, 작업을 처리하기 위해 복수의 이질적인 서버중에서 서버를 선택하는 단계;Selecting a server from among a plurality of heterogeneous servers to process a task based on overall processing load balancing among the collection of server computers and the special computing capabilities of each server computer; 파라메타와 데이타를 작업 요청내에 마셀(marshalling)하는 단계 - 상기 마셀 단계는, 상기 요청된 작업에 관련된 코드와 데이타가 상기 선택된 서버에 존재 하는 지의 여부를 판정하는 단계, 및 상기 코드 또는 데이타 타입이 상기 선택된 서버에 존재하지 않을 때 상기 선택된 서버에 상기 코드 및 관련된 데이타 타입을 다운로드하는 단계를 포함함-;Marshalling parameters and data in a task request, wherein the Marcell step determines whether code and data related to the requested task exist on the selected server, and wherein the code or data type is Downloading the code and associated data type to the selected server when not present at the selected server; 상기 선택된 서버에 연관되어, 상기 작업을 실행하는 포괄 컴퓨트 메소드(generic compute method)를 호출하는 단계 - 상기 호출 단계는 상기 포괄 컴퓨트 메소드에 상기 작업을 파라메타로서 제공하는 단계, 및 후속하는 작업에 사용하기 위해 연산된 작업으로부터의 결과가 상기 선택된 서버 상의 결과 캐쉬(result cache)에 저장되어야 한다는 것을 상기 서버에 표시하는 단계를 포함함- 를 포함함-; 및Invoking a generic compute method associated with the selected server to execute the task, wherein the invoking step comprises providing the task as a parameter to the comprehensive compute method, and subsequent tasks. Indicating to the server that the results from the operation computed for use should be stored in a result cache on the selected server; And 상기 클라이언트 상에서 장래에 처리하기 위해 상기 선택된 서버로부터 상기 연산된 작업을 다시 수신하는 단계를 포함하는 방법.Receiving the computed job again from the selected server for future processing on the client. 주 기억 장치, 보조 기억 장치, 디스플레이 장치, 및 입력/출력 메커니즘을 갖는 컴퓨터 시스템 내에 포함된 프로세서에 대해 수행되며, 서버 컴퓨터들의 집합에 연관된 서버가, 클라이언트 컴퓨터로부터의 작업을 동적으로 수신하여 처리하게 하는 방법 - 상기 작업은 상기 서버 컴퓨터의 각각과 호환가능한 실행가능한 프로그래밍 언어임 - 에 있어서,Performed on a processor contained within a computer system having a main storage device, an auxiliary storage device, a display device, and an input / output mechanism, wherein the server associated with the set of server computers is configured to dynamically receive and process work from the client computer. Wherein the task is an executable programming language that is compatible with each of the server computers. 작업 요청으로부터의 파라메타와 데이타를 작업으로 언마셀하는 단계 - 상기 언마셀 단계는 상기 작업에 관려된 타입들이 상기 서버 상에서 이용가능한지 및 상기 작업에 연관된 상기 타입들이 상기 서버 상에서 이용가능하지 않은지의 여부를 판정하는 부단계를 포함함-;Unmarshalling parameters and data from the job request to the job, wherein the unmarshall step determines whether the types involved in the job are available on the server and whether the types associated with the job are not available on the server. Including a substep of determining; 상기 클라이언트에 의해 표시된 장소로부터 상기 서버에 상기 타입들을 다운로드하는 단계;Downloading the types to the server from the location indicated by the client; 모든 작업들을 처리할 수 있으며, 상기 작업을 실행하여 결과를 발생하는 포괄 컴퓨트 메소드를 호출하는 단계;Invoking a comprehensive compute method capable of processing all tasks, the executing the task and generating a result; 후속하는 작업이 상기 결과를 사용할 수 있다면 상기 실행된 작업으로부터의결과를 캐쉬에 저장하는 단계; 및Storing a result from the executed job in a cache if a subsequent job can use the result; And 상기 클라이언트에 상기 실행된 작업으로부터의 결과를 반환하는 단계를 포함하는 방법.Returning a result from the executed task to the client. 서버들의 집합에 동작가능하게 결합된 프로세서에 대해 수행되며, 상기 프로세서에 연관된 클라이언트가 서버에 작업을 동적으로 분산시킬 수 있게 하는 방법에 있어서,A method performed on a processor operably coupled to a collection of servers, the method associated with enabling a client associated with the processor to dynamically distribute work to servers. 상기 작업을 처리하기 위해 서버를 선택하는 단계;Selecting a server to process the job; 파라메타와 데이타로부터 작업 요청을 형성하는 단계;Forming a work request from parameters and data; 상기 선택된 서버에 대해 상기 작업 요청을 실행할 수 있는 포괄 컴퓨트 기법을 호출하고, 결과를 발생하는 상기 선택된 서버에 상기 작업 요청을 송신하는 단계; 및Invoking a comprehensive compute technique capable of executing the work request against the selected server and sending the work request to the selected server generating a result; And 상기 선택된 서버로부터 상기 결과를 다시 수신하는 단계를 포함하는 방법.Receiving the result again from the selected server. 제3항에 있어서, 상기 프로세서는 주 기억 장치, 보조 기억 장치, 디스플레이 장치, 및 입력/출력 메커니즘을 갖는 컴퓨터 시스템에 동작가능하게 결합되어 있는 방법.4. The method of claim 3, wherein the processor is operably coupled to a computer system having a main memory device, an auxiliary memory device, a display device, and an input / output mechanism. 제3항에 있어서, 상기 작업은 상기 서버 컴퓨터의 각각과 호환가능한 프로그래밍 언어 및 환경에서 개발되는 방법.4. The method of claim 3, wherein the task is developed in a programming language and environment that is compatible with each of the server computers. 제3항에 있어서, 상기 서버는 복수의 이질적인 컴퓨터 시스템중에서 선택되는 방법.4. The method of claim 3, wherein the server is selected from a plurality of heterogeneous computer systems. 제5항에 있어서, 상기 환경은 원격 프로시져 호출 서브시스템을 포함하는 방법.6. The method of claim 5 wherein the environment comprises a remote procedure call subsystem. 제7항에 있어서, 상기 원격 프로시져 호출 서브시스템은 원격 메소드 호출(RMI) 시스템인 방법.8. The method of claim 7, wherein the remote procedure call subsystem is a remote method call (RMI) system. 제3항에 있어서, 상기 서버를 선택하는 기준은, 상기 서버 컴퓨터의 집합들 간의 전체적인 처리 부하 분산을 포함하는 방법.4. The method of claim 3, wherein the criteria for selecting a server includes overall processing load balancing between sets of server computers. 제6항에 있어서, 상기 선택된 서버는 선정된 시간 기간에 걸친 상기 서버의 평균 부하 특성과 비교하여, 가장 낮은 부하 특성을 갖는 방법.7. The method of claim 6, wherein the selected server has the lowest load characteristic compared to the average load characteristic of the server over a predetermined time period. 제3항에 있어서, 상기 서버를 선택하는 기준은, 각각의 서버 컴퓨터의 특수 컴퓨팅 능력을 포함하는 방법.4. The method of claim 3, wherein the criteria for selecting a server includes the special computing capabilities of each server computer. 제11항에 있어서, 상기 특수 컴퓨팅 능력은 렌더링 이미지를 포함하는 방법.The method of claim 11, wherein the special computing capability comprises a rendered image. 제3항에 있어서, 상기 송신 단계는The method of claim 3, wherein the transmitting step 상기 요청된 작업에 연관된 코드가 상기 선택된 서버에 존재하는 지의 여부를 판정하는 단계; 및Determining whether a code associated with the requested task exists in the selected server; And 상기 코드가 상기 선택된 서버에 존재하지 않을 때 상기 선택된 서버에 상기 코드를 다운로드하는 단계를 포함하는 방법.Downloading the code to the selected server when the code is not present on the selected server. 제3항에 있어서, 상기 송신 단계는,The method of claim 3, wherein the transmitting step, 상기 포괄 컴퓨트 메소드에 상기 작업을 파라메타로서 제공하는 단계를더 포함하는 방법.Providing the task as a parameter to the global compute method. 제3항에 있어서, 연산된 작업으로부터의 결과가 후속하는 작업에 사용하기 위해 상기 선택된 서버 상의 캐쉬에 결과로서 저장되어야 한다는 것을 상기 서버에게 가리키는 단계를 더 포함하는 방법.4. The method of claim 3, further comprising indicating to the server that the result from the computed task should be stored as a result in a cache on the selected server for use in subsequent tasks. 제3항에 있어서, 상기 결과는 상기 클라이언트에 대해 더 처리하는데 사용되는 방법.4. The method of claim 3, wherein the result is used to further process for the client. 제3항에 있어서, 상기 결과는 오브젝트인 방법.The method of claim 3, wherein the result is an object. 서버들의 집합에 동작가능하게 결합된 프로세서에 대해 수행되며, 상기 프로세서에 연관된 서버가, 클라이언트 컴퓨터로부터로부터의 작업을 동적으로 수신하여 처리하게 하는 방법 - 상기 작업은 상기 서버 컴퓨터의 각각과 호환가능한 실행가능한 프로그래밍 언어임 - 에 있어서,Performed on a processor operatively coupled to a collection of servers, the server associated with the processor to dynamically receive and process a task from a client computer, wherein the task is executable to be compatible with each of the server computers. Is a possible programming language, 작업 내의 작업 요청으로부터 파라메타 및 데이타를 검색하는 단계;Retrieving parameters and data from the job request in the job; 복수의 작업 타입을 처리할 수 있으며, 상기 작업을 실행하고 결과를 발생하는, 상기 서버 상의 포괄 컴퓨트 메소드를 호출하는 단계; 및Invoking a comprehensive compute method on the server capable of processing a plurality of job types and executing the job and generating a result; And 상기 클라이언트에 결과를 반환하는 단계를 포함하는 방법.Returning a result to the client. 제18항에 있어서, 상기 프로세서는 주 기억 장치, 보조 기억 장치, 디스플레이 장치, 및 입력/출력 메커니즘을 갖는 컴퓨터 시스템에 동작가능하게 결합되어 있는 방법.19. The method of claim 18, wherein the processor is operably coupled to a computer system having a main memory, an auxiliary memory, a display device, and an input / output mechanism. 제18항에 있어서, 상기 작업은 상기 서버 컴퓨터의 각각과 호환가능한 프로그래밍 언어로 개발되는 방법.19. The method of claim 18, wherein the task is developed in a programming language compatible with each of the server computers. 제18항에 있어서, 상기 작업은 Java 프로그래밍 언어 및 환경을 사용하여 개발되는 방법.The method of claim 18, wherein the task is developed using a Java programming language and environment. 제21항에 있어서, 상기 환경은 원격 프로시져 호출 서브시스템을 포함하는 방법.22. The method of claim 21 wherein the environment comprises a remote procedure call subsystem. 제22항에 있어서, 상기 원격 프로시져 호출 서브시스템은 원격 메소드 호출(RMI) 시스템인 방법.23. The method of claim 22, wherein the remote procedure call subsystem is a remote method call (RMI) system. 제18항에 있어서, 상기 검색 단계는,The method of claim 18, wherein the searching step, 상기 작업에 연관된 타입들이 상기 서버 상에서 이용가능한 지의 여부를 판정하는 단계;Determining whether types associated with the task are available on the server; 상기 타입들이 상기 서버 상에서 이용가능할 때, 상기 클라이언트에 의해 제공된 파라메타에 의해 표시된 장소로부터 상기 타입들을 상기 서버에 다운로드하는 단계; 및When the types are available on the server, downloading the types to the server from the location indicated by the parameter provided by the client; And 상기 클라이언트에 의해 제공된 상기 데이타와 파라메타에 기초하여 상기 작업을 실행하는 단계를 포함하는 방법.Executing the task based on the data and parameters provided by the client. 제24항에 있어서, 상기 판정 단계 및 상기 다운로드 단계는 원격 프로시져 호출(RPC) 서브시스텡에 의해 수행되는 방법.25. The method of claim 24, wherein said determining step and said downloading step are performed by a remote procedure call (RPC) subsystem. 제25항에 있어서, 상기 판정 단계는, 원격 프로시져 호출 서브시스템의 원격 메소드 호출(RMI) 타입에 의해 수행되는 방법.27. The method of claim 25, wherein the determining step is performed by a remote method call (RMI) type of a remote procedure call subsystem. 제18항에 있어서, 만일 후속하는 작업이 상기 결과를 사용하면 캐쉬 내의 상기 작업으로부터의 상기 결과를 저장하는 부단계를 더 포함하는 방법.19. The method of claim 18, further comprising the step of storing the result from the job in a cache if a subsequent job uses the result.
KR1020007009483A 1998-02-26 1999-02-25 Method and apparatus for dynamic distributed computing over a network KR20010034542A (en)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US7604898P 1998-02-26 1998-02-26
US09/030,840 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
PCT/US1999/004064 WO1999044121A2 (en) 1998-02-26 1999-02-25 Method and apparatus for dynamic distributed computing over a network

Publications (1)

Publication Number Publication Date
KR20010034542A true KR20010034542A (en) 2001-04-25

Family

ID=26706519

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020007009483A KR20010034542A (en) 1998-02-26 1999-02-25 Method and apparatus for dynamic distributed computing over a network

Country Status (6)

Country Link
EP (1) EP1057101A2 (en)
JP (1) JP2002505462A (en)
KR (1) KR20010034542A (en)
CN (1) CN1292118A (en)
AU (1) AU2787699A (en)
WO (1) WO1999044121A2 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100497353B1 (en) * 2002-03-26 2005-06-23 삼성전자주식회사 Apparatus for processing image, apparatus and method for receiving processed image

Families Citing this family (24)

* Cited by examiner, † Cited by third party
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
DE60121605T2 (en) * 2000-05-09 2006-12-07 Sun Microsystems, Inc., Santa Clara RECALLING A REMOTE FUNCTION WITH MESSAGES IN A DISTRIBUTED COMPUTER ENVIRONMENT
JP2001344199A (en) * 2000-06-02 2001-12-14 Nec Corp Distributed processing system and method, and recording medium
JP2002095071A (en) * 2000-09-13 2002-03-29 Sanyo Electric Co Ltd Network system and control method of apparatus
DE60135200D1 (en) 2001-01-31 2008-09-18 Hewlett Packard Co Method and device to create documents
KR20030021114A (en) * 2001-09-05 2003-03-12 주식회사 미리텍 Load sharing system
GB2380911B (en) 2001-10-13 2004-09-08 Hewlett Packard Co Performance of a multi-stage service within an information technology network
CN100450256C (en) * 2002-10-28 2009-01-07 中兴通讯股份有限公司 Distribution analysis method of small area covering file in mobile communication network programme
SE0203297D0 (en) * 2002-11-05 2002-11-05 Ericsson Telefon Ab L M Remote service execution in a heterogeneous network
US20040122950A1 (en) * 2002-12-20 2004-06-24 Morgan Stephen Paul Method for managing workloads in an autonomic computer system for improved performance
US7975270B2 (en) * 2004-03-10 2011-07-05 International Business Machines Corporation Facilitating allocation of resources in a heterogeneous computing environment
JP2006004008A (en) * 2004-06-15 2006-01-05 Sony Computer Entertainment Inc Processing control unit, computer system, distributed processing method, and computer program
CN101176079B (en) * 2005-03-16 2011-12-07 航空照片技术有限公司 Method for distributing computing between server and client
CN101146116B (en) * 2006-09-11 2010-11-10 河南科技大学 A CAD graph processing system based on the network
JP5368687B2 (en) * 2007-09-26 2013-12-18 キヤノン株式会社 Arithmetic processing apparatus and method
CN101140525B (en) * 2007-10-17 2010-12-08 中兴通讯股份有限公司 Distributed translate and edit method
AU2008311755A1 (en) 2007-10-20 2009-04-23 Citrix Systems, Inc. Methods and systems for remoting three dimensional graphical data
US20090189893A1 (en) * 2008-01-27 2009-07-30 Petrov Julian Methods and systems for computing a hash from a three dimensional data set loaded into a resource
US8751844B2 (en) 2009-09-24 2014-06-10 Citrix Systems, Inc. Systems and methods for attributing an amount of power consumption to a workload
US8539080B1 (en) * 2012-12-18 2013-09-17 Microsoft Corporation Application intelligent request management based on server health and client information
US10776325B2 (en) 2013-11-26 2020-09-15 Ab Initio Technology Llc Parallel access to data in a distributed file system
CN104794095B (en) * 2014-01-16 2018-09-07 华为技术有限公司 Distributed Calculation processing method and processing device
CN107194490B (en) * 2016-03-14 2022-08-12 商业对象软件有限公司 Predictive modeling optimization

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
ATE151183T1 (en) * 1989-02-24 1997-04-15 Digital Equipment Corp BROKER FOR SELECTING COMPUTER NETWORK SERVERS
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

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100497353B1 (en) * 2002-03-26 2005-06-23 삼성전자주식회사 Apparatus for processing image, apparatus and method for receiving processed image

Also Published As

Publication number Publication date
AU2787699A (en) 1999-09-15
EP1057101A2 (en) 2000-12-06
WO1999044121A2 (en) 1999-09-02
WO1999044121A3 (en) 1999-10-21
CN1292118A (en) 2001-04-18
JP2002505462A (en) 2002-02-19

Similar Documents

Publication Publication Date Title
US6446070B1 (en) Method and apparatus for dynamic distributed computing over a network
KR20010034542A (en) Method and apparatus for dynamic distributed computing over a network
EP1076290B1 (en) Method for on-demand network application download and execution
EP0735470B1 (en) Method and apparatus for determining the type of an object in a distributed object system
US6393497B1 (en) Downloadable smart proxies for performing processing associated with a remote procedure call in a distributed system
US6487607B1 (en) Methods and apparatus for remote method invocation
EP0876648B1 (en) Method and apparatus for dynamically brokering object messages among object models
US6253252B1 (en) Method and apparatus for asynchronously calling and implementing objects
JP3251800B2 (en) Communication system for exchanging data between computers in a network
US7971210B2 (en) Interface for processing client-server method calls within a single virtual machine
US8359570B2 (en) Adaptive scripting tool
US6877163B1 (en) Method and system for dynamic proxy classes
JPH0283627A (en) Interpreter
JP2000155686A (en) Method and device for executing program in distribution system, computer readable storage medium with program execution procedure in distribution system stored therein and computer system
US6470346B2 (en) Remote computation framework
KR100497384B1 (en) Distributed processing system using virtual machine, and method thereof
US6240440B1 (en) Method and apparatus for implementing virtual threads
US20190278639A1 (en) Service for enabling legacy mainframe applications to invoke java classes in a service address space
WO1999044123A1 (en) Downloadable smart proxies for performing processing associated with a remote procedure call in a distributed system
Taveira et al. Asynchronous Remote Method Invocation in Java.
Pereira et al. Tactics for Remote Method Invocation.
Goldszmidt Elastic servers in cords
Nicoletti Redefining the web: toward the creation of large-scale distributed applications
Diehl et al. Implementing Multi-User Worlds with CORBA
Kerry et al. Service Management in DISCWorld using CORBA and Java

Legal Events

Date Code Title Description
WITN Withdrawal due to no request for examination