IP Library Granted Patent US 8,914,517
Granted Patent B1
US 8,914,517 · App. 13/627,121 · Granted Dec 16, 2014

Method and system for predictive load balancing

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,914,517
App. No.
13/627,121
Granted
Dec 16, 2014
Kind
B1
Abstract

A method for load balancing resource requests among a plurality of servers is disclosed and includes providing an enterprise content management (ECM) system coupled to processing servers for managing a plurality of resources, where each resource is identified by a resource identifier. The ECM system includes a load manager that receives a first plurality of requests. Each request includes a resource identifier and an action, and is assigned to a processing server for processing. The method includes recording performance statistics for each request when each request is processed. Request types based on the resource identifier and the action of each request are also identified. For each request type, a weighting factor is generated based on the performance statistics for each request of the request type. Thereafter, a new request is assigned to a processing server based on the weighting factor for request type of the new request.

Claims (53)

1. A system for load balancing resource requests among a plurality of servers, the system comprising:

a processor-based enterprise content management (ECM) system executed on a computer coupled to a plurality of processing servers for managing a plurality of resources, wherein each of the plurality of resources is identified by a resource identifier, the ECM system comprising a load manager component configured to receive a first plurality of resource requests and to assign each of the first plurality of requests to a processing server for processing, wherein each resource request includes a resource identifier and an action; and

a processor-based request manager component executed on the computer and configured to record performance statistics for each of the first plurality of resource request when each request is processed by a processing server, to identify a plurality of request types based on the resource identifier and the action of each of the first plurality of requests, wherein each resource request is associated with a request type, and to generate, for each of the plurality of request types, a weighting factor based on the performance statistics recorded for each resource request of the request type,

wherein when a second resource request of a second plurality of resource requests is received, the load manager component is configured to assign the second resource request to a processing server based on the weighting factor for the request type with which the second resource request is associated.

2. The system of claim 1 wherein the processor-based request manager component is configured to generate the weighting factor for a request type by:

collecting the performance statistics for each resource request associated with the request type, wherein the performance statistics for a resource request includes a processing time to process the request;

calculating an average processing time for the request type; and

determining the weighting factor for the request type based on the average processing time for the request type.

3. The system of claim 2 wherein the request manager component is further configured for storing the weighting factor for each of the plurality of request types in a request weighting log.

4. The system of claim 3 wherein when the second resource request of the second plurality of resource requests is received, the load manager component is configured to assign the second resource request to a server by:

determining the request type with which the second resource request is associated based on the second request's resource identifier and action;

identifying the weighting factor for the request type using the request weighting log;

determining that a first server of the plurality of servers is available to process the second resource request based on the weighting factor and on a current workload associated with the first server; and

assigning the second resource request to the first server for processing.

5. The system of claim 2 wherein when the second resource request is processed by the server, the processor-based request manager component is further configured to record performance statistics for the second resource request and to regenerate the weighting factor for the request type associated with the second resource request based on the performance statistics for the second resource request.

6. The system of claim 5 wherein the request manager component is configured to regenerate the weighting factor for a request type by:

collecting the performance statistics for the second resource request;

recalculating the average processing time for the request; and

updating the weighting factor for the request type based on the recalculated average processing time.

7. The system of claim 1 wherein the performance statistics for a resource request includes a time to process the request.

8. The system of claim 1 wherein a resource is an addressable object, and the resource identifier comprises a resource type and an object identifier, and wherein a first request type is associated with a first resource type and a first action, and each resource request associated with the first request type includes the first resource type and the first action.

9. The system of claim 1 wherein the ECM system is a representational state transfer (REST) service implemented using HTTP, and wherein the resource identifier in each resource request is a uniform resource identifier (URI) and the action is an HTTP method.

10. The method of claim 1 wherein the ECM system is a representational state transfer (REST) service and wherein the resource identifier in each resource request is a uniform resource identifier (URI) and the action is an HTTP method.

11. A computer program product, comprising a non-transitory computer-readable medium having a computer-readable program code embodied therein for load balancing resource requests among a plurality of servers, which instructions, when executed by one or more processors, cause the one or more processors to carry out the steps of:

providing an enterprise content management (ECM) system coupled to a plurality of processing servers for managing a plurality of resources, wherein each of the plurality of resources is identified by a resource identifier, the enterprise content management system comprising a load manager component configured to receive a first plurality of resource requests and to assign each of the first plurality of resource requests to a processing server for processing, wherein each resource request includes a resource identifier and an action;

