Methods and systems to distribute client software tasks among a number of servers
First Claim
1. A method, comprising:
- operating a computer system including several clients and several servers;
generating an activation request with a first one of the clients for a software task, the software task being designated for distributed server execution;
selecting two or more servers in response to the request based on data maintained about the servers by the first one of the clients;
interrogating the two or more servers with the first one of the clients;
providing the first one of the clients information corresponding to processing load for each of the two or more servers in response to said interrogating; and
selecting one of the servers to execute the task as a function of the information.
4 Assignments
0 Petitions
Accused Products
Abstract
A system of networked computers is disclosed having a number of servers and a number of clients. The clients are each provided with a server selector routine and the servers are each provided with a server reporter routine. The server selector routine of any of the clients is operable to obtain server processing load information from the server reporter routine of any of the servers. The server selector routine is responsive to a client activation request for a software task designated for server execution to select two or more servers to interrogate for server processing load information and designate one of the servers to execute the software task based on the server processing load information obtained by this interrogation.
129 Citations
32 Claims
-
1. A method, comprising:
-
operating a computer system including several clients and several servers;
generating an activation request with a first one of the clients for a software task, the software task being designated for distributed server execution;
selecting two or more servers in response to the request based on data maintained about the servers by the first one of the clients;
interrogating the two or more servers with the first one of the clients;
providing the first one of the clients information corresponding to processing load for each of the two or more servers in response to said interrogating; and
selecting one of the servers to execute the task as a function of the information. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
requesting server execution of a software object with a second one of the clients;
selecting a subset of the servers with the second one of the clients based on server data maintained by the second one of the clients, the server data being determined from one or more prior server interrogation responses;
providing the second one of the clients a number of server characteristics each corresponding to server processing load for a different member of the subset in response to said requesting; and
designating one member of the subset to execute the software object in accordance with the server characteristics.
-
-
4. The method of claim 1, wherein the computer system includes a host computer with a telephone switch coupled to a telephone network, and further comprising:
-
controlling the telephone switch with the host computer; and
directing a telephone call to a telephone associated with one of the clients during said controlling.
-
-
5. The method of claim 1, further comprising measuring response time of each of the number of servers to said interrogating to at least partially determine processing load.
-
6. The method of claim 1, wherein the data maintained by the first one of the clients includes a plurality of estimates each corresponding to processing load for a different server.
-
7. The method of claim 6, further comprising adjusting one of the estimates corresponding to the one of the servers selected to execute the task to reflect a processing load increase.
-
8. The method of claim 6, further comprising adjusting one of the estimates to reflect a decrease in processing load in response to passage of a selected time interval determined relative to a most recent interrogation of a corresponding one of the servers.
-
9. The method of claim 1, further comprising:
-
executing an application program with the first one of the clients, the software task being an object belonging to an object class selected for distributed processing among the servers;
intercepting the activation request from a nominal processing flow;
directing the activation request to a distribution routine of the first one of the clients; and
wherein the information corresponds to a number of current bids to execute the object, the current bids each being from a different one of the two or more servers, the data corresponds to bid estimates for the servers, and the two or more servers selected for said interrogating correspond to the lowest bid estimates.
-
-
10. A system of networked computers, comprising:
-
a number of servers; and
a number of clients, the clients each being provided with a server selector and the servers each being provided with a server reporter, the server selector of any of the clients being operable to obtain server processing load information from the server reporter of any of the servers; and
wherein the server selector is responsive to a client activation request for a software object designated for server execution by a corresponding one of the clients to select two or more servers to interrogate for the server processing load information based on data maintained by the server selector about the servers and designate one of the servers to execute the software object. - View Dependent Claims (11, 12, 13, 14, 15, 16)
-
-
17. A method, comprising:
-
operating a computer system including a number of clients and a number of servers;
generating an activation request with a first one of the clients for a software object to be executed by one of the servers;
interrogating the servers with the first one of the clients in response to the request;
providing an object pointer and server processing load information to the first one of the clients from a first one of the servers in response to said interrogating. - View Dependent Claims (18, 19, 20, 21, 22, 23, 24, 25)
providing another object pointer and further server processing load information to the first one of the clients from a second one of the servers in response to said interrogating; and
selecting one of the first and second one of the servers to execute an instance of said software object based on the server processing load information from the first one of the servers and the further server processing load information from the second one of the servers.
-
-
19. The method of claim 17, further comprising maintaining data at the first one of the clients corresponding to one or more prior interrogations of the servers.
-
20. The method of claim 17, wherein the object pointer is provided to the first one of the clients by the first one of the servers only if the server processing load information indicates a processing load level for the first one of the servers that is below a predefined threshold.
-
21. The method of claim 17, further comprising:
-
generating a number of estimates each relating to a processing load of a different one of the servers;
upwardly adjusting one of the estimates in response to selection of a corresponding one of the servers to execute an instance of the software object; and
downwardly adjusting another of the estimates after a predetermined time interval passes without interrogating another of the servers.
-
-
22. The method of claim 17, further comprising maintaining data at the first one of the clients relating to capability of the servers to generate an instance of the software object.
-
23. The method of claim 17, further comprising:
-
executing an application program with a second one of the clients, said executing including generating a different activation request for a different software object for server execution;
intercepting the different activation request from a nominal processing flow;
directing the different activation request to a distribution routine of the second one of the clients;
selecting a subset of the servers with the second one of the clients based on server data maintained by the second one of the clients, the server data being determined from one or more prior server interrogation responses;
providing the second one of the clients a number of server characteristics each corresponding to server processing load for a different member of the subset; and
designating one member of the subset to execute the different software object in accordance with the server characteristics.
-
-
24. The method of claim 17, further comprising:
-
determining the server processing load information corresponds to a processing load level below a predefined threshold with the first one of the servers; and
returning the object pointer in response to said determining.
-
-
25. The method of claim 17, further comprising operating a call center with the computer system.
-
26. A method, comprising:
-
operating a computer system including a number of clients and a number of servers;
generating an activation request with a first one of the clients for a routine to be executed by one of the servers;
interrogating each of the servers with the first one of the clients in response to the request;
providing the first one of the clients information from each of the servers in response to said interrogating, the information corresponding to availability of the routine; and
selecting a first one of the servers to execute the routine with the first one of the clients in accordance with the information from each of the servers. - View Dependent Claims (27, 28, 29, 30, 31, 32)
executing an application program with a second one of the clients, said executing including generating a different request for a different routine for server execution;
intercepting the different request from a nominal processing flow;
directing the different request to a distribution routine of the second one of the clients;
selecting a subset of the servers with the second one of the clients based on server data maintained by the second one of the clients, the server data being determined from one or more prior server interrogation responses;
providing the second one of the clients a number of server characteristics each corresponding to server processing load for a different member of the subset; and
designating one member of the subset to execute the different routine in accordance with the server characteristics.
-
Specification