Dynamic load balancer for multiple network servers
First Claim
Patent Images
1. A method for assigning a plurality of data requests among a plurality of servers, said method comprising:
- determining a load on each of said plurality of servers, wherein said load on each of said plurality of servers is computed relative to a power rating of each of said plurality of servers;
assigning each of said data requests to a bucket of a first plurality of buckets, wherein said first plurality of buckets outnumber said plurality of servers; and
assigning each bucket of said plurality of buckets containing a data request to a server of said plurality of servers in response to said load on each of said plurality of servers;
wherein each of said data requests includes a source address and wherein each of said data requests is assigned to a bucket based on said source address.
19 Assignments
0 Petitions
Accused Products
Abstract
The present invention provides methods and systems for balancing the load on a plurality of servers using a load balancing algorithm which continuously examines the loads on the plurality of servers and makes adjustments in the loads accordingly. Among the factors considered in the load balancing are the power of each server relative to other servers, the load on each server relative to the other servers, and a “credit” for each server based on their power and load.
476 Citations
37 Claims
-
1. A method for assigning a plurality of data requests among a plurality of servers, said method comprising:
-
determining a load on each of said plurality of servers, wherein said load on each of said plurality of servers is computed relative to a power rating of each of said plurality of servers;
assigning each of said data requests to a bucket of a first plurality of buckets, wherein said first plurality of buckets outnumber said plurality of servers; and
assigning each bucket of said plurality of buckets containing a data request to a server of said plurality of servers in response to said load on each of said plurality of servers;
wherein each of said data requests includes a source address and wherein each of said data requests is assigned to a bucket based on said source address. - View Dependent Claims (2, 3, 4, 5, 6)
said first plurality of buckets contain B buckets; each of said buckets in said first plurality of buckets is uniquely numbered from zero to B−
1; and
a data request of said plurality of data requests is assigned to bucket number said source address of said data request modulo B.
-
-
3. The method of claim 1, wherein said assigning each bucket of said plurality of buckets containing a data request to a server of said plurality of servers further comprises:
-
detecting a first not-assigned bucket having at least one of said data requests; and
assigning said first not-assigned bucket to an underloaded server.
-
-
4. The method of claim 3, wherein said underloaded server is the most underloaded server.
-
5. The method of claim 1, wherein assigning each bucket of said plurality of buckets containing a data request to a server of said plurality of servers further comprises:
-
detecting a first not-assigned bucket having at least one of said data requests;
calculating a credit for each of said servers; and
assigning said first not-assigned bucket to a server having a largest said credit.
-
-
6. The method of claim 5, further comprising detecting a skewed load on said plurality of servers.
-
7. A method for assigning a plurality of data requests among a plurality of servers, said method comprising:
-
determining a load on each of said plurality of servers, wherein said load on each of said plurality of servers is computed relative to a power rating of each of said plurality of servers;
assigning each of said data requests to a bucket of a first plurality of buckets, wherein said first plurality of buckets outnumber said plurality of servers;
assigning each bucket of said plurality of buckets containing a data request to a server of said plurality of servers in response to said load on each of said plurality of servers, including detecting a first not-assigned bucket having at least one of said data requests, calculating a credit for each of said servers, and assigning said first not-assigned bucket to a server having a largest said credit;
detecting a skewed load on said plurality of servers;
selecting a second bucket from said plurality of buckets, wherein said second bucket is in a low granularity mode; and
converting said second bucket from said low granularity mode to a high granularity mode. - View Dependent Claims (8, 9)
converting comprises creating a plurality of child buckets; and
assigning data requests destined for said second bucket to one of said plurality of child buckets.
-
-
9. The method of claim 8 wherein:
-
assigning each bucket of said plurality of buckets comprises assigning a not-assigned child bucket of the plurality of child buckets to a server having a largest said credit.
-
-
10. A load balancer for balancing the load due to a plurality of data requests on a plurality of servers, said load balancer comprising:
-
a plurality of buckets;
a bucket selector configured to assign each of said data requests to a bucket in said plurality of buckets;
a load estimator or configured to compute a load on each of said plurality of servers, wherein said load on each of said plurality of servers is computed relative to a power rating of each of said plurality of servers; and
a server selector configured to dynamically assign any unassigned bucket containing a data request to a server in said plurality of servers in response of the estimated load on each of said plurality of servers, wherein each of said data requests contains a source address; and
said bucket selector determines which bucket to assign a specific data request based on said source address of said specific data request. - View Dependent Claims (11, 12, 13, 14, 15, 16)
-
-
17. A load balancer for balancing the load due to a plurality of data requests on a plurality of servers, said load balancer comprising:
-
memory defining a plurality of buckets, wherein said plurality of buckets outnumber said plurality of servers;
a bucket selector configured to assign each of said data requests to a bucket in said plurality of buckets;
a load estimator configured to compute a load on each of said plurality of servers by calculating a credit for each of said servers, wherein said load on each of said plurality of servers is computed relative to a power rating of each of said plurality of servers, and to detect a skewed load on said plurality of servers;
a server selector configured to dynamically assign any unassigned bucket containing a data request to a server in said plurality of servers in response to the estimated load on each of said plurality of servers by detecting a first not-assigned bucket having at least one of said data requests and assigning said first not-assigned bucket to a server having a largest said credit; and
a bucket granularizer configured to select a second bucket from said plurality of buckets which second bucket is in a low granularity mode and to convert said first bucket from said low granularity mode to a high granularity mode, in response to a detection of a skewed load. - View Dependent Claims (18, 19)
the bucket granularizer is configured to convert said first bucket by creating a plurality of child buckets; and
the bucket selector is configured to assign data requests destined for said second bucket to one of said plurality of child buckets.
-
-
19. The load balancer of claim 18 wherein:
the server selector is configured to assign a not-assigned child bucket of the plurality of child buckets to a server having a largest said credit.
-
20. A method of assigning a plurality of data requests among a plurality of servers, said method comprising:
-
determining a weight of each server as a ratio of a power rating of the server and a sum of the power ratings of all of the servers;
determining a weighted load of each server as a ratio of a load of the server and the weight of the server;
determining a load normalizer as a minimum one of absolute values of the weighted loads of the servers;
determining a credit of each server as a difference between the weight of the server and a ratio of the weighted load of the server and the load normalizer;
assigning each of said data requests to a bucket of a plurality of buckets; and
assigning buckets of said plurality of buckets containing a data request to servers of said plurality of servers that have greatest said credits. - View Dependent Claims (21, 22, 23, 24, 25, 26, 27, 28)
assigning buckets comprises assigning one of the buckets containing a data request to a server of said plurality of servers that has a greatest said credit;
redetermining said credit of said server to which said one of the buckets was assigned; and
assigning another one of the buckets containing a data request to a server that currently has a greatest said credit.
-
-
22. The method of claim 21 wherein:
said determinings and said redetermining are effected via integer arithmetic.
-
23. The method of claim 20 further comprising:
-
determining a flow weight as a minimum one of absolute values of the credits of the servers;
determining a flow adjustment of each server as a ratio of the flow weight and the weight of the server;
whereinassigning buckets comprises assigning one of the buckets containing a data request to a server of said plurality of servers that has a greatest said credit;
reducing the credit of said server to which said one of the buckets was assigned by the flow adjustment of said server; and
assigning another one of the buckets containing a data request to a server that currently has a greatest said credit.
-
-
24. The method of claim 23 wherein:
-
determining a weight comprises scaling said weight by a weight scale;
determining a weighted load comprises scaling said weighted load by a load scale; and
determining a flow adjustment comprises scaling said flow adjustment by the load scale.
-
-
25. The method of claim 23 wherein:
said determining and said reducing are effected via integer arithmetic.
-
26. The method of claim 20 wherein:
-
determining a weight comprises scaling said weight by a weight scale; and
determining a weighted load comprises scaling said weighted load by a load scale.
-
-
27. The method of claim 20 wherein:
said determinings are effected via integer arithmetic.
-
28. The method of claim 20 wherein:
-
a load of a server comprises a plurality of ones of;
a number of data requests received by the server, a number of data packets received by the server, a number of bytes received by the server, a number of data packets sent by the server, and a number of bytes sent by the server.
-
-
29. A load balancer for balancing the load due to a plurality of data requests on a plurality of servers, said load balancer comprising:
-
a plurality of buckets;
a bucket selector configured to assign each of said data requests to a bucket of said plurality of buckets;
a credit calculator configured to determine a weight of each server as a ratio of a power rating of the server and a sum of the power ratings of all of the servers, to determine a weighted load of each server as a ratio of a load of the server and the weight of the server, to determine a load normalizer as minimum one of absolute values of the weighted loads of the servers, and to determine a credit of each server as a difference between the weight of the server and a ratio of the weighted load of the server and the load normalizer; and
a server selector configured to assign buckets of said plurality of buckets containing a data request to servers of said plurality of servers that have greatest said credits. - View Dependent Claims (30, 31, 32, 33, 34, 35, 36, 37)
the credit calculator is configured to redetermine said credit of a server to which one of the buckets was assigned; and
the server selector is configured to assign said one of the buckets containing a data request to a server of said plurality of servers that has a greatest said credit, and to assign another one of the buckets containing a data request to a server that currently has a greatest said credit.
-
-
31. The load balancer of claim 30 wherein:
the credit calculator is an integer arithmetic calculator.
-
32. The load balancer of claim 29 wherein:
-
the credit calculator is further configured to determine a flow weight as a minimum one of absolute values of the credits of the servers, to determine a flow adjustment of each server as a ratio of the flow weight and the weight of the server, and to reduce the credit of a server to which one of the buckets was assigned by the flow adjustment of said server; and
the server selector is configured to assign said one of the buckets containing a data request to a server of said plurality of servers that has a greatest said credit, and to assign another one of the buckets containing a data request to a server that currently has a greatest said credit.
-
-
33. The load balancer of claim 32 wherein:
the credit calculator is configured to scale said weight of each server by a weight scale and to scale said weighted load of each server and the flow adjustment by a load scale.
-
34. The load balancer of claim 32 wherein:
the credit calculator is an integer arithmetic calculator.
-
35. The load balancer of claim 29 wherein:
the credit calculator is configured to scale said weight of each server by a weight scale and to scale said weighted load of each server by a load scale.
-
36. The load balancer of claim 29 wherein:
the credit calculator is an integer arithmetic calculator.
-
37. The load balancer of claim 29 wherein:
-
a load of a server comprises a plurality of ones of;
a number of data requests received by the server, a number of data packets received by the server, a number of bytes received by the server, a number of data packets sent by the server, and a number of bytes sent by the server.
-
Specification