Method and apparatus for dynamic distributed computing over a network
First Claim
1. A method performed on a computer system having a primary storage device, a secondary storage device, a display device, and an input/output mechanism which enables a client to dynamically distribute to a server computer in a collection of server computers a task developed in a programming language compatible with each of the server computers, the method comprising the steps of:
- selecting a server from a plurality of heterogenous servers to process a task based upon the overall processing load distribution among the collection of server computers and the specialized computing capabilities of each server computer;
marshalling parameters and data into a task request which further comprises the substeps of, determining if code and data types related to the requested task are present on the selected server, and downloading the code and related data types onto the selected server when the code or data types are not present on the selected server;
invoking a generic compute method associated with the selected server which executes the task and further comprises the substeps of, providing the task as a parameter to the generic compute method, and indicating to the server that results from a computed task should be stored in a result cache on the selected server for subsequent tasks to use; and
receiving the computed task back from the selected server for further processing on the client.
0 Assignments
0 Petitions
Accused Products
Abstract
In a client-server environment it would be desirable to have a number of servers capable of processing a broad range of applications such as compute intensive applications or graphic operations such as rendering. In a heterogeneous client-server environment, conventional systems statically stored executables on a server for later execution. This required extensive storage as well as many programmer hours porting applications to the server machine from client machines which had different object modules. This invention solves these problems by creating a homogeneous execution environment within a heterogenous client-server network. Accordingly, this system dynamically downloads code on a compute server, executes the code on the compute server, and returns the results to the calling client method. This technique does not require multiple copies of code to be downloaded nor compiled since the server code can be executed on all the different systems. A system designed according to the this technique is also efficient. The server code is generally compiled locally on the client and downloaded to the server as byte-codes and then executed.
153 Citations
27 Claims
-
1. A method performed on a computer system having a primary storage device, a secondary storage device, a display device, and an input/output mechanism which enables a client to dynamically distribute to a server computer in a collection of server computers a task developed in a programming language compatible with each of the server computers, the method comprising the steps of:
-
selecting a server from a plurality of heterogenous servers to process a task based upon the overall processing load distribution among the collection of server computers and the specialized computing capabilities of each server computer;
marshalling parameters and data into a task request which further comprises the substeps of, determining if code and data types related to the requested task are present on the selected server, and downloading the code and related data types onto the selected server when the code or data types are not present on the selected server;
invoking a generic compute method associated with the selected server which executes the task and further comprises the substeps of, providing the task as a parameter to the generic compute method, and indicating to the server that results from a computed task should be stored in a result cache on the selected server for subsequent tasks to use; and
receiving the computed task back from the selected server for further processing on the client.
-
-
2. A method performed on a processor contained within a computer system having a primary storage device, a secondary storage device, a display device, and an input/output mechanism which enables a server associated with a collection of servers to dynamically receive and process a task from a client computer wherein the task is in an executable programming language compatible with each of the server computers, the method comprising the steps of:
-
unmarshalling parameters and data from a task request into a task, which further comprises the substeps of, determining if the types related to the task are available on the server, and when the types related to the task are not available on the server, downloading the types onto the server from a location as indicated by the parameters provided by the client;
invoking a generic compute method, which is capable of processing all types of tasks, which executes the task and generates results;
storing results from the executed tasks in a cache if a subsequent task will use the results; and
returning the results from executed task to the client.
-
-
3. A method performed on a processor operatively coupled to a collection of servers which enables a client associated with the processor to dynamically distribute a task to a server, the method comprising the steps of:
-
selecting a server to process the task;
forming a task request from the parameters and data;
sending the task request to the selected server which invokes a generic compute technique capable of executing the task request on the selected server and generates results; and
receiving the results back from the selected server. - View Dependent Claims (4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17)
-
-
18. A method performed on a processor operatively coupled to a collection of servers which enables a server associated with the processor to dynamically receive and process a task from a client computer wherein the task is in an executable programming language compatible with each of the server computers, the method comprising the steps of:
-
retrieving parameters and data from a task request into a task;
invoking a generic compute method on the server, which is capable of processing a plurality of types of tasks, which executes the task and generates results;
returning results to the client. - View Dependent Claims (19, 20, 21, 22, 23, 24, 25, 26, 27)
-
Specification