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, said plurality of servers including a first server; and
a computer readable storage medium at said first server storing therein asset information that is replicated in a computer readable storage medium associated with at least one other server;
wherein said first server is configured to;
receive a request for an asset from a client coupled to the server system;
determine if the request should be forwarded to another server before responding to the client, wherein said determination is based on existence of at least one of a plurality of conditions consisting of;
that the asset does not exist at the first server;
that sufficient resources do not exist to stream the asset from the first server; and
that a current load on the first server is over a threshold limit;
find in the server system a second server capable of streaming the asset in response to the determination that the request should be forwarded;
cause the request from the client to be sent to the second server after the second server is located; and
determine if said asset is a hot asset, and if said asset is determined to be a hot asset, then copying information associated with said asset to said second server including copying at least one of;
(a) a prefix of said asset to said second server, and (b) copying the asset to the second server and streaming the prefix of the asset from the second server.
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
61 Claims
-
1. A server system for time-based media streaming comprising:
-
a plurality of servers coupled for communication with each other, said plurality of servers including a first server; and a computer readable storage medium at said first server storing therein asset information that is replicated in a computer readable storage medium associated with at least one other server; wherein said first server is configured to; receive a request for an asset from a client coupled to the server system; determine if the request should be forwarded to another server before responding to the client, wherein said determination is based on existence of at least one of a plurality of conditions consisting of; that the asset does not exist at the first server; that sufficient resources do not exist to stream the asset from the first server; and that a current load on the first server is over a threshold limit; find in the server system a second server capable of streaming the asset in response to the determination that the request should be forwarded; cause the request from the client to be sent to the second server after the second server is located; and determine if said asset is a hot asset, and if said asset is determined to be a hot asset, then copying information associated with said asset to said second server including copying at least one of;
(a) a prefix of said asset to said second server, and (b) copying the asset to the second server and streaming the prefix of the asset from the second server. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21)
-
-
22. A method for time-based streaming of assets, said method comprising:
-
receiving a request from a client for an asset at a first server; determining, prior to streaming said asset, if said first server has said asset and 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, attempting to identify a second server having said asset and sufficient resources to stream said asset; informing the client to send the request directly to said identified second server prior to streaming said asset; and determining if said asset is a hot asset, and if said asset is determined to be a hot asset, then copying information associated with said asset to said second server including copying at least one of;
(a) a prefix of said asset to said second server, and (b) copying the asset to the second server and streaming the prefix of the asset from the second server.
-
-
23. A method for time-based streaming of assets and load-balancing, said method comprising:
-
receiving a request from a client for an asset at a first server having said asset and sufficient resources to stream said asset; determining if said first server has a first server load level greater than a load threshold level; and in response to the determination that said first server has a first server load level greater than a load threshold level; attempting, prior to streaming said asset, 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; informing the client to send the request to said second server if said second server is located;
or streaming said asset while maintaining a time-base for said streamed asset if said second server is not locateddetermining if said asset is a hot asset, and if said asset is determined to be a hot asset, then copying information associated with said asset to said second server including copying at least one of;
(a) a prefix of said asset to said second server, and (b) copying the asset to the second server and streaming the prefix of the asset from the second server. - View Dependent Claims (24, 25)
-
-
26. A method for time-based streaming of assets performed by a first server in a server system comprising a plurality of servers, said method comprising:
-
receiving a request for an asset from a client; determining prior to responding to the client if said first server has said asset and if said first server has 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; and if said first server has a first server load level greater than a load threshold level, attempting, prior to streaming said asset, to locate 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; and (i) informing the client to send the request to said second server if said second server is located;
or (ii) streaming said asset if said second server is not located; anddetermining if said asset is a hot asset, and if said asset is determined to be a hot asset, then copying information associated with said asset to said second server including copying at least one of;
(a) a prefix of said asset to said second server, and (b) copying the asset to the second server and streaming the prefix of the asset from the second server. - View Dependent Claims (27, 28, 29, 30, 31, 32, 33, 34, 35)
-
-
36. 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 from a client, the program module including instructions for; determining prior to responding to the client if said first server has said asset and 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, attempting, prior to streaming said asset, to identify a second server having said asset and sufficient resources to stream said asset; informing the client to send the request to said identified second server; and determining if said asset is a hot asset, and if said asset is determined to he a hot asset, then copying information associated with said asset to said second server including copying at least one of;
(a) a prefix of said asset to said second server, and (b) copying the asset to the second server and streaming the prefix of the asset from the second server.
-
-
37. 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 from a client wherein said first server has said asset and sufficient resources to stream said asset, the program module including instructions for; determining prior to responding to the client 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, prior to streaming said asset, to locate a second server having said asset, sufficient resources to stream said asset, and a second server load level less than said first server load; and (i) informing the client to send the request to said second server if said second server is located;
or (ii) streaming said request if said server is not located; anddetermining if said asset is a hot asset, and if said asset is determined to be a hot asset, then copying information associated with said asset to said second server including copying at least one of;
(a) a prefix of said asset to said second server. and (b) copying the asset to the second server and streaming the prefix of the asset from the second server. - View Dependent Claims (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 from a client, the program module including instructions for; determining prior to responding to the client if said first server has said asset and if said first server has 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; and if said first server has a load level greater than a load threshold level, attempting, prior to streaming said asset, 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; and(i) informing the client to send the request to the second server if said second server is located;
or (ii) streaming said request if said second server is not located; anddetermining if said asset is a hot asset, and if said asset is determined to be a hot asset, then copying information associatcd with said asset to said second server including copying at least one of;
(a) a prefix of said asset to said second server, and (b) conying the asset to the second server and streaming the prefix of the asset from the second server. - View Dependent Claims (40)
-
-
41. A server system for time-based media streaming comprising:
a plurality of servers coupled for communication with each other, including a first server, said first server comprising; a first computer-readable storage medium encoded with server information comprising asset information that is replicated in server information stored in at least one other 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 from a client and prior to responding to the client, 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, informing the client to send said request to a second server, the second server having said asset and sufficient resources to stream said asset;
orif 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, prior to streaming said asset, to locate 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; (i) forwarding said request, prior to streaming said asset, if said second server is located; and
(ii) streaming said request if said second server is not located; anddetermining if said asset is a hot asset, and if said asset is determined to be a hot asset, then copying information associated with said asset to said second server including copying at least one of;
(a) a prefix of said asset to said second server, and (b) copying the asset to the second server and streaming the prefix of the asset from the second server.- View Dependent Claims (42, 43, 44)
-
45. A method for operating a time-base accurate asset streaming business, said method comprising:
-
operating a plurality of servers each configured to receive and service requests for assets from clients of said business, said operating step comprising; operating a first server to determine if a received request for an asset from a client should be forwarded to another server prior to responding to the client based on existence of at least one of a plurality of conditions consisting of; that the asset does not exist at the server; that sufficient resources do not exist to stream the asset in real time from the server; and that a current load on the server is over a threshold limit; operating said first server to find a second server in the server system in response to the determination that the request should be forwarded; operating said first server to inform the client to send the request to the second server after the second server is found; and determining if said asset is a hot asset, and if said asset is determined to be a hot asset, then copying information associated with said asset to said second server including copying at least one of;
(a) a prefix of said asset to said second server, and (b) copying the asset to the second server and streaming the prefix of the asset from the second server. - View Dependent Claims (46, 47, 48, 49, 50, 51)
-
-
52. In a server system comprising a plurality of servers for time-based media streaming, a method performed by a first server in the server system, the method comprising:
-
receiving a request for an asset from a client coupled to the plurality of servers; determining if the request should be forwarded to another server before responding to the client based whether at least one of a plurality of conditions exists, said plurality of conditions consisting of; that the asset does not exist at the server; that sufficient resources do not exist to stream the asset from the server; and that a current load on the server is over a threshold limit; finding a second sewer in the server system in response to the determination that the request should be forwarded; causing the request from the client to be sent to the second server after the second sewer is found; and determining if said asset is a hot asset, and if said asset is determined to be a hot asset, then copying information associated with said asset to said second server including copying at least one of;
(a) a prefix of said asset to said second server and (b) copying the asset to the second server and streaming the prefix of the asset from the second server. - View Dependent Claims (53, 54, 55, 56)
-
-
57. A method for time-based media streaming, the method comprising:
-
at a first server in a cluster, receiving a request for a streaming session of a time-based media asset from a client, the asset having a prefix portion and a remainder portion; at the first server, identifying a second server in the cluster having at least the prefix portion of the asset; at the first server, receiving load information from the second server; determining at the first server, based on load information associated with the first server and the received load information from the second server, whether to forward the request to the second server before responding to the client; from the first server, transmitting a message to the client instructing the client to request streaming of the prefix of the time-based media asset from the second server; and determining if said asset is a hot asset, and if said asset is determined to be a hot asset, then copying information associated with said asset to said second server including copying at least one of;
(a) a prefix of said asset to said second server, and (b) copying the asset to the second server and stream in the prefix of the asset from the second server. - View Dependent Claims (58, 59, 60, 61)
-
Specification