IP Library Granted Patent US 7,512,707
Granted Patent B1
US 7,512,707 · App. 11/266,770 · Granted Mar 31, 2009

Load balancing of server clusters

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 7,512,707
App. No.
11/266,770
Granted
Mar 31, 2009
Kind
B1
Abstract

A load balancing scheme is described for a server cluster. An application identifier is received by the cluster from a client desiring to connect to the application. Each one of the servers in the cluster independently hashes the application identifier into a unique number. This unique number is used to determine a preferred one of the servers for the connection. The servers then each calculate a priority code using the unique number, a load level for each server, and/or a node identifier assigned to the servers in the cluster. If the preferred cluster server is available, it transmits its priority code to the client before the other servers transmit their priority codes. Otherwise, each of the available cluster servers transmits their priority codes to the client. The client selects the cluster server with the most favorable priority for making the connection.

Claims (85)

1. A method for load balancing a server cluster servicing a plurality of distributed applications, said method comprising:

receiving a request at said server cluster from one of a plurality of clients to connect to one of said plurality of distributed applications, wherein said request includes an identifier of said one of said plurality of distributed applications;

calculating a priority code at each one of a plurality of servers of said server cluster using said identifier, wherein said each one of said plurality of servers calculates its own said priority code;

hashing said identifier into a unique number;

normalizing said unique number to result in a number within the range of a plurality of node numbers labeling each of said plurality of servers;

comparing said resulting number to each of said plurality of node numbers; and

responsive to said comparing, identifying preferred ones of said plurality of servers, wherein said preferred ones have one of said plurality of node numbers that match said resulting number;

transmitting said priority codes and identification of said preferred ones to said one of said plurality of clients; and

connecting a selected one of said plurality of servers to said one of said plurality of clients, wherein said selection is made by said one of said plurality of clients based upon an evaluation by said one of said plurality of clients of said transmitted priority codes.

2. The method of claim 1 further comprising:

delaying said transmitting from said plurality of servers other than said preferred ones, wherein said delaying is for a predetermined period of time.

3. The method of claim 1 further comprising:

adding a new server to said plurality of servers;

broadcasting a message from said new server to said plurality of servers identifying said node number selected by said new server;

receiving a response at said new server from each of said plurality of servers identifying said node number assigned to each of said plurality of servers.

4. The method of claim 1 wherein said calculating comprises:

reflecting a load intensity value of each of said plurality of servers into said normalized unique number to result in said priority codes.

5. The method of claim 1 further comprising:

receiving, at said plurality of clients, a first said priority code;

responsive to said receiving, beginning a predefined time window;

storing each one of said transmitted priority codes received during said predefined time window, wherein said selecting is performed based on each of said stored priority codes.

6. A method for balancing a load of a server cluster, said method comprising:

receiving an application identifier desired for connection through said server cluster by a client;

hashing, at each of a plurality of servers of said server cluster, said application identifier into a unique number;

performing a modulus operation on said unique number to result in a number selected from a node identifier assigned to each of said plurality of servers;

using said resulting number to determine a preferred one of said plurality of servers for connection;

calculating, at each of said plurality of servers, a priority code using one or more of:

said unique number; and

said node identifier assigned to each of said plurality of servers;

wherein said each of said plurality of servers calculates its own said priority code; and

transmitting said priority code to said client, wherein said preferred one of said plurality of servers transmits its said priority code before others of said plurality of servers transmit their said priority codes.

7. The method of claim 6 further comprising:

starting a messaging window at said client upon receipt of a first one of said transmitted priority codes;

storing each of said transmitted priority codes received by said client from said first one until an end of said messaging window; and

selecting one of said plurality of servers for connection to said client based on one of said stored priority codes having a most favorable priority.

8. The method of claim 7 wherein said preferred one of said plurality of servers is unavailable for connection.

9. The method of claim 7 wherein said client selects said first one when each of said stored priority codes is equal.

10. The method of claim 6 wherein said preferred one transmits said priority code a predetermined amount of time before said others.

11. The method of claim 6 further comprising:

adding a new server to said plurality of servers;

broadcasting a message from said new server to said plurality of servers identifying said node identifier selected by said new server;

receiving a response at said new server from each of said plurality of servers identifying said node identifiers assigned to each of said plurality of servers.

