IP Library Granted Patent US 9,525,727
Granted Patent B2
US 9,525,727 · App. 14/300,625 · Granted Dec 20, 2016

Efficient and scalable pull-based load distribution

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 9,525,727
App. No.
14/300,625
Granted
Dec 20, 2016
Kind
B2
Abstract

Various embodiments relate to a method, device, and machine-readable storage medium including: receiving a work request for distribution among a plurality of servers; selecting a server of the plurality to receive the work request including: determining whether at least one of the plurality of servers has previously indicated a capacity for additional work, and when at least one has indicated such capacity, selecting the server from a set of servers identified from the plurality as having previously indicated a capacity for additional work; and transmitting the work request to the server. Various embodiments relate to a method, device, and machine-readable storage medium including: maintaining and processing a plurality of requests; determining, based on the plurality of requests, that the server has capacity to process at least one additional request; selecting a load distributor from a plurality of load distributors; and transmitting an indication of capacity to the load distributor.

Claims (47)

1. A non-transitory machine-readable storage medium encoded with instructions for execution by a load distributor device, the non-transitory machine-readable medium comprising:

instructions for receiving a work request for distribution among a plurality of servers;

instructions for selecting a server of the plurality of servers to receive the work request comprising:

instructions for determining whether at least one of the plurality of servers has previously indicated a capacity for additional work in a pull request message,

instructions for identifying a set of servers of the plurality of servers, wherein each server in the set of servers has previously indicated the capacity for additional work,

instructions for, when at least one of the plurality of servers has previously indicated the capacity for additional work, selecting the server from the set of servers identified from the plurality of servers as having previously indicated the capacity for additional work; and

instructions for transmitting the work request to the selected server.

2. The non-transitory machine-readable storage medium of claim 1 , further comprising:

instructions for establishing a pull indication associated with the server based on receiving the pull request message, wherein the instructions for determining whether at least one of the plurality of servers has previously indicated the capacity for additional work comprise:

instructions for determining whether any pull indication is currently set for any of the plurality of servers.

3. The non-transitory machine-readable storage medium of claim 2 , wherein the pull indication comprises a bit within a bitmap and the bit occupies a position within the bitmap corresponding to the server.

4. The non-transitory machine-readable storage medium of claim 2 , further comprising:

instructions for unsetting the pull indication associated with the selected server based on selecting the selected server to receive the work request.

5. The non-transitory machine-readable storage medium of claim 2 , further comprising:

instructions for identifying a stale pull indication as being expired; and

instructions for unsetting the stale pull indication based on identifying the stale pull indication as being expired.

6. The non-transitory machine-readable storage medium of claim 1 , wherein the instructions for selecting the server of the plurality of servers to receive the work request further comprise:

instructions for, when none of the plurality of servers has previously indicated the capacity for additional work, selecting the server from the full plurality of servers.

7. The non-transitory machine-readable storage medium of claim 1 , wherein the instructions for, when at least one of the plurality of servers has previously indicated the capacity for additional work, selecting the server from the set of servers identified from the plurality of servers as having previously indicated the capacity for additional work comprise:

selecting the server from the set of servers using a uniform random selection algorithm.

8. A load distributor device comprising:

a memory device; and

a processor in communication with the memory device, the processor being configured to receive a work request for distribution among a plurality of servers, select a server of the plurality of servers to receive the work request, determine whether at least one of the plurality of servers has previously indicated a capacity for additional work, identify a set of servers of the plurality of servers, wherein each server in the set of servers has previously indicated the capacity for additional work, and when at least one of the plurality of servers has previously indicated the capacity for additional work in a pull request message, select the server from the set of servers identified from the plurality of servers as having previously indicated the capacity for additional work, and transmit the work request to the selected server.

9. The load distributor device of claim 8 , wherein the processor is further configured to establish a pull indication associated with the server based on receiving the pull request message, wherein, in determining whether at least one of the plurality of servers has previously indicated the capacity for additional work, the processor is configured to determine whether any pull indication is currently set for any of the plurality of servers.

10. The load distributor device of claim 9 , wherein the pull indication comprises a bit within a bitmap stored in the memory device and the bit occupies a position within the bitmap corresponding to the server.

11. The load distributor device of claim 9 , wherein the processor is further configured to unset the pull indication associated with the selected server based on selecting the selected server to receive the work request.

12. The load distributor device of claim 9 , wherein the processor is further configured to identify a stale pull indication as being expired and unset the stale pull indication based on identifying the stale pull indication as being expired.

13. The load distributor device of claim 8 , wherein, in selecting the server of the plurality of servers to receive the work request, the processor is configured to, when none of the plurality of servers has previously indicated the capacity for additional work, select the server from the full plurality of servers.

14. The load distributor device of claim 8 , wherein, in selecting the server from the set of servers identified from the plurality of servers as having previously indicated the capacity for additional work, the processor is configured to select the server from the set of servers using a uniform random selection algorithm.

15. A method performed by a load distributor device, the method comprising:

receiving a work request for distribution among a plurality of servers;

selecting a server of the plurality of servers to receive the work request comprising:

determining whether at least one of the plurality of servers has previously indicated a capacity for additional work in a pull request message,

identifying a set of servers of the plurality of servers, wherein each server in the set of servers has previously indicated the capacity for additional work, and when at least one of the plurality of servers has previously indicated the capacity for additional work,

selecting the server from the set of servers identified from the plurality of servers as having previously indicated the capacity for additional work; and

transmitting the work request to the selected server.

16. The method of claim 15 , further comprising:

establishing a pull indication associated with the server based on receiving the pull request message, wherein determining whether at least one of the plurality of servers has previously indicated the capacity for additional work comprises:

determining whether any pull indication is currently set for any of the plurality of servers.

17. The method of claim 16 , wherein the pull indication comprises a bit within a bitmap, and the bit occupies a position within the bitmap corresponding to the server.

18. The method of claim 16 , further comprising

unsetting the pull indication associated with the selected server based on selecting the selected server to receive the work request.

19. The method of claim 16 , further comprising:

identifying a stale pull indication as being expired; and

unsetting the stale pull indication based on identifying the stale pull indication as being expired.

20. The method of claim 15 , wherein selecting the server of the plurality of servers to receive the work request further comprises:

selecting the server from the full plurality of servers when none of the plurality of servers has previously indicated the capacity for additional work.

Assignments (5)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 4, 2015
From: ALCATEL-LUCENT USA INC.
To: ALCATEL LUCENT
Reel/Frame 036494/0594 →
RELEASE OF SECURITY INTEREST Recorded Sep 3, 2014
From: CREDIT SUISSE AG
To: ALCATEL-LUCENT USA INC.
Reel/Frame 033684/0046 →
RELEASE OF SECURITY INTEREST Recorded Aug 24, 2014
From: CREDIT SUISSE AG
To: ALCATEL-LUCENT USA, INC.
Reel/Frame 033596/0898 →
SECURITY INTEREST Recorded Aug 7, 2014
From: ALCATEL LUCENT USA, INC.
To: CREDIT SUISSE AG
Reel/Frame 033500/0156 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 10, 2014
From: STOLYAR, ALEKSANDR; WOO, THOMAS
To: ALCATEL-LUCENT USA, INC.
Reel/Frame 033066/0677 →