Video on demand digital server load balancing
First Claim
1. A method comprising:
- designating a director server from among a plurality of servers configured to service requests for assets and configured to function as a director server if designated, each of the plurality of servers further configured with a storage system and an adaptable cache configured to proactively cache assets;
receiving a first request and a second request for an asset at a network interface of the designated director server;
forwarding the first request and the second request to a host processor of the designated director server over a bus;
determining whether or not the asset is present on the designated director server;
if the asset is present on the designated director server, servicing the first request and the second request from the designated director server by;
monitoring the bus by a designated director server'"'"'s adaptable cache,detecting the first request and the second request on the bus at the designated director server'"'"'s adaptable cache,generating, at the designated director server'"'"'s adaptable cache, a list of pairs of requests for the asset comprising a first pair of requests comprising the first request and the second request,determining that the first pair of requests has the shortest interval between start times from among pairs of requests identified in the list of pairs of requests,responsive to the first request, streaming the asset from a designated director server'"'"'s storage system and storing the asset on the designated director server'"'"'s adaptable cache as it is being streamed from the designated director server'"'"'s storage system, andresponsive to the second request, streaming the asset from the designated director server'"'"'s adaptable cache and transmitting an instruction from the designated director server'"'"'s adaptable cache to the designated director server'"'"'s storage system directing the designated director server'"'"'s storage system not to respond to the second request; and
if the asset is not present on the designated director server, selecting, by the designated director server based on a designated director server'"'"'s state table, a first server in said plurality of servers to service the first request and the second request, said designated director server'"'"'s state table comprising state information for said first server indicating that the asset is present on the first server.
3 Assignments
0 Petitions
Accused Products
Abstract
A system and method for load balancing a plurality of servers is disclosed. In a preferred embodiment, a plurality of servers in a video-on-demand or other multi-server system are divided into one or more load-balancing groups. Each server preferably maintains state information concerning other servers in its load-balancing group including information concerning content maintained and served by each server in the group. Changes in a server'"'"'s content status or other state information are preferably proactively delivered to other servers in the group. When a content request is received by any server in a load-balancing group, it evaluates the request in accordance with a specified algorithm to determine whether it should deliver the requested content itself or redirect the request to another server in its group. In a preferred embodiment, this determination is a function of information in the server'"'"'s state table.
78 Citations
25 Claims
-
1. A method comprising:
-
designating a director server from among a plurality of servers configured to service requests for assets and configured to function as a director server if designated, each of the plurality of servers further configured with a storage system and an adaptable cache configured to proactively cache assets; receiving a first request and a second request for an asset at a network interface of the designated director server; forwarding the first request and the second request to a host processor of the designated director server over a bus; determining whether or not the asset is present on the designated director server; if the asset is present on the designated director server, servicing the first request and the second request from the designated director server by; monitoring the bus by a designated director server'"'"'s adaptable cache, detecting the first request and the second request on the bus at the designated director server'"'"'s adaptable cache, generating, at the designated director server'"'"'s adaptable cache, a list of pairs of requests for the asset comprising a first pair of requests comprising the first request and the second request, determining that the first pair of requests has the shortest interval between start times from among pairs of requests identified in the list of pairs of requests, responsive to the first request, streaming the asset from a designated director server'"'"'s storage system and storing the asset on the designated director server'"'"'s adaptable cache as it is being streamed from the designated director server'"'"'s storage system, and responsive to the second request, streaming the asset from the designated director server'"'"'s adaptable cache and transmitting an instruction from the designated director server'"'"'s adaptable cache to the designated director server'"'"'s storage system directing the designated director server'"'"'s storage system not to respond to the second request; and if the asset is not present on the designated director server, selecting, by the designated director server based on a designated director server'"'"'s state table, a first server in said plurality of servers to service the first request and the second request, said designated director server'"'"'s state table comprising state information for said first server indicating that the asset is present on the first server. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10)
-
-
11. A method comprising:
-
responsive to an asset being copied onto a first server in a load balancing group, modifying, by said first server, said first server'"'"'s state information table by placing an identifier for the asset in said first server'"'"'s state information table, wherein said first server'"'"'s state information table comprises state information for servers in said load balancing group, wherein said state information comprises a plurality of parameters concerning said servers in said load balancing group, and wherein the plurality of parameters comprise asset identifiers; pushing, by said first server, said identifier for the asset to all servers in said load balancing group; modifying, by each server in said load balancing group, its respective state information table, by placing said identifier for the asset in its respective state information table; receiving by said load balancing group a designation by a management system of a director server from among servers in said load balancing group, wherein each server in said load balancing group is configured to function as a director server if designated, and wherein each server in said load balancing group is further configured with a storage system and an adaptable cache configured to proactively cache assets; receiving at a director server'"'"'s network interface a first request and a second request for an asset, forwarding the first request and the second request to a director server'"'"'s host processor over a bus; determining whether or not the asset is present on the director server; if the asset is present on the director server, servicing the request for the video asset by; monitoring the bus by a director server'"'"'s adaptable cache, detecting the first request and the second request on the bus at the director server'"'"'s adaptable cache, generating, at the director server'"'"'s adaptable cache, a list of pairs of requests for the asset comprising a first pair of requests comprising the first request and the second request, determining that the first pair of requests has the shortest interval between start times from among pairs of requests associated with the list of pairs of requests, responsive to the first request, streaming the asset from a director server'"'"'s storage system and storing the asset on the director server'"'"'s adaptable cache as it is being streamed from the designated director server'"'"'s storage system, and responsive to the second request, streaming the asset from the director server'"'"'s adaptable cache and transmitting an instruction from the director server'"'"'s adaptable cache to the director server'"'"'s storage system directing the director server'"'"'s storage system not to respond to the second request; and if the asset is not present on the director server, servicing the first request and the second request by; determining by said director server that the identifier for the asset in a director server'"'"'s state information table is associated with a selected server in said load balancing group; transmitting an instruction from the director server to the selected server to stream the asset to a requesting client; and streaming by said selected server the asset to the requesting client. - View Dependent Claims (12, 13, 14, 15)
-
-
16. A method comprising:
-
designating, by a management system, a director server from among a plurality of servers configured to service requests for assets and configured to function as the director server if designated, each of the plurality of servers further configured with a storage system and an adaptable cache configured to proactively cache video assets; receiving a first request and a second request for a first asset at a network interface of the designated director server; forwarding the first request and the second request to a host processor of the designated director server over a bus; determining that the first asset is present on the designated director server; servicing the first request and the second request from the designated director server by; monitoring the bus by a designated director server'"'"'s adaptable cache, detecting the first request and the second request on the bus at the designated director server'"'"'s adaptable cache, generating, at the designated director server'"'"'s adaptable cache, a list of pairs of requests for the first asset comprising a first pair of requests comprising the first request and the second request, determining that the first pair of requests has the shortest interval between start times from among pairs of requests associated with the list of pairs of requests, responsive to the first request, streaming the first asset from a designated director server'"'"'s storage system and storing the first asset on the designated director server'"'"'s adaptable cache as it is being streamed from the designated director server'"'"'s storage system, and responsive to the second request, streaming the first asset from the designated director server'"'"'s adaptable cache and transmitting an instruction from the designated director server'"'"'s adaptable cache to the designated director'"'"'s storage system directing the designated director'"'"'s storage system not to respond to the second request; receiving a third request for a second asset at the designated director server; determining that the second asset is not present on the designated director server; and selecting, by the designated director server based on a designated director server'"'"'s state table, a first server in said plurality of servers to service the third request, said designated director server'"'"'s state table comprising state information for said first server indicating that the second asset is present on the first server. - View Dependent Claims (17, 18, 19, 20, 21, 22, 23, 24, 25)
-
Specification