12. A computer program product having a computer readable medium with computer program logic recorded thereon for load balancing a server cluster having a plurality of servers and servicing a plurality of distributed applications, said computer program product comprising:

code, at said server cluster, for receiving a request from one of a plurality of clients to connect to one of said plurality of distributed applications, wherein said request includes an identifier of said one of said plurality of distributed applications;

code, at each one of said plurality of servers, for calculating a priority code using said identifier, wherein said each one of said plurality of servers calculates its own said priority code;

code for hashing said identifier into a unique number;

code for normalizing said unique number to result in a number within the range of a plurality of node numbers labeling each of said plurality of servers;

code for comparing said resulting number to each of said plurality of node numbers; and

code, executable in response to said code for comparing, for identifying preferred ones of said Plurality of servers, wherein said preferred ones have one of said plurality of node numbers that match said resulting number;

code for transmitting said priority codes and identification of said preferred ones to said one of said plurality of clients; and

code for connecting a selected one of said plurality of servers to said one of said plurality of clients, wherein said selection is made by said one of said plurality of clients based upon an evaluation by said one of said plurality of clients of said transmitted priority codes.

13. The computer program product of claim 12 further comprising:

code for delaying said code for transmitting from said plurality of servers other than said preferred ones, wherein said code for delaying delays for a predetermined period of time.

14. The computer program product of claim 12 further comprising:

code for installing a new server to said server cluster;

code for broadcasting a message from said new server to said plurality of servers identifying said node number selected by said new server;

code for receiving a response at said new server from each of said plurality of servers identifying said node number assigned to each of said plurality of servers.

15. The computer program product of claim 12 wherein said code for calculating comprises:

code for reflecting a load intensity value for each of said plurality of servers into said normalized unique number to result in said priority codes.

16. The computer program product of claim 12 further comprising:

code, at said plurality of clients, for receiving a first said priority code;

code, executable in response to said code for receiving, for beginning a predefined time window;

code for storing each one of said transmitted priority codes received during said predefined time window, wherein said code for selecting is performed based on each of said stored priority codes.

17. A system for balancing a server cluster load, said system comprising:

means for receiving an application identifier desired for connection through said server cluster by a client;

means, at each of a plurality of servers of said server cluster, for hashing said application identifier into a unique number;

means for performing a modulus operation on said unique number to result in a number selected from said node identifier assigned to each of said plurality of servers;

means for using said resulting number to determine a preferred one of said plurality of servers for connection;

means, at each of said plurality of servers, for calculating a priority code using one or more of:

said unique number;

a load level of said each of said plurality of servers; and

a node identifier assigned to each of said plurality of servers;

wherein said each of said plurality of servers calculates its own said priority code; and

means for transmitting said priority code to said client, wherein said preferred one of said plurality of servers executes said means for transmitting its priority code before others of said plurality of servers execute said means for transmitting their priority codes.

18. The system of claim 17 further comprising:

means for initiating a messaging window at said client upon receipt of a first one of said transmitted priority codes;

means for storing each of said transmitted priority codes received by said client from said first one until an end of said messaging window; and

means for selecting one of said plurality of servers for connection to said client, wherein said means for selecting is based on one of said stored priority codes having a most favorable priority.

19. The system of claim 18 wherein said preferred one of said plurality of servers is unavailable for connection.

20. The system of claim 18 wherein said client selects said first one when each of said stored priority codes is equal.

21. The system of claim 17 wherein said preferred one executes said means for transmitting said priority code a predetermined amount of time before said others.

22. The system of claim 17 further comprising:

means for installing a new server into said server cluster;

means for broadcasting a message from said new server to said plurality of servers identifying said node identifier selected by said new server;

means for receiving a response at said new server from each of said plurality of servers identifying said node identifiers assigned to each of said plurality of servers.

Assignments (3)
CHANGE OF NAME Recorded Apr 8, 2019
From: ADOBE SYSTEMS INCORPORATED
To: ADOBE INC.
Reel/Frame 048867/0882 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 20, 2006
From: MACROMEDIA, INC.
To: ADOBE SYSTEMS INCORPORATED
Reel/Frame 017502/0849 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 2, 2006
From: MANAPRAGADA, SRINIVAS; SHETTY, PRITHAM
To: ADOBE SYSTEMS INCORPORATED
Reel/Frame 017242/0802 →