System and method for highly-scalable real-time and time-based data delivery using server clusters
First Claim
1. A server system for time-based media streaming comprising:
- a plurality of servers coupled for communication with each other, including a first server and second server, said first server comprising;
a first computer-readable storage medium encoded with stored server information comprising asset information associated with said second server;
a first computer-readable storage device associated with said first server encoded with first asset information; and
a second computer-readable storage device associated with said second server encoded with second asset information.
6 Assignments
0 Petitions
Accused Products
Abstract
The present invention provides loosely-coupled cluster systems comprising a plurality of servers based on storage attached to the plurality of servers. Videos, or other assets, are automatically replicated within the server system to increase the number of concurrent play requests serviceable. The server systems can detect spikes in demand that may exceed the guaranteed number of concurrent play requests serviceable and dynamically transfer the high-in-demand or ‘hot’ asset to servers in the cluster that do not have the video. Alternatively, instead of transferring the entire asset, varying length prefixes of the asset may be transferred depending on the availability of resources. The remainder of the asset is transferred in some embodiments on demand with sufficient buffering or other storage to guarantee playback to the user or subscriber according to the required quality of service (QOS).
-
Citations
58 Claims
-
1. A server system for time-based media streaming comprising:
-
a plurality of servers coupled for communication with each other, including a first server and second server, said first server comprising;
a first computer-readable storage medium encoded with stored server information comprising asset information associated with said second server;
a first computer-readable storage device associated with said first server encoded with first asset information; and
a second computer-readable storage device associated with said second server encoded with second asset information. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 50, 51, 52, 53)
-
-
19. A method for time-based streaming of assets, said method comprising:
-
receiving a request for an asset at a first server;
determining if said first server has said asset;
determining if said first server has sufficient resources to stream said asset;
streaming said asset while maintaining a time-base for said streamed asset if said first server has said asset and said first server has sufficient resources to stream said asset;
if said first server does not have said asset, or said first server does not have sufficient resources to stream said asset, attempting to identify a second server having said asset and sufficient resources to stream said asset; and
forwarding said request to said identified second server.
-
-
20. A method for time-based streaming of assets and load-balancing, said method comprising:
-
receiving a request for an asset at a first server having said asset and sufficient resources to stream said asset;
streaming said asset while maintaining a time-base for said streamed asset if said first server has a first server load level less than a load threshold value; and
if said first server has a load level greater than a load threshold level, said method further comprising;
attempting to find a second server having said asset, sufficient resources to stream said asset, and a second server load level less than said first server load level;
forwarding said request if said second server is located; and
streaming said asset while maintaining a time-base for said streamed asset if said second server is not located. - View Dependent Claims (21, 22)
-
-
23. A method for time-based streaming of assets, said method comprising:
-
receiving a request for an asset at a first server;
determining if said first server has said asset;
determining if said first server has sufficient resources to stream said asset;
if said first server does not have said asset or said first server does not have sufficient resources to stream said asset, forwarding said request to a second server having said asset and sufficient resources to stream said asset;
if said first server has said asset and sufficient resources to stream said asset, determining if said first server has a load level less than a load threshold value;
if said first server has a first server load level less than a load threshold value, streaming said asset and maintaining a time-base for said streamed asset; and
if said first server has a load level greater than a load threshold level, attempting to find a second server having said asset, sufficient resources to stream said asset, and a second server load level less than said first server load level;
forwarding said request if said second server is located; and
streaming said asset and maintaining a time-base for said streamed asset if said second server is not located. - View Dependent Claims (24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38)
-
-
39. A computer program product for use in conjunction with a first server having at least one processor and a memory coupled to the processor, the first server being in communication with at least one second server, the computer program product comprising a computer readable storage medium and a computer program mechanism embedded therein, the computer program mechanism, comprising:
-
a program module that directs the first server to function in a specified manner to provide load-balancing functionality upon receiving a request for an asset, the program module including instructions for;
determining if said first server has said asset;
determining if said first server has sufficient resources to stream said asset;
streaming said asset while maintaining a time-base for said streamed asset if said first server has said asset and said first server has sufficient resources to stream said asset;
if said first server does not have said asset, or said first server does not have sufficient resources to stream said asset, attempting to identify a second server having said asset and sufficient resources to stream said asset; and
forwarding said request to said identified second server.
-
-
40. A computer program product for use in conjunction with a first server having at least one processor and a memory coupled to the processor, the first server being in communication with at least one second server, the computer program product comprising a computer readable storage medium and a computer program mechanism embedded therein, the computer program mechanism, comprising:
-
a program module that directs the first server to function in a specified manner to provide load-balancing functionality upon receiving a request for an asset wherein said first server has said asset and sufficient resources to stream said asset, the program module including instructions for;
streaming said asset if said first server has a first server load level less than a load threshold value; and
if said first server has a load level greater than a load threshold level, said method further comprising;
attempting to find a second server having said asset, sufficient resources to stream said asset, and a second server load level less than said first server load level;
forwarding said request if said second server is located; and
streaming said request if said second server is not located. - View Dependent Claims (41)
-
-
42. A computer program product for use in conjunction with a first server having at least one processor and a memory coupled to the processor, the first server being in communication with at least one second server, the computer program product comprising a computer readable storage medium and a computer program mechanism embedded therein, the computer program mechanism, comprising:
-
a program module that directs the first server to function in a specified manner to provide load-balancing functionality upon receiving a request for an asset, the program module including instructions for;
determining if said first server has said asset;
determining if said first server has sufficient resources to stream said asset;
if said first server does not have said asset or said first server does not have sufficient resources to stream said asset, forwarding said request to a second server having said asset and sufficient resources to stream said asset;
if said first server has said asset and sufficient resources to stream said asset, determining if said first server has a load level less than a load threshold value;
if said first server has a first server load level less than a load threshold value, streaming said asset; and
if said first server has a load level greater than a load threshold level, attempting to find a second server having said asset, sufficient resources to stream said asset, and a second server load level less than said first server load level;
forwarding said request if said second server is located; and
streaming said request if said second server is not located. - View Dependent Claims (43)
-
-
44. A server system for time-based media streaming comprising:
-
a plurality of servers coupled for communication with each other, including a first server and second server, said first server comprising a first computer-readable storage medium encoded with server information comprising asset information associated with said second server; and
a computer program mechanism, the computer program mechanism, comprising;
a program module that directs the first server to function in a specified manner to provide load-balancing functionality upon receiving a request for an asset, the program module including instructions for;
determining if said first server has said asset;
determining if said first server has sufficient resources to stream said asset;
streaming said asset if said first server has said asset and said first server has sufficient resources to stream said asset;
if said first server does not have said asset, or said first server does not have sufficient resources to stream said asset, attempting to identify a second server having said asset and sufficient resources to stream said asset; and
forwarding said request to said identified second server;
a first computer-readable storage device associated with said first server encoded with first asset information; and
a second computer-readable storage device associated with said second server encoded with second asset information.
-
-
45. A server system for time-based media streaming comprising:
-
a plurality of servers coupled for communication with each other, including a first server and second server, said first server comprising a first computer-readable storage medium encoded with server information comprising asset information associated with said second server; and
a computer program mechanism, the computer program mechanism, comprising;
a program module that directs the first server to function in a specified manner to provide load-balancing functionality upon receiving a request for an asset wherein said first server has said asset and sufficient resources to stream said asset, the program module including instructions for;
streaming said asset if said first server has a first server load level less than a load threshold value; and
if said first server has a load level greater than a load threshold level, said method further comprising;
attempting to find a second server having said asset, sufficient resources to stream said asset, and a second server load level less than said first server load level;
forwarding said request if said second server is located; and
streaming said request if said second server is not located;
a first computer-readable storage device associated with said first server encoded with first asset information; and
a second computer-readable storage device associated with said second server encoded with second asset information.
-
-
46. A server system for time-based media streaming comprising:
-
a plurality of servers coupled for communication with each other, including a first server and second server, said first server comprising a first computer-readable storage medium encoded with server information comprising asset information associated with said second server; and
a computer program mechanism, the computer program mechanism, comprising;
a program module that directs the first server to function in a specified manner to provide load-balancing functionality upon receiving a request for an asset, the program module including instructions for;
determining if said first server has said asset;
determining if said first server has sufficient resources to stream said asset;
if said first server does not have said asset or said first server does not have sufficient resources to stream said asset, forwarding said request to a second server having said asset and sufficient resources to stream said asset;
if said first server has said asset and sufficient resources to stream said asset, determining if said first server has a load level less than a load threshold value;
if said first server has a first server load level less than a load threshold value, streaming said asset; and
if said first server has a load level greater than a load threshold level, attempting to find a second server having said asset,
sufficient resources to stream said asset, and a second server load level less than said first server load level;
forwarding said request if said second server is located; and
streaming said request if said second server is not located;
a first computer-readable storage device associated with said first server encoded with first asset information; and
a second computer-readable storage device associated with said second server encoded with second asset information. - View Dependent Claims (47, 48, 49)
-
-
54. A business model for operating a time-base accurate asset streaming business, said business model comprising:
-
operating a first server to receive and service requests for an asset, said first server (i) receiving a request for an asset, (ii) determining if said first server has said asset available for time-base accurately streaming and has sufficient resources to time-base accurately stream said asset, and (iii) time-base accurately streaming said asset if it is determined that said first server has said asset available for time-base accurately streaming and has sufficient resources to time-base accurately stream said asset; and
if said determining indicates that said first server does not have said asset available for time-base accurately streaming or does not have sufficient resources to time-base accurately stream said asset, then;
(i) identifying a second server having said asset available for time-base accurately streaming and sufficient resources to time-base accurately stream said asset , and (ii) forwarding said request to said identified second server for servicing by said second server. - View Dependent Claims (55, 56, 57, 58)
-
Specification