IP Library Patent Application 12200755
Patent Application
App. No. 12/200,755

GLOBAL LOAD BASED FILE ALLOCATION AMONG A PLURALITY OF GEOGRAPHICALLY DISTRIBUTED STORAGE NODES

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 None
App. No.
12/200,755
Abstract

A method for balancing loads on a plurality of geographically distributed storage nodes coupled to a communications network, includes: receiving a request from a user device to download a data file; identifying all storage nodes from a plurality of geographically distributed storage nodes containing the requested data file; selecting a first storage node containing the requested file to serve the request; and determining if the first storage node is too busy, wherein if the first storage node is determined not to be too busy, directing the request to the first storage node, otherwise searching for a second storage node containing the requested data file that is not too busy and, if the second storage node is found, directing the request to the second storage node.

Claims (58)

1 . A method for balancing loads on a plurality of geographically distributed storage nodes coupled to a communications network, comprising:

receiving a request from a user device to download a data file;

identifying all storage nodes from a plurality of geographically distributed storage nodes containing the requested data file;

selecting a first storage node containing the requested file to serve the request; and

determining if the first storage node is too busy, wherein if the first storage node is determined not to be too busy, directing the request to the first storage node, otherwise searching for a second storage node containing the requested data file that is not too busy and, if the second storage node is found, directing the request to the second storage node.

2 . The method of claim 1 wherein selecting the first storage node comprises identifying the first storage as a nearest storage node with respect to the user device.

3 . The method of claim 1 wherein selecting the first storage node comprises identifying the first storage as a near enough storage node with respect to the user device based on one or more predetermined criterion.

4 . The method of claim 1 wherein determining if the first storage node is too busy is based on a number of current access requests being handled by the first storage node.

5 . The method of claim 1 further comprising determining which if any of the storage nodes containing the requested data file are near enough the user device based on one or more predetermined criterion.

6 . The method of claim 5 wherein determining which if any of the storage nodes containing the requested data file are near enough the user device comprises translating an internet protocol (IP) address associated with the user device into a geocode value and determining which of the storage nodes containing the requested data file have been designated as near enough to a geographic region corresponding to the geocode value.

7 . The method of claim 6 further comprising determining a priority order for the storage nodes containing the requested file to serve the request, wherein the first storage node is determined to have a highest priority among the storage nodes containing the requested file.

8 . The method of claim 7 wherein determining a priority order comprises accessing a node priority table that assigns priority values for each of the plurality of nodes with respect to a plurality of geocode values associated with a plurality of different geographic regions.

9 . The method of claim 1 wherein if the first storage node is too busy and second storage node is not found, the method further comprising:

directing the request to the first storage node; and

identifying a third storage node that is not too busy but does not contain the requested file; and

directing the third storage node to obtain a copy the requested file from the first storage node so that subsequent requests for the data file by the user will be handled by the third storage node.

10 . The method of claim 1 further comprising:

determining if any of the storage nodes containing the requested data file have sent a message within a predetermined period of time indicating that it is too busy, wherein if no message has been sent within the predetermined time period, the request is directed to the first storage node and the step of determining whether the first storage node is too busy is not performed.

11 . The method of claim 10 wherein a storage node containing the requested data file sends a message that it is too busy if the a number of current access requests being handled by the storage node exceeds a predetermined threshold.

12 . A system for balancing loads on a plurality of geographically distributed storage nodes coupled to a communications network, comprising:

a web services interface operable to receive a request from a user device to download a data file, wherein the user device is associated with an internet protocol (IP) address;

a database containing one or more data tables correlating a plurality of IP addresses to a plurality of geocode values, each geocode value corresponding to a specified geographic region, and assigning at least one of a plurality of geographically distributed storage nodes to serve user devices associated with each geocode value, the one or more tables further identifying one or more storage nodes wherein each of a plurality of data files are stored; and

a server coupled to the database, the server comprising:

a first module for receiving a request from a user device to download a data file;

a second module for identifying all storage nodes from a plurality of geographically distributed storage nodes containing the requested data file;

a third module for selecting a first storage node containing the requested file to serve the request; and

a fourth module for determining if the first storage node is too busy, wherein if the first storage node is determined not to be too busy, directing the request to the first storage node, otherwise searching for a second storage node containing the requested data file that is not too busy and, if the second storage node is found, directing the request to the second storage node.

13 . The system of claim 12 wherein the third module comprises a fifth module for identifying the first storage node as a nearest storage node with respect to the user device.

14 . The system of claim 12 wherein the third module comprises a fifth module for identifying the first storage node as a near enough storage node with respect to the user device based on one or more predetermined criterion.

15 . The system of claim 12 wherein the fourth module comprises a fifth module for determining a number of current access requests being handled by the first storage node.

16 . The system of claim 12 further comprising a fifth module for determining which if any of the storage nodes containing the requested data file are near enough the user device based on one or more predetermined criterion.

17 . The system of claim 16 wherein the fifth module comprises a sixth module for translating the internet protocol (IP) address associated with the user device into a geocode value and determining which of the storage nodes containing the requested data file have been designated as near enough to a geographic region corresponding to the geocode value.

