Score-based scheduling of service requests in a grid services computing platform
First Claim
1. A method for providing computational services to a client using a grid-based distributed computing system, the system including a plurality of engines and at least one grid manager, the method comprising:
- deploying executable code corresponding one or more service(s) such that the engines can access the executable code;
registering the service(s) with the grid manager;
creating instance(s) of the service(s) invocable by the client; and
,using one or more of the instance(s) to invoke one or more of the registered service(s), wherein invoking a service comprises;
communicating a service request to the grid manager;
using the grid manager to assign the service request to an available engine by (i) obtaining neediness score(s) for pending service request(s), each neediness score based on at least (a) an amount of time that engines have spent running task(s) associated with the requested service and (b) an amount of time that the request for the service has spent waiting to be assigned, (ii) obtaining affinity scores reflecting the affinity of available engine(s) to requested service(s), and (iii) applying an adaptive scheduling algorithm to assign the service request to one or more available engine(s); and
,executing code corresponding to the requested service on at least one of the assigned engine(s).
13 Assignments
0 Petitions
Accused Products
Abstract
A service-oriented framework allows client applications to services hosted on a distributed computing access computational grid. Services facilitate remote, parallel execution of code in a way that is scalable, fault-tolerant, dynamic and language-independent. Services can be written in a variety of languages, and do not need to be compiled or linked with vendor-supplied code. A client written in one language can invoke a Service written in another. A benefit of the invention over traditional approaches is that it virtualizes the Service. Rather than send a request directly to the remote machine hosting the Service, a client request is sent to a manager, which enqueues until an Engine is available. The first Engine to dequeue the request hosts the Service. This mechanism, in which a single virtual Service instance (the client-side object) is implemented by one or more physical instances (Engine processes), provides for fault tolerance and essentially unlimited scalability.
-
Citations
34 Claims
-
1. A method for providing computational services to a client using a grid-based distributed computing system, the system including a plurality of engines and at least one grid manager, the method comprising:
-
deploying executable code corresponding one or more service(s) such that the engines can access the executable code; registering the service(s) with the grid manager; creating instance(s) of the service(s) invocable by the client; and
,using one or more of the instance(s) to invoke one or more of the registered service(s), wherein invoking a service comprises; communicating a service request to the grid manager; using the grid manager to assign the service request to an available engine by (i) obtaining neediness score(s) for pending service request(s), each neediness score based on at least (a) an amount of time that engines have spent running task(s) associated with the requested service and (b) an amount of time that the request for the service has spent waiting to be assigned, (ii) obtaining affinity scores reflecting the affinity of available engine(s) to requested service(s), and (iii) applying an adaptive scheduling algorithm to assign the service request to one or more available engine(s); and
,executing code corresponding to the requested service on at least one of the assigned engine(s). - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18)
-
-
19. A method for providing computational services to a client using a grid-based distributed computing system, the system including a plurality of engines and at least one grid manager, the method comprising:
-
registering service(s) with the grid manager; deploying executable code(s) corresponding to the registered service(s) using a file update mechanism to distribute the executable code(s) to the engines, wherein at least some of said executable codes(s) are distributed while the grid manager is idle; creating instance(s) of the service(s) that permit invocation by client(s); and
,using one or more of the instance(s) to invoke one or more of the registered service(s), wherein invoking a service comprises; communicating a service request to the grid manager; using the grid manager to assign the service request to an available engine by (1) computing a neediness score for the service request based, at least in part, on (i) a priority weight for the requested service, (ii) an amount of time that engines have spent running task(s) associated with the requested service, and (iii) an amount of time that the request for the service has spent waiting to be assigned, and (2) applying an adaptive scheduling algorithm to assign the service request to one or more available engine(s); and
,executing code(s) corresponding to the requested service on at least one of the assigned engine(s). - View Dependent Claims (20, 21, 22, 23, 24, 25, 26, 27)
-
-
28. A method for providing computational services to a client using a grid-based distributed computing system, the system including a plurality of engines and at least one grid manager, the method comprising:
-
obtaining executable code corresponding one or more service(s); registering the service(s); providing client-side proxy(s) for the registered service(s); and
,using one or more of the proxy(s) to invoke one or more of the registered service(s), wherein invoking a service comprises; communicating a service request via a corresponding client-side proxy; assigning the service request to at least one available engine by (i) obtaining a neediness score for the service request, said neediness score based on at least (a) an amount of time that engines have spent running task(s) associated with the service and (b) an amount of time that the request for the service has spent waiting to be assigned, (ii) obtaining affinity scores reflecting the affinity of available engine(s) to the requested service, and (iii) applying an adaptive scheduling algorithm to assign the service request to one or more available engine(s); and
,servicing the request on at least one of the assigned engine(s). - View Dependent Claims (29, 30, 31, 32, 33, 34)
-
Specification