recording performance statistics for each of the first plurality of resource requests when each request is processed by a processing server;

identifying a plurality of request types based on the resource identifier and the action of each of the first plurality of requests, wherein each resource request is associated with a request type;

generating, for each of the plurality of request types, a weighting factor based on the performance statistics recorded for each resource request of the request type; and

assigning a second resource request of a second plurality of resource requests to a processing server based on the weighting factor for the request type with which the second resource request is associated.

12. A method for load balancing resource requests among a plurality of servers, the method comprising:

providing, by a server, an enterprise content management (ECM) system coupled to a plurality of processing servers for managing a plurality of resources, wherein each of the plurality of resources is identified by a resource identifier, the enterprise content management system comprising a load manager component configured to receive a first plurality of resource requests and to assign each of the first plurality of requests to a processing server for processing, wherein each resource request includes a resource identifier and an action;

recording, by the server, performance statistics for each of the first plurality of resource requests when each request is processed by a processing server;

identifying, by the server, a plurality of request types based on the resource identifier and the action of each of the first plurality of requests, wherein each resource request is associated with a request type;

generating, by the server, for each of the plurality of request types, a weighting factor based on the performance statistics recorded for each resource request of the request type; and

assigning a second resource request of a second plurality of resource requests to a processing server based on the weighting factor for the request type with which the second resource request is associated.

13. The method of claim 12 wherein generating the weighting factor for a request type comprises:

collecting the performance statistics for each resource request associated with the request type, wherein the performance statistics for a resource request includes a processing time to process the request;

calculating an average processing time for the request type; and

determining the weighting factor for the request type based on the average processing time for the request type.

14. The method of claim 13 wherein when the second resource request is processed by the server, the method further includes recording performance statistics for the second resource request.

15. The method of claim 14 further comprising regenerating the weighting factor for the request type associated with the second resource request based on the performance statistics for the second resource request.

16. The system of claim 15 wherein regenerating the weighting factor for the request type comprises:

collecting the performance statistics for the second resource request;

recalculating the average processing time for the request type; and

updating the weighting factor for the request type based on the recalculated average processing time.

17. The method of claim 13 further comprising storing the weighting factor for each of the plurality of request types in a request weighting log.

18. The method of claim 17 wherein assigning the second resource request to a server comprises:

determining the request type with which the second resource request is associated based on the second request's resource identifier and action;

identifying the weighting factor for the request type using the request weighting log;

determining that a first server of the plurality of servers is available to process the second resource request based on the weighting factor and on a current workload associated with the first server; and

assigning the second resource request to the first server for processing.

19. The method of claim 12 wherein the performance statistics for a resource request includes at least one of a time to process the request, and a cost to process the request.

20. The method of claim 12 wherein a resource is an addressable object, and the resource identifier comprises a resource type and an object identifier, and wherein a first request type is associated with a first resource type and a first action, and each resource request associated with the first request type includes the first resource type and the first action.

Assignments (7)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (045455/0001) Recorded May 20, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO ASAP SOFTWARE EXPRESS, INC.); DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC CORPORATION (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MAGINATICS LLC); EMC IP HOLDING COMPANY LLC (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MOZY, INC.); SCALEIO LLC
Reel/Frame 061753/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 1, 2017
From: EMC CORPORATION
To: OPEN TEXT CORPORATION
Reel/Frame 041579/0133 →
PATENT RELEASE (REEL:40134/FRAME:0001) Recorded Jan 23, 2017
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
To: EMC CORPORATION, AS GRANTOR
Reel/Frame 041073/0136 →
RELEASE OF SECURITY INTEREST Recorded Jan 23, 2017
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: EMC CORPORATION
Reel/Frame 041073/0443 →
SECURITY AGREEMENT Recorded Sep 21, 2016
From: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; SPANNING CLOUD APPS LLC; WYSE TECHNOLOGY L.L.C.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 040134/0001 →
SECURITY AGREEMENT Recorded Sep 21, 2016
From: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; SPANNING CLOUD APPS LLC; WYSE TECHNOLOGY L.L.C.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 040136/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 1, 2012
From: SHPILYUCK, BORIS; LIMONOV, DMITRY; VOLCHEGURSKY, DMITRY; RANKOV, ALEX
To: EMC CORPORATION
Reel/Frame 029224/0973 →