Method and apparatus for real-time parallel delivery of segments of a large payload file
First Claim
1. A method of assembling a file in response to a request from a user sent to a first node in a network having a plurality of connected nodes, comprising:
- determining, based on the request, which content components are necessary to assemble the file;
if all content components are not present at the first node, sending a search request to determine which other nodes have content components;
receiving, from said other nodes, replies to said search request, each reply from a responding node indicating which content components are available from said responding node;
determining a desired set of at least one node from which to download the content components;
downloading the content components from the desired set, wherein the downloading further includescreating, at said first node, a process representing a request for a content component from at least one node having the content component,creating, at said first node, a plurality of processes, each process representing a request for a content component from one of said plurality of nodes,associating a flag with each content component to be downloaded, said flag indicating whether an associated content component has already been downloaded, had not been downloaded or is currently being downloaded,associating a unique sequence number with each flag,in response to one of said plurality of processes reading said flag to determine whether said associated content component has already been downloaded, incrementing said sequence number and passing said incremented sequence number to said reading process,in response to a request by said reading process to modify said flag to indicate that said associated content component is currently being downloaded, comparing said incremented sequence number passed to said reading process to said incremented sequence number associated with said flag,if said incremented sequence number passed to said reading process matches said incremented sequence number associated with said flag, accepting said modification to said flag, andif said incremented sequence number passed to said reading process does not match said incremented sequence number associated with said flag, rejecting said modification to said flag, wherein race conditions are avoided when more than one process attempts to download the same content component; and
assembling the file from the downloaded content components.
4 Assignments
0 Petitions
Accused Products
Abstract
A scalable content delivery network (SCDN) employs a parallel download mechanism to ensure that a demanded file is present at a station in time for user consumption. This mechanism is used in solving the content caching and storage problem for applications such as video-on-demand, which is commonly perceived as a tough problem in the industry. In the network, files are divided into smaller units called tracks according to the nature of data contained in each of them. Tracks are further divided into smaller equally sized units called block files. This division builds the foundation for parallel download. A sequence server provides a lock-free mechanism for multiple threads or processes to access data atomically. The sequence server allows clients to gain sequential access to data, or to find out whether the sequence has been violated so that they can retry their operation or take corrective action. Advantages of the invention include the ability to handle distribution of large files and process sequencing.
-
Citations
21 Claims
-
1. A method of assembling a file in response to a request from a user sent to a first node in a network having a plurality of connected nodes, comprising:
-
determining, based on the request, which content components are necessary to assemble the file; if all content components are not present at the first node, sending a search request to determine which other nodes have content components; receiving, from said other nodes, replies to said search request, each reply from a responding node indicating which content components are available from said responding node; determining a desired set of at least one node from which to download the content components; downloading the content components from the desired set, wherein the downloading further includes creating, at said first node, a process representing a request for a content component from at least one node having the content component, creating, at said first node, a plurality of processes, each process representing a request for a content component from one of said plurality of nodes, associating a flag with each content component to be downloaded, said flag indicating whether an associated content component has already been downloaded, had not been downloaded or is currently being downloaded, associating a unique sequence number with each flag, in response to one of said plurality of processes reading said flag to determine whether said associated content component has already been downloaded, incrementing said sequence number and passing said incremented sequence number to said reading process, in response to a request by said reading process to modify said flag to indicate that said associated content component is currently being downloaded, comparing said incremented sequence number passed to said reading process to said incremented sequence number associated with said flag, if said incremented sequence number passed to said reading process matches said incremented sequence number associated with said flag, accepting said modification to said flag, and if said incremented sequence number passed to said reading process does not match said incremented sequence number associated with said flag, rejecting said modification to said flag, wherein race conditions are avoided when more than one process attempts to download the same content component; and assembling the file from the downloaded content components. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
-
-
10. A computer program product comprising a computer usable medium having computer readable program code means embodied in said medium for causing an application program to execute on a computer to assemble a file in response to a request from a user sent to a first node in a network having a plurality of connected nodes, said computer readable program code means comprising:
-
first computer readable program code means for causing the computer to determine, based on the request, which content components are necessary to assemble the file; second computer readable program code means for causing the computer, if all content components are not present at the first node, to send a search request to determine which other nodes have content components; third computer readable program code means for causing the computer to receive, from said other nodes, replies to said search request, each reply from a responding node indicating which content components are available from said responding node; fourth computer readable program code means for causing the computer to determine a desired set of at least one node from which to download the content components; fifth computer readable program code means for causing the computer to download the content components from the desired set, wherein the fifth computer readable program code means includes means for creating, at said first node, a plurality of processes, each process representing a request for a content component from one of said plurality of nodes, means for associating a flag with each content component to be downloaded, said flag indicating whether an associated content component has already been downloaded, had not been downloaded or is currently being downloaded, means for associating a unique sequence number with each flag, means for incrementing said sequence number and passing said incremented sequence number to said reading process in response to one of said plurality of processes reading said flag to determine whether said associated content component has already been downloaded, means for comparing, in response to a request by said reading process to modify said flag to indicate that said associated content component is currently being downloaded, said incremented sequence number passed to said reading process to said incremented sequence number associated with said flag, means for accepting said modification to said flag if said incremented sequence number passed to said reading process matches said incremented sequence number associated with said flag, and means for rejecting said modification to said flag if said incremented sequence number passed to said reading process does not match said incremented sequence number associated with said flag, wherein race conditions are avoided when more than one process attempts to download the same content component; and
sixth computer readable program code means for causing the computer to assemble the file from the downloaded content components. - View Dependent Claims (11, 12, 13, 14, 15)
-
-
16. A computer-based system for assembling a file in response to a request from a user sent to a first node in a network having a plurality of connected nodes, said system comprising:
-
means for determining, based on the request, which content components are necessary to assemble the file; means for sending a search request, if all content components are not present at the first node, to determine which other nodes have content components; means for receiving, from said other nodes, replies to said search request, each reply from a responding node indicating which content components are available from said responding node; means for determining a desired set of at least one node from which to download the content components; means for downloading the content components from the desired set, wherein the means for downloading includes means for creating, at said first node, a plurality of processes, each process representing a request for a content component from one of said plurality of nodes; means for associating a flag with each content component to be downloaded, said flag indicating whether an associated content component has already been downloaded, had not been downloaded or is currently being downloaded, means for associating a unique sequence number with each flag, means for incrementing said sequence number and passing said incremented sequence number to said reading process in response to one of said plurality of processes reading said flag to determine whether said associated content component has already been downloaded, means for comparing, in response to a request by said reading process to modify said flag to indicate that said associated content component is currently being downloaded, said incremented sequence number passed to said reading process to said incremented sequence number associated with said flag means for accepting said modification to said flag if said incremented sequence number passed to said reading process matches said incremented sequence number associated with said flag, and means for rejecting said modification to said flag if said incremented sequence number passed to said reading process does not match said incremented sequence number associated with said flag, wherein race conditions are avoided when more than one process attempts to download the same content component; and
means for assembling the file from the downloaded content components. - View Dependent Claims (17, 18, 19, 20, 21)
-
Specification