18 . The system of claim 17 further comprising a seventh module for determining a priority order for the storage nodes containing the requested file to serve the request, wherein the first storage node is determined to have a highest priority among the storage nodes containing the requested file.

19 . The system of claim 18 wherein the seventh module comprises an eighth module for accessing a node priority table that assigns priority values for each of the plurality of nodes with respect to a plurality of geocode values associated with a plurality of different geographic regions.

20 . The system of claim 12 further comprising:

a fifth module for directing the request to the first storage node if the first storage node is too busy and if the second storage node is not found; and

a sixth module for identifying a third storage node that is not too busy but does not contain the requested file; and

a seventh module for directing the third storage node to obtain a copy of the requested file from the first storage node so that subsequent requests for the data file by the user will be handled by the third storage node.

21 . The system of claim 12 further comprising:

a fifth module for determining if any of the storage nodes containing the requested data file have sent a message within a predetermined period of time indicating that it is too busy, wherein if no message has been sent within the predetermined time period, the request is directed to the first storage node and the step of determining whether the first storage node is too busy is not performed.

22 . A computer readable medium storing computer executable instructions that when executed perform a process for balancing loads on a plurality of geographically distributed storage nodes, the instructions comprising:

a first code module for receiving a request from a user device to download a data file;

a second code module for identifying all storage nodes from a plurality of geographically distributed storage nodes containing the requested data file;

a third code module for selecting a first storage node containing the requested file to serve the request; and

a fourth code module for determining if the first storage node is too busy, wherein if the first storage node is determined not to be too busy, directing the request to the first storage node, otherwise searching for a second storage node containing the requested data file that is not too busy and, if the second storage node is found, directing the request to the second storage node.

23 . The computer readable medium of claim 22 wherein the third code module comprises a fifth code module for identifying the first storage node as a nearest storage node with respect to the user device.

24 . The computer readable medium of claim 22 wherein the third code module comprises a fifth code module for identifying the first storage node as a near enough storage node with respect to the user device based on one or more predetermined criterion.

25 . The computer readable medium of claim 22 wherein the fourth code module comprises a fifth code module for determining a number of current access requests being handled by the first storage node.

26 . The computer readable medium of claim 22 further comprising a fifth code module for determining which if any of the storage nodes containing the requested data file are near enough the user device based on one or more predetermined criterion.

27 . The computer readable medium of claim 26 wherein the fifth code module comprises a sixth code module for translating an internet protocol (IP) address associated with the user device into a geocode value and determining which of the storage nodes containing the requested data file have been designated as near enough to a geographic region corresponding to the geocode value.

28 . The computer readable medium of claim 27 further comprising a seventh code module for determining a priority order for the storage nodes containing the requested file to serve the request, wherein the first storage node is determined to have a highest priority among the storage nodes containing the requested file.

29 . The computer readable medium of claim 28 wherein the seventh code module comprises an eighth code module for accessing a node priority table that assigns priority values for each of the plurality of nodes with respect to a plurality of geocode values associated with a plurality of different geographic regions.

30 . The computer readable medium of claim 22 further comprising:

a fifth code module for directing the request to the first storage node if the first storage node is too busy and if the second storage node is not found; and

a sixth code module for identifying a third storage node that is not too busy but does not contain the requested file; and

a seventh code module for directing the third storage node to obtain a copy of the requested file from the first storage node so that subsequent requests for the data file by the user will be handled by the third storage node.

31 . The computer readable medium of claim 22 further comprising:

a fifth code module for determining if any of the storage nodes containing the requested data file have sent a message within a predetermined period of time indicating that it is too busy, wherein if no message has been sent within the predetermined time period, the request is directed to the first storage node and the step of determining whether the first storage node is too busy is not performed.

Assignments (7)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 18, 2016
From: ACME ACQUISITION LLC
To: ORACLE INTERNATIONAL CORPORATION
Reel/Frame 038632/0289 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 17, 2016
From: NIRVANIX, INC.
To: ACME ACQUISITION LLC
Reel/Frame 038623/0073 →
RELEASE OF SECURITY INTEREST Recorded Aug 22, 2013
From: COMERICA BANK
To: NIRVANIX, INC.
Reel/Frame 031065/0474 →
SECURITY AGREEMENT Recorded Aug 13, 2013
From: NIRVANIX, INC.
To: TRIPLEPOINT CAPITAL LLC AS COLLATERAL AGENT
Reel/Frame 031005/0628 →
SECURITY AGREEMENT Recorded Jan 22, 2013
From: NIRVANIX, INC.
To: TRIPLEPOINT CAPITAL LLC
Reel/Frame 029673/0596 →
SECURITY AGREEMENT Recorded Feb 9, 2010
From: NIRVANIX, INC.
To: COMERICA BANK
Reel/Frame 023922/0169 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 11, 2009
From: CHATLEY, SCOTT P.; PHAN, THAN T.; PALUMBO, ROBERT S.; GATCHELL, TROY C.; GALLAGHER, J. GABRIEL
To: NIRVANIX, INC.
Reel/Frame 022245/0635 →