Predetermining network paths for steering content

Pre-calculating server node rankings for media item requests optimizes server utilization and reduces resource consumption by directing requests to optimal nodes, addressing inefficiencies in existing systems.

JP2025503366AActive Publication Date: 2025-02-04NETFLIX INC
View PDF 9 Cites 0 Cited by

Patent Information

Application Number
JP2024522493
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Filing Date
2022-10-13
Publication Date
2025-02-04
Estimated Expiration
2042-10-13

AI Technical Summary

Technical Problem

Existing systems inefficiently handle media item requests by repeatedly looking up optimal server nodes for each request, leading to high resource consumption and network bandwidth usage, and random distributed algorithms often require manual tuning to balance server loads.

Method used

Pre-calculate server node rankings based on factors like latency, cost, and popularity, and use these rankings to efficiently direct media item requests to optimal server nodes, reducing the need for real-time lookups and manual algorithm adjustments.

Benefits of technology

This approach significantly reduces the number of lookups and resource consumption while maintaining efficient media item delivery by prioritizing server nodes with higher capabilities, thus optimizing network bandwidth and processing resources.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2025503366000001_ABST
    Figure 2025503366000001_ABST
Patent Text Reader

Abstract

The disclosed computer-implemented method includes determining that received media item requests should be skewed from a random distribution among the server nodes using a random distribution algorithm to a disciplined distribution among the server nodes. The method then includes identifying, in a loading assignment, which media items to load on specific server nodes to generate a disciplined distribution of media item requests. The method then includes pre-loading the identified media items on the server nodes using the loading assignment, and receiving media item requests for the pre-loaded media items. The method then includes routing the received media item requests to the server nodes using a random distribution algorithm, the random distribution algorithm being skewed to a disciplined distribution based on the pre-loading of media items according to the identified loading assignment. Various other methods, systems, and computer-readable media are also disclosed.
Need to check novelty before this filing date? Find Prior Art

Description

CROSS-REFERENCE TO RELATED APPLICATIONS

[0001] This application is a continuation of U.S. Patent Application No. 17 / 503,236, filed October 15, 2021, the disclosure of which is incorporated by reference in its entirety into this application. [Technical field]

[0002] This application relates to pre-determining network paths for steering content. [Background technology]

[0003] Historically, when a user attempted to play a media item, the user would select a play button for that media item, and the backend system would then attempt to identify the best server to provide the requested media item. In this process, the backend system would use factors including latency, proximity, bitrate, content availability, etc. to select the best server. If, for some reason, the server identified as best is unavailable, the system would send the user's request for the media item to an alternate server. Each time a user's request for a media item was received, the backend system would determine the best server to process the request. This often resulted in thousands of such lookups being performed each time a media item request was received.

[0004] Furthermore, regardless of how various server nodes were identified as good candidates for providing the requested media item, once server nodes were identified, conventional systems were designed to steer media item requests to specific nodes to increase efficiency (e.g., to favor servers that ensure full utilization, provide faster download speeds, have faster hard drives, or higher network bandwidth). In such systems, when multiple servers were available for a given media item request, conventional systems would use a random distribution algorithm to spread the request across the available server nodes. When some nodes became overloaded, the system would skew the random distribution by weighting the distribution algorithm toward certain server nodes. Thus, it was necessary to constantly change and skew the request distribution algorithm to ensure that media item requests were processed by server nodes that had the capacity to provide the data. Summary of the Invention [Problem to be solved by the invention]

[0005] As described in more detail below, this disclosure describes systems and methods for pre-computing server node rankings and directing particular ranked server nodes to fulfill media item requests. This disclosure also describes systems and methods for steering media item requests with disciplined distribution. [Means for solving the problem]

[0006] In one example, a computer-based method for pre-computing server node rankings and servicing media item requests using the ranked server nodes includes determining, for a set of electronic devices, server nodes capable of providing the media item to the set of electronic devices. The method then includes pre-computing, from the determined server nodes, server node rankings that rank the server nodes' ability to provide the media item to the set of electronic devices as a function of various media item providing factors. The method further includes receiving a request indicating that the media item should be provided to a particular electronic device in the set of electronic devices. The method then includes accessing the pre-computed server node rankings for the set of electronic devices and instructing an optimal server node identified by the pre-computed server node rankings to provide the media item to the particular electronic device.

[0007] In some embodiments, the server node is part of a particular server cluster. In some cases, the server node ranking is expanded to include rankings for other server clusters based on at least one of the media item providing factors. In some examples, the media item providing factors include proximity, cost, geography, server node health, popularity, server node processing hardware, and / or server node network connection hardware.

[0008] In some embodiments, a particular electronic device is identified as part of a set of electronic devices based on an associated identifier. In some cases, the associated identifier of a particular electronic device is an Internet Protocol (IP) address. In some examples, the IP address of a particular electronic device is part of a Classless Inter-Domain Routing (CIDR) block of IP addresses. In some cases, the set of electronic devices to which a server node can provide media items is represented by a CIDR block. In some embodiments, the pre-computed server node ranking ranks each server node that services IP addresses within each CIDR block.

[0009] In some examples, the identified optimal server node is the server node that is highest ranked in the pre-computed server node rankings. In some cases, the pre-computed server node rankings are provided to multiple different server nodes. In some cases, the pre-computed server node rankings are compressed before being forwarded to the server nodes. In some examples, the system further determines that the rankings have changed based on the serving factors for at least some of the server nodes. The system then propagates the ranking changes for those server nodes such that the pre-computed server node rankings are updated with only the ranking changes for those server nodes.

[0010] In some embodiments, the system further instructs the identified optimal server node to establish peer-to-peer connections with other server nodes to receive media content from those nodes in a peer-to-peer manner. In some cases, a server node having a particular ranking in the pre-computed server node rankings is selected according to various established policies to provide the media item to the particular electronic device. In some examples, the system further validates network paths between the particular electronic device and at least some of the server nodes to ensure that the network paths provide a threshold level of data transfer. In some embodiments, the system further filters network paths between the particular electronic device and at least some of the server nodes to prevent erroneous paths or paths to malicious server nodes. In some examples, the system further steers subsequent media item requests to the identified optimal server node as determined by the rankings.

[0011] Further, the corresponding system includes at least one physical processing unit and a physical memory containing computer-executable instructions that, when executed by the physical processing unit, cause the physical processing unit to determine, for a set of electronic devices, server nodes capable of providing a media item to the set of electronic devices, pre-calculate from the determined server nodes server node rankings that rank the ability of the server nodes to provide the media item to the set of electronic devices according to one or more media item providing factors, receive a request indicating that the media item should be provided to a particular electronic device in the set of electronic devices, access the pre-calculated server node rankings for the set of electronic devices, and instruct the optimal server node identified by the pre-calculated server node rankings to provide the media item to the particular electronic device.

[0012] In some examples, the method is encoded on a computer-readable medium as computer-readable instructions. For example, the readable medium may include one or more computer-executable instructions that, when executed by at least one processing unit of a computing device, may cause the computing device to determine, for a set of electronic devices, server nodes capable of providing a media item to the set of electronic devices, pre-calculate server node rankings from the determined server nodes that rank the server nodes' capabilities to provide the media item to the set of electronic devices as a function of one or more media item providing factors, receive a request indicating that the media item should be provided to a particular electronic device in the set of electronic devices, access the pre-calculated server node rankings for the set of electronic devices, and direct the optimal server node identified by the pre-calculated server node rankings to provide the media item to the particular electronic device.

[0013] In another embodiment, a computer-implemented method of steering media item requests with a disciplined distribution includes determining that received media item requests should be skewed from a random distribution among server nodes using a random distribution algorithm to a disciplined distribution among server nodes. The method further includes identifying, in a loading assignment, which of a plurality of media items should be loaded onto a particular server node to generate the disciplined distribution of media item requests. The method then includes pre-loading the identified media items onto the server nodes with the loading assignment, and receiving media item requests for the pre-loaded media items. The method further includes routing the received media item requests to the server nodes using a random distribution algorithm, the random distribution algorithm being skewed to the disciplined distribution based on the pre-loading of media items with the identified loading assignment.

[0014] In some cases, the method further includes determining the server node's ability to service various requests. In some examples, determining the loading assignment includes as a factor the server node's ability to service requests. In some embodiments, the server node's ability to service requests includes processing capacity, network connection capacity, data storage capacity, current operational health, and / or current resource utilization. In some cases, the data storage capacity used in determining the loading assignment includes information indicative of each server node's data storage hardware. In some embodiments, server nodes having increased amounts of higher order (e.g., solid state) storage are given a loading assignment to receive an increased number of media item requests.

[0015] In some embodiments, the network connection capabilities used in determining the loading assignments include information indicative of each server node's network connection hardware and / or the server node's network connectivity or configuration. In some cases, server nodes having increased network connection bandwidth are given a loading assignment to receive an increased number of media item requests. In some embodiments, the processing capabilities used in determining the loading assignments include information indicative of each server node's processing hardware. In some cases, server nodes having increased amounts of processing bandwidth are given a loading assignment to receive an increased number of media item requests. In some embodiments, server nodes having increased amounts of current operational health are given a loading assignment to receive an increased number of media item requests.

[0016] In some cases, server nodes having a reduced amount of current resource utilization are given a loading assignment to receive an increased number of media item requests. In some examples, determining the loading assignment includes as a factor the different capabilities of the client devices from which the media item requests are received. In some cases, the capabilities of the client devices include information indicative of a decoder type, a device type, a screen resolution, processing resources, information indicative of network connection hardware, or information indicative of data storage capacity of the client devices.

[0017] In some cases, server nodes that provide encoded media items for particular device types are given a loading assignment to receive an increased number of media item requests. In some embodiments, server nodes that provide encoded media items to client devices that have processing resources below a threshold level are given a loading assignment to receive media item requests for those client devices that have processing resources below a threshold level. In some embodiments, server nodes that have provided particular media items in the past are given a loading assignment to receive an increased number of media item requests for contextually similar media items. Additionally, in some examples, server nodes that are predicted to receive an increased number of media item requests for particular media items are given a loading assignment to provide those particular media items.

[0018] Further, a corresponding system includes at least one physical processing unit and a physical memory containing computer-executable instructions that, when executed by the physical processing unit, cause the physical processing unit to determine that received media item requests should be skewed from a random distribution among the server nodes using a random distribution algorithm to a controlled distribution among the server nodes, cause a loading assignment to identify which of a plurality of media items to load onto a particular server node to generate a controlled distribution of media item requests, cause the loading assignment to pre-load the identified media items onto the server nodes, receive media item requests for the pre-loaded media items, and route the received media item requests to the server nodes using the random distribution algorithm, where the random distribution algorithm is skewed to result in a controlled distribution based on the pre-loading of media items according to the identified loading assignment.

[0019] In some examples, the method is encoded on a computer-readable medium as computer-readable instructions. For example, the readable medium includes one or more computer-executable instructions that, when executed by at least one processing unit of a computing device, cause the computing device to determine that received media item requests should be skewed from a random distribution among the server nodes using a random distribution algorithm to a disciplined distribution among the server nodes, cause a loading assignment to identify which of a plurality of media items to load on a particular server node to generate a disciplined distribution of media item requests, cause the loading assignment to pre-load the identified media items on the server nodes, receive media item requests for the pre-loaded media items, and route the received media item requests to the server nodes using a random distribution algorithm, where the random distribution algorithm is skewed to the disciplined distribution based on the pre-loading of media items according to the identified loading assignment.

[0020] The features of any of the embodiments described herein may be used in combination with one another in accordance with the general principles described herein. These and other embodiments, features, and advantages will be more fully understood from the following detailed description, taken in conjunction with the accompanying drawings and claims.

[0021] The accompanying drawings illustrate several exemplary embodiments and are a part of this specification and, together with the following description, illustrate and explain various principles of the present disclosure.

[0022] Throughout the drawings, the same reference numbers and descriptions indicate similar, but not necessarily identical, components. While the exemplary embodiments described herein are susceptible to various modifications and alternative forms, specific embodiments have been shown by way of example in the drawings and are described in detail herein. Nevertheless, the exemplary embodiments described herein are not intended to be limited to the particular forms disclosed. Rather, the present disclosure is intended to cover all modifications, equivalents, and alternatives falling within the scope of the appended claims. [Brief description of the drawings]

[0023] [Figure 1] FIG. 1 illustrates a computing environment for pre-computing server node rankings and steering media item requests with disciplined distribution. [Diagram 2] 4 is a flow diagram of an example method for pre-computing server node rankings and directing ranked servers to fulfill media item requests. [Diagram 3] 1 is a chart showing distribution of streamed bytes against content rank. [Figure 4] 1 is a chart showing the cumulative percentage of traffic to the cumulative bytes stored in a media server. [Diagram 5] 1 illustrates an embodiment of a router and a number of server nodes that make up a server cluster. [Figure 6] 1 illustrates an embodiment showing a number of exemplary media item providers. [Figure 7] 1 illustrates an embodiment that indicates which server clusters are assigned to provide media items to which client devices. [Figure 8] 1 illustrates an embodiment in which multiple server clusters are ranked at different levels. [Figure 9A] 1 illustrates an embodiment in which different server nodes are assigned different CIDR blocks. [Figure 9B] 1 illustrates an embodiment for updating pre-computed server node rankings. [Figure 10]1 illustrates an embodiment that validates and filters paths prior to steering of content. [Figure 11] 1 illustrates a flow diagram of an exemplary method for steering media item requests with controlled distribution. [Figure 12] 1 illustrates an embodiment showing exemplary capabilities of a server node. [Figure 13] 1 illustrates an embodiment that uses a server node's ability to service requests when determining loading assignments for media items. [Figure 14A] 1 illustrates an embodiment in which different server clusters have different types of data storage media. [Figure 14B] 1 illustrates an embodiment in which different server clusters have different types of data storage media. [Figure 15] 1 illustrates an embodiment illustrating exemplary capabilities of a client device. [Figure 16] 1 illustrates an embodiment that uses client device capabilities when determining loading assignments for media items. [Figure 17] FIG. 1 is a block diagram of an example content distribution ecosystem. [Figure 18] FIG. 18 is a block diagram of an exemplary distributed infrastructure within the content distribution ecosystem shown in FIG. 17. [Figure 19] FIG. 19 is a block diagram of an example content player within the content distribution ecosystem shown in FIG. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0024] The present disclosure generally relates to pre-computing server node rankings and directing particular ranked server nodes to fulfill media item requests. Other embodiments of the present disclosure further provide systems and methods for steering media item requests with disciplined distribution. In some examples, steering media item requests with disciplined distribution uses pre-computed server node rankings.

[0025] Traditionally, when a user wishes to play a media item on an electronic device, they would open an application and select a play button for that media item. Upon selecting the play button (or, in some cases, while attempting to pre-fetch the media content), the application would send a signal to a backend system to provide the requested media item. The backend system would then attempt to identify the best server to provide the requested media item. In this process, the backend system would select the best server to provide the requested media item using a variety of factors including latency, proximity, bitrate, content availability, network connectivity, server health, monetary cost, etc. If the server identified as best to provide the requested media item was unavailable for any reason, the backend system would send the user's media item request to an alternative server.

[0026] In such scenarios, the back-end system determined the best server to process each received user request. Such systems first determined which server nodes "see" or can communicate with the Internet Protocol (IP) address block that contains the requesting user's IP address (or, more specifically, the IP address of the electronic device through which the user requested the media item). These systems then determined the cost of providing the requested media item for each of those server nodes (e.g., based on at least some of the factors described above, including latency, proximity, bit rate, etc.) and then selected the server node with the lowest cost. However, this process resulted in thousands of server lookups for each received media item request. This process was therefore resource intensive, consuming both processing and memory resources, including central processing units (CPUs), in addition to the network bandwidth used to communicate with many different server nodes.

[0027] In contrast, embodiments of the present disclosure pre-determine which server nodes can recognize which IP addresses or ranges of IP addresses, referred to as "CIDR blocks." This pre-determination can be done before receiving any media item request. The embodiments described herein then pre-calculate a ranking of those server nodes that can recognize each range of IP addresses (e.g., each CIDR block) based on cost and other factors. The pre-calculated rankings are then stored and distributed to various server nodes in a cluster or clusters. Then, instead of performing hundreds, thousands, or tens of thousands of lookups each time a media item request is received, the system described herein accesses the pre-calculated rankings and selects the optimal server node based on the pre-calculated rankings. The selected server node then provides the requested media item to the requesting user's device.

[0028] This pre-computation process significantly reduces the number of lookups performed when a request for a media item is received, significantly reducing the processing resources and network bandwidth used when a request is received. Furthermore, these pre-computed rankings allow the list of ranked nodes to be compressed before being distributed among the server nodes of a cluster. This compression significantly reduces the routing information used by the entire server node from many gigabytes of data to hundreds of megabytes or less, resulting in a 10-100 times reduction in storage space. Furthermore, the pre-computed server node rankings allow for small incremental changes to be made to the pre-computed list without having to send an entire set of new routing information across the network. Furthermore, this pre-computation may be performed prior to steering any type of content. However, as described below, the pre-computed ranked list of server nodes may be used in conjunction with steering requests to specific server nodes to achieve controlled and disciplined distribution.

[0029] Indeed, the embodiments described herein are designed to steer content to specific nodes (e.g., nodes on a pre-computed list of server nodes) to increase efficiency (e.g., to ensure full utilization among server nodes, provide faster download speeds, prioritize servers with faster hard drives or higher network bandwidth). In other systems, when multiple server nodes are available to service a given request, the backend system may use a random distribution algorithm to spread the request among the available nodes. Thus, for example, when a request for a media item is received at a backend system, these systems apply a random distribution algorithm to randomly assign the request to an available server node. That server node then provides the requested media item to the requesting user.

[0030] In some cases, over time, one or more of the server nodes of these backend systems become overloaded and end up servicing a disproportionate number of media item requests. To eliminate this overload condition, these backend systems attempt to skew the random distribution generated using a random distribution algorithm by weighting the algorithm toward certain servers. Thus, instead of making the random distribution algorithm truly random, server cluster administrators or other users attempted to manually modify the random distribution algorithm by weighting it to ensure that some servers receive a greater number of media item requests than other servers. Such skewing of the random distribution required constant updating and fine-tuning by the server cluster administrator to ensure that the skewed distribution did not overload any of the server nodes whose request distributions were skewed.

[0031] In contrast, embodiments of the present disclosure steer media item requests to certain servers with minimal or, at least in some cases, no changes to the random distribution algorithm. Indeed, the embodiments described herein use a random distribution algorithm, but provide a controlled, disciplined distribution that prioritizes certain servers (e.g., servers with large amounts of solid state or other high-order data storage). The systems described herein achieve such disciplined distribution by loading media items (or other content) onto server nodes in a particular manner. For example, in some cases, the systems described herein place highly popular content on server nodes that have an increased amount of high-order (e.g., solid state) storage, and potentially an increased number of high-speed network adapters. Such server nodes are capable of handling a greater volume of media item requests associated with highly popular media items. In the examples described herein, higher order storage may refer to substantially any type of data storage that accesses and / or stores data faster than a hard disk, while lower order storage may refer to a hard disk or any type of data storage that accesses and / or stores data at speeds equal to or slower than a hard disk.

[0032] In contrast, less popular media items are stored on server nodes that have an increased amount of hard disk space (to store more of the less popular titles) and possibly less network bandwidth (to service a smaller number of media item requests). Thus, even with a random distribution algorithm, the embodiments described herein produce a skewed, yet disciplined, distribution where more requests end up being sent to a particular node because that is where the media item content was originally loaded. As described in greater detail below, this substantially reduces or eliminates the need for a server cluster administrator to vary the random distribution algorithm while still steering media item requests to the server node that can best provide the requested content.

[0033] Various tables, figures, and flow charts will now be described in detail with reference to Figures 1-19. For example, Figure 1 illustrates a computing environment 100 in which server node rankings are pre-computed and then media item requests are steered with disciplined distribution. Figure 1 includes various electronic components and elements, including a computer system 101 that performs associated tasks alone or in combination with other computer systems. The computer system 101 can be virtually any type of computer system, including a local computer system or a distributed (e.g., cloud) computer system. The computer system 101 includes at least one processing unit 102 and at least some system memory 103. The computer system 101 includes program modules that perform various different functions. The program modules may be hardware-based or software-based or include a combination of hardware and software. Each program module uses computing hardware and / or software to perform a particular function, including the functions described herein.

[0034] In some cases, the communication module 104 is configured to communicate with other computer systems. The communication module 104 includes substantially any wired or wireless communication means capable of receiving and / or transmitting data from and / or to other computer systems. These communication means include, for example, a hardware radio, such as a hardware-based receiver 105, a hardware-based transmitter 106, or a combined hardware-based transceiver capable of both receiving and transmitting data. The radio can be a WIFI radio, a cellular radio, a Bluetooth radio, a Global Positioning System (GPS) radio, or other type of radio. The communication module 104 is configured to interact with a database, a mobile computing device (such as a mobile phone or tablet), an embedded computing system, or other type of computing system.

[0035] The computer system 101 further includes a determination module 107. The determination module 107 is configured to determine server nodes that can provide media items to a particular set of electronic devices. For example, the client devices 125 may include a number of different client devices, including a smartphone 125A, a personal computer 125B, and a television 125C. Although FIG. 1 illustrates the client devices 125A-C, it will be appreciated that the set of client devices 125 may include substantially any type of electronic client device and substantially any number of client devices. Each of these client devices 125 is configured to send a media item request 126 (or other data request) to the computer system 101. The media item request 126 may request to begin playing one or more media items, including movies, songs, video clips, audiobooks, video games, or other audiovisual items. From these client devices 125, a determination module 107 of the computer system 101 determines which server node (e.g., 130A, 130B, 130C, etc. from a server cluster 130) can provide the media item 132 to each client device. This determination may be made in a variety of ways, as described further below.

[0036] Once the determination module 107 has determined the server nodes 108 capable of providing the media items 132 to the client devices, a pre-computation module 109 of the computer system pre-computes server node rankings 111 that rank the ability of the server nodes 108 to provide the media items 132 to the set of electronic devices 125 according to one or more media item providing factors 110. These media item providing factors 110 may include proximity, cost, geography, node health, popularity, processing hardware, network connection hardware, and / or other factors, as further outlined with respect to FIG. Upon receiving a request 126 indicating that a media item 132 should be provided to a particular electronic device (e.g., 125A) in the set of electronic devices 125, the ranking access module 112 of the computer system 101 accesses the pre-computed server node rankings 111 for the set of electronic devices to select the best server node to provide the requested media item 132, after which the instruction module 114 of the computer system 101 instructs the best server node (e.g., one of the server nodes 130A-130C, or possibly a server node from another cluster) determined by the pre-computed server node rankings 111 to provide the requested media item to the electronic device 125. This process is further described below with respect to Figures 2-10.

[0037] Additionally, in another embodiment, the distribution determination module 116 determines that one or more received media item requests 126 should be skewed from a random distribution (using a random distribution algorithm) among the server nodes 130 to a disciplined distribution among the server nodes that skews the distribution of requests in a disciplined and controlled manner by placing media items 132 and other content according to a particular placement scheme. In one example, the loading module 117 of the computer system 101 identifies, in a loading assignment 118, which of a plurality of media items 132 should be loaded onto a particular server node (e.g., 130A-130C) to generate a disciplined distribution of media item requests. This disciplined distribution skews the received media requests (e.g., 126) without changing any random distribution algorithm used in processing them. Rather, the pre-loading module 119 of the computer system 101 pre-loads the identified media items 132 onto the server nodes 130 according to the loading assignment 118, and further receives media item requests for the pre-loaded media items. The request routing module 120 of the computer system 101 then routes the received media item requests 126 to the server nodes 130A-130C using a random distribution algorithm 121. However, this random distribution algorithm 121 is skewed to result in a disciplined (i.e., designed) distribution 122 that is based on pre-loading of the media items according to the specified loading assignments 118. This process is described in more detail below with respect to Figures 11-16.

[0038] Reference is now made to Figure 2, which is a flow diagram of an exemplary computer-implemented method 200 for pre-computing server node rankings and instructing servers ranked as fulfilling a media item request. The steps illustrated in Figure 2 may be performed by any suitable computer-executable code and / or computing system, including the system illustrated in Figure 1. In one example, each step illustrated in Figure 2 represents an algorithm whose structure includes and / or is represented by multiple sub-steps, an example of which is provided in greater detail below.

[0039] As shown in FIG. 2, at step 210, one or more of the systems described herein determine, for a set of electronic devices 125, server nodes (e.g., 130A-C) that can provide media items 132 to the set of electronic devices. As noted above, the set of electronic devices 125 can include substantially any number or type of electronic client devices, including smartphones (125A), personal computers (125B), televisions (125C), laptops, tablets, smartwatches, artificial reality devices (including augmented reality, virtual reality devices, etc.), or other electronic devices capable of playing media items. Similarly, the server nodes 130 can include substantially any number or type of server nodes. These server nodes 130 can be located in the same general area (e.g., in a single server room) or spread across many different locations on the globe. Each server node can have its own data store or have access to data store 131, which can be local to itself or geographically distributed across many different storage nodes or clusters in different locations.

[0040] Thus, the determination module 107 is configured to determine, for substantially any client device, regardless of type or location, the server nodes capable of providing the requested media item 132 to the client device. In some cases, multiple server nodes 130 may be capable of providing the requested media item, meaning that those server nodes have access to the requested media item and a network connection that can recognize the client device. The pre-computation module 109 of the computer system 101 then calculates 220 a server node ranking 111 that ranks the ability of the server nodes 108 to provide the media item 132 to the electronic device from among the server nodes 108 capable of providing the requested media item according to various media item providing factors 110.

[0041] In determining the rankings for different server nodes, at least some of the embodiments described herein factor in the popularity of the requested media item 132. Indeed, some media items are (at least initially) more popular than others, and in a given system, the most popular media items (e.g., "Popular Title A" or "Popular Title B" in the chart 300 of FIG. 3) will have the highest corresponding number of streamed bytes 301. Conversely, less popular titles (e.g., "Less Popular Title C" and "Less Popular Title D") will elicit a much smaller number of streamed bytes, as indicated by the content rank 302. Furthermore, as shown in the example chart 400 of FIG. 4, a majority of data requests 401 may be serviced by a relatively small amount of data 402. This is because a relatively small portion of the highly requested titles use a relatively small amount of disk space, and the remainder of the available disk space is used for less popular titles. The streaming of these less popular titles will be recorded as a low total percentage of bytes provided to clients. Thus, in at least some cases, the pre-computation module 109 takes into account the popularity or content ranking of the requested media item and / or the relative amount of traffic used to provide the requested media item 132 .

[0042] Each server cluster is composed of different server nodes. Each of these server nodes may have different processing hardware, different network connection hardware, different data storage capabilities, or other differences. This may also be taken into account when pre-calculating the server node rankings. As shown in FIG. 5, a server cluster 502 may include multiple nodes 501 connected to a router 503 or other network connection hardware that enables the cluster to receive media item requests, access those media items, and provide the requested media items to client devices. Each server cluster 502 has a server cluster ranking 504 that is used in determining the server node best suited to service a client request. The server cluster ranking 504 may apply to the server cluster as a whole, or the server cluster ranking may include multiple specific rankings for each server node 501 of the cluster. As noted above, each server node in a cluster may have different hardware than the other server nodes. Or, in other cases, each server node of a cluster may have the same hardware, possibly including network connection hardware, processing hardware, and / or storage hardware. Thus, the server cluster ranking 504 may be detailed and include multiple levels and rankings at each level. In such cases, these levels may include an overall ranking that applies to the entire server cluster in addition to individual rankings for each individual server node 501.

[0043] In some embodiments, the pre-computation module 109 of the computer system 101 of Figure 1 generates various levels of server cluster rankings 111 according to media item serving factors, including factors related to the requested media item itself (e.g., popularity as shown in Figure 3) and / or factors related to the server node or server cluster. At least some of these factors are illustrated diagrammatically in Figure 6. As shown in Figure 6, the media item serving factors 601 include, but are not limited to, proximity 602, cost 603, geography 604, health 605, popularity 606, processing hardware 607, and / or network connection hardware 608.

[0044] Proximity 602 refers to the physical distance of a server cluster (or a server node) to a requesting client device. This may include literal physical distance or may include a number of hops between network connection nodes. In such cases, a close physical distance or a small number of hops between network connection nodes is optimal. In at least some cases, cost 603 refers to the monetary cost of a connection. In some cases, for example, an Internet Service Provider (ISP) may make a deal with a content provider to receive a lower fee for some connections (e.g., charge a lower transfer rate per byte). In such cases, cost 603 refers to the actual amount (e.g., dollar amount) that it will cost to transfer bytes of data of a media item from a server node to a client device. In other cases, cost 603 refers to non-monetary costs, including network management factors. These network management factors may include available bandwidth, expected congestion during peak traffic, latency, or traffic balancing between two or more different network paths.

[0045] Geographical conditions 604 refer to city, county, country, or state boundaries that may be crossed when transferring a media item to a requesting client device. Geographical conditions may also refer to the location of the client device, or the location of cell towers or other wireless or wired network connection hardware that may be between the serving node and the client device. Any of these geographical features may affect how data is transferred between the server and the client, and the more geographically optimal servers will be ranked higher. Additionally, health 605 refers to the health of the server node 130 (or 501 in FIG. 5). Each server node, at any given moment in time, may have approximately available network connection bandwidth, approximately available processing bandwidth (e.g., CPU cycles, CPU cores, RAM, etc.), approximately available data storage, may operate in an environment that is too hot or too cold, may have hardware that is no longer functioning properly, may have a power outage condition, or may experience hardware failures or other events that may affect the health of the node. These are taken into account by the pre-computation module 109.

[0046] Additionally, in at least some cases, as highlighted in Figures 3 and 4, the pre-computation module 109 considers the popularity 606 of the requested media item based on the number of past requests for that media item or based on a prediction of future requests for that media item. Other factors 601 indicate what type of processing hardware 607 is available, including CPU type, number of CPU cores, number of machine learning cores or chips, amount of available RAM, etc., in addition to network connection hardware 608, including the type and number of available wired and wireless network adapters, routers, firewalls, and other network connection devices. The pre-computation module 109 may use any or all of these factors 601 (or other factors) in determining the server node rankings 111 for the server cluster as a whole or for each individual server node of the cluster.

[0047] Returning to Figure 2, method 200 further includes receiving, at step 230, a request 126 indicating that media item 132 should be provided to a particular electronic device (e.g., 125B) in set of electronic devices 125. Next, method 200 includes accessing, at step 240, pre-computed server node rankings 111 for set of electronic devices 125, and further includes instructing (using providing instructions 115) an optimal server node 113 identified by the pre-computed server node rankings 111 to provide the media item 132 to the particular electronic device (e.g., 125B) at step 250. However, this pre-computed server node ranking 111 is calculated, at least in some cases, prior to receiving the media item request or prior to receiving a request for a media item yet to be loaded into data store 131. Thus, instead of having to perform hundreds or thousands of lookups to determine the appropriate node to provide a requested media item, the system described herein has already pre-calculated which server node is best suited to provide a particular media item to a particular client device or set of client devices.

[0048] Indeed, in some cases, the electronic device that sent the media item request 126 is identified as part of a particular set of electronic devices. For example, client device 125C is part of the set of client devices 125. In some examples, computer system 101 determines that client device 125C is part of the set of client devices 125 based on an associated identifier. In some cases, the associated identifier of that particular electronic device is an Internet Protocol (IP) address. Each client device 125A-125C has its own IP address identifier. That IP address may be part of a Classless Inter-Domain Routing (CIDR) block of IP addresses. As shown in FIG. 7, for example, client device 705 is part of IP CIDR block 703 having IP addresses in the range 192.168.1.1-192.168.1.100 (arbitrarily chosen for this example). Client device 706 also has an IP address in this range (192.168.1.87) and is also part of CIDR block 703. The CIDR block in this example has 100 IP addresses, but it will be understood that a CIDR block or other identifier grouping (e.g., a grouping of Media Access Control (MAC) addresses) may have more or fewer IP addresses or other identifiers. In this example, server cluster 701 is configured to serve client devices in IP block 703. This means that server cluster 701 may be physically connected to client devices 705, 706 via a wired or wireless network connection. Thus, if server cluster 701 has a media item requested by client device 705 or client device 706, a node from server cluster 701 will provide the media item.

[0049] Other client devices may be part of different IP CIDR blocks. For example, client device 707 is part of IP block 704 with a different range of IP addresses. In at least some cases, server cluster 701 may not be able to serve devices in IP block 704. In this example, server cluster 702 may recognize devices in IP block 704, however. Thus, embodiments described herein may determine, for each CIDR block IP address, which server clusters can physically communicate with devices in that range of IP addresses. For those server clusters that can communicate with those devices, pre-computation module 109 of computer system 101 may rank those server nodes by one or more of the serving factors 110. Then, upon receiving a media item request from a client device in a given CIDR block (e.g., 703), ranking access module 112 may simply access server node rankings 111 for server clusters that can recognize the CIDR block and select the most appropriate server node 113 from among the list of ranked server nodes.

[0050] Thus, because not all server clusters may see or communicate with devices from all CIDR blocks, the embodiments described herein may omit some servers from the ranked server node list. In some cases, for example, the pre-computed server node rankings 111 rank each server node that serves IP addresses in each CIDR block. Thus, the ranked server node list may be dedicated to a CIDR block and, in at least some cases, include only server nodes that can communicate with client devices having IP addresses in those CIDR blocks. In such cases, other server nodes that cannot communicate with those client devices are omitted from the ranked server list. This further reduces the size of the ranked server list (e.g., 111), thereby reducing disk space usage and also reducing network bandwidth used to transmit the ranked server node list among various server nodes and / or server clusters.

[0051] In some embodiments, the optimal server node 113 selected by the ranking access module is the server node that is ranked highest in the pre-computed server node rankings 111. For example, in some embodiments, the pre-computation module 109 considers one or possibly many of the provisioning factors 110 for each server node of a server cluster. Or, in other cases, as shown in FIG. 8, the pre-computation module 109 of FIG. 1 considers the provisioning factors 110 for each server cluster in an environment with many server clusters. In the latter case, the pre-computation module 109 ranks the various server clusters (e.g., 804, 805), possibly using factors such as path length, intermediate cost, and geography. In such cases, the server clusters are ranked into three different categories: PR0 (801), PR1 (802), and PRN (803). Thus, server clusters in categories PR0 or PR1 may share the same ranking. In other cases, server clusters may be ranked within each category such that both server clusters 804, 805 are in category PR0, but server cluster 804 is ranked higher than server cluster 805. Similar rankings may be generated for individual server nodes within a server cluster.

[0052] In some embodiments, the rankings generated by the pre-computation module 109 are generated for each CIDR block. As shown in FIG. 9A, for example, each CIDR block (as identified by block ID 910) may have its own corresponding ranking 911. For example, in the embodiment shown in FIG. 9A, CIDR block 901 ranks three server nodes such that server C is the most suitable to provide (or otherwise serve) media items to client devices belonging to that CIDR block, followed by server A, then server B. For CIDR block 902, the pre-computation module 109 determines, based on one or more of the provisioning factors 110, that server node D is the most suitable to provide services to devices in CIDR block 902, followed by server node F, then node G, then node E. Similarly, for CIDR block 903, the server nodes are ranked such that server node B is the best node, followed by node D, then node H. Notably, in this CIDR block, server nodes B and D can also serve CIDR blocks 901 and 902, respectively. Thus, each ranking 911 may include server nodes that can serve client devices of multiple CIDR blocks. The pre-computation module 109 may also pre-compute rankings for other CIDR blocks n (904) and store those rankings in the server node (or cluster) rankings 111. The computer system 101 then shares the server node rankings with other server clusters and nodes. In this way, instead of having to perform a lookup when a client request is received, each server node simply consults the pre-computed server node rankings 111 and uses the rankings to determine which server node is best suited to provide the requested media item.

[0053] In some cases, the pre-computed server node rankings 111 are compressed before being transferred to the server nodes. The computer system 101 may use a variety of different compression algorithms when compressing the server node rankings 111. This compression reduces the amount of data transmitted to the various server nodes. The computer system 101 also tries to minimize the amount of data generated and transferred when updating the server node rankings 111. Instead of sending new server node rankings 111 every time a node is added or removed from the cluster, or every time new hardware is installed in a node, or every time a server node is down for an extended period of time, the computer system simply determines that the rankings have changed for at least some server nodes based on the provisioning factors, and then propagates the ranking changes for those changed server nodes. In this way, as shown in FIG. 9B, the pre-computed server node rankings are updated with only the ranking changes for those server nodes. Thus, the pre-computed server node rankings update 905 includes only the changes for the CIDR block 903, changing the ranking from B, D, H to D, B, H. Such minimal changes reduce the amount of ranking update data transferred between server nodes, further reducing the amount of computational resources used to process the changes.

[0054] In addition to finding the best server node to provide a media item, in at least some embodiments, the server node ranking 111 is used to establish a peer-to-peer connection with one or more other clients and / or server nodes. In one example, as shown in FIG. 10, a server node 1006 establishes a connection to a client device 1005 through a router 1004 (and / or other network connection node). In some cases, the server node ranking 111 indicates which server node is best among a number of different server nodes to form a peer-to-peer connection with another server node (e.g., as shown in FIG. 8). The provisioning factor 110 or other factors may be used to determine which server node is best to be part of a peer-to-peer connection. Once a connection is established, the server node requests and receives content from the peer node for storage in its own storage device. Additionally, once a connection is established, other servers or client nodes may be added to the server node's peer group on an ad-hoc basis.

[0055] In some embodiments, the server node that is ranked highest in the server node rankings 111 is not selected as the optimal server node 113. In fact, the decision of which server node is optimal in any given situation may be overridden by established policies. For example, for a client device (e.g., a smartphone or a television), a server node that is ranked low in the server node rankings 111 may be selected. In some cases, for example, a client device requests a server node. In such cases, the requested server node is used over the highest ranked node. In other cases, a policy may indicate that for a television client, for example, a server node that has a media item with a particular encoding should be selected over other server nodes, perhaps higher ranked server nodes. Furthermore, a policy may indicate that for a particular client device, only wireless connections should be used. Thus, even if a particular highest ranked server is selected from the server node rankings 111, the selection may be overridden if that particular server node is a wired connection at some point. In at least some cases, these policies are defined by the end user of the client device. In other cases, the policies are defined by network or information technology administrators.

[0056] The computing environment 1000 of FIG. 10 further illustrates an example of using the computer system 1010 to validate network paths between the client device 1005 and at least some of the server nodes 1006 / 1007. This validation ensures that the network paths provide a threshold level of data transfer. In some cases, computer networks, or even individual server nodes or cluster nodes, may go down from time to time. These nodes are often down for an indeterminate amount of time. Thus, in at least some embodiments, the path validation module 1001 of the computer system 1010 is configured to validate the network connection paths through the routers 1004 and / or other network connection hardware. In some cases, this validation process attempts to ensure that a minimum bit rate is established between the client device 1005 and the server nodes 1006 and / or 1007. In some embodiments, if the path validation module 1001 determines that a given server node (e.g., 1007) is offline, the path filtering module 1002 filters that network path between the client device and the server node 1007. Such filtering prevents the use of incorrect paths or multiple paths that cannot maintain a minimum threshold bit rate. Similarly, the path filtering module 1002 filters paths that are known or suspected to be malicious server nodes, thereby preventing client devices 1005 from connecting to malicious server nodes that are meant to harm the client device or end user in some way.

[0057] As described further below, the request steering module 1003 of the computer system 1010 is used to steer subsequent media item requests to the optimal server node as determined by the server node rankings 111. Thus, upon receiving a media item request from a client device 1005, for example, the computer system 1010 will steer the request to a particular server node. In some cases, that server node is the node determined to be optimal by the server node rankings 111. Other subsequent media item requests may also be steered to the determined optimal node. Such steering may be actively performed by the computer system 1010 where the request steering module 1003 may send received media item requests directly to a particular server node or cluster. In other cases, as described below with respect to the method 1100 of FIG. 11, the request steering module 1003 may load media items in a particular manner on a particular server node to skew the distribution of received requests according to a disciplined distribution.

[0058] Reference is now made to Figure 11, which is a flow diagram of an exemplary computer-implemented method 1100 for steering media item requests with disciplined distribution. The steps illustrated in Figure 11 may be performed by any suitable computer-executable code and / or computing system, including the system illustrated in Figure 1. In one example, each step illustrated in Figure 11 represents an algorithm whose structure includes and / or is represented by multiple sub-steps, an example of which is provided in greater detail below.

[0059] As shown in Figure 11, at step 1110, one or more of the systems described herein determine that received media item requests should be skewed from a random distribution among the server nodes using a random distribution algorithm to a disciplined distribution among the server nodes. For example, the distribution determination module 116 of the computer system 101 of Figure 1 determines that received media item requests (e.g., 126) should be skewed from a random distribution among the server nodes using a random distribution algorithm 121 to a disciplined distribution 122 that directs an increased number of received media item requests to a particular server node. Next, the method 1100 includes, at step 1120, identifying which of a plurality of media items should be loaded to a particular server node in a loading assignment to generate a disciplined distribution of media item requests. For example, in some cases, a loading module 117 of the computer system 101 identifies, in loading assignments 118, which of various media items 132 should be loaded onto particular server nodes (e.g., 130A-130C) to generate a controlled distribution 122 of media item requests.

[0060] The pre-loading module 119 of the computer system 101 then pre-loads 1130 the identified media items according to the loading assignments 118 onto the server nodes 130A-130C. The communications module 104 receives 1140 media item requests for the pre-loaded media items 132, and the request routing module 120 routes 1150 the received media item requests 126 to the server nodes 130A-130C using a random distribution algorithm 121. Nevertheless, the random distribution algorithm is skewed to result in a disciplined distribution 122 based on the pre-loading of media items according to the identified loading assignments 118.

[0061] As used herein, the term "random distribution" refers to distribution of media item requests or other received requests from client devices using a random distribution algorithm designed to distribute client requests randomly or at least substantially randomly to server nodes. In a random distribution, over time, each server node can be expected to receive a roughly equal number of media item requests. As used herein, the term "skewed distribution" is used to refer to a non-randomized distribution that will favor some server nodes over other server nodes over time. The amount of skew is configurable, and the skew can be designed to favor certain server nodes over other server nodes. As used herein, the term "controlled distribution" refers to a distribution that is skewed in some manner that is controlled or controlled.

[0062] As noted above, in other systems, skewed distributions were generated by modifying the random distribution algorithm by weighting the algorithm so that some servers receive more traffic than others. In contrast, the embodiments described herein generate skewed and disciplined distributions without modifying the random distribution algorithm 121. Instead, these embodiments control how media items are preloaded onto server nodes, for example, providing more popular media items to certain servers and less popular content to other server nodes. Since more popular media items will inherently receive more client requests (due to their popularity), the random distribution algorithm 121 will send an increased number of received requests to those server nodes that have more popular media items, albeit randomly, because of how the media items are loaded. In this way, the embodiments described herein provide disciplined distribution of received requests while still using the random distribution algorithm 121 to assign requests to server nodes.

[0063] 11, the computer system 101 determines that received media item requests should be skewed with a disciplined distribution, identifies how to preload media items onto the server nodes (e.g., 130A-130C) to generate the disciplined distribution, preloads the media items onto the server nodes in the identified manner, and, as it receives incoming (media item) requests, routes those requests using a random distribution algorithm 121. Nevertheless, because of how the media items 132 were preloaded, the media item requests are skewed among the server nodes and distributed among the server nodes in a disciplined manner to favor some servers over others, even with a random distribution algorithm.

[0064] In some cases, the process further includes a process of determining the server node's request servicing capabilities. For example, as shown in FIG. 12, the loading module 117 of the computer system 101 of FIG. 1 uses the server node's request servicing capabilities 1200 to determine how to preload the server nodes with the loading assignments 118. The server node's request servicing capabilities 1200 generally indicate the ability of each server node (or each server cluster) to service received client requests. The server node's request servicing capabilities 1200 include processing capabilities 1201, network connection capabilities 1202, data storage capabilities 1203, current operational health 1204, current resource utilization status 1205, and other capabilities. The server node's processing capabilities 1201 refer to the server node's central processing unit (CPU), the number and / or speed of CPU cores, available memory (e.g., RAM), the number of CPU cores that can be dynamically added (e.g., via a networked computer system), or other data processing elements. Some server nodes have a relatively large amount of processing resources, and most server nodes are fast and have the latest technology, while other server nodes have a relatively small amount of processing resources, some of which may be slower and have older (cheaper) technology. Thus, some server nodes may be capable of providing a very large amount of processing resources, while other server nodes may only be capable of providing a smaller amount of processing resources to service data requests.

[0065] Similarly, network connectivity capabilities 1202 refer to the ability of a server node to transmit and receive data. Some server nodes may include multiple high-speed (e.g., Gbit) network adapters, while other server nodes may include fewer, slower network adapters. Some server nodes may have wired network adapters, while other server nodes may have wireless adapters, or a combination of both. Some server nodes may be configured to dynamically add network connectivity resources (e.g., connect to network connectivity hardware of other server nodes) as needed. Thus, network connectivity capabilities 1202 indicates each server node's ability to transfer data across a network.

[0066] Data storage capability 1203 refers to the server node's ability to store digital data. Each server node may store digital data (e.g., media items or other data) in local data storage and / or distributed data storage. Data storage capability 1203 indicates which data storage is used, at least in some cases, from a type including, but not limited to, solid state drives, hard disk drives, optical storage media, tape drives, holographic storage, or other types of data storage. Some of these types of data storage are faster than others (e.g., solid state drives store and provide data much faster than hard drives), and some types of data storage store more data than others (hard disk drives and tape drives store much more data than solid state drives or optical devices). Thus, each server node may be better or worse at providing large amounts of data to a large number of users (e.g., for popular media items) or storing a large number of less popular media items, depending on the type of storage used.

[0067] Current operational health 1204 indicates how each server node is currently operating. If the server node's CPU is overheating, one or more of the server node's network adapters are down, or the node's data store has lost one or more storage devices, the health of the server node will be considered poor. On the other hand, if the CPU is operating within normal temperature ranges, the network adapter has a fully functional network adapter, and / or the data store has a sufficient number of valid storage devices, the health of the server node will be considered good. Thus, any of these (or other health) factors may be used to determine the server node's ability to service client requests (i.e., the health of the server node) and to factor in determining how to preload media items for controlled distribution. Additionally, current resource utilization 1205 indicates how much processing capacity, how much network connection capacity, how much data storage capacity, etc., is currently available. Server nodes that have a large amount of available processing resources, a large amount of available network connection capacity, and / or a large amount of data storage capacity will be ranked higher since they have relatively low resource utilization. Server nodes having a smaller amount of available processing resources, a smaller amount of available network connection capacity, and / or a small amount of data storage capacity will have relatively high resource utilization and therefore will be ranked lower. In this manner, the ability to service these and other requests may be taken into consideration when determining how to preload media items onto server nodes.

[0068] FIG. 13 illustrates an embodiment in which media items 1302 are distributed from data storage 1301 to various server clusters (e.g., 1305, 1306, and / or 1307) or server nodes within those clusters using loading assignments 1304, with server node requests servicing capabilities 1303 (which may be the same as or different from capabilities 1200 of FIG. 12). In some embodiments, the data storage capabilities 1203 used in identifying the loading assignments 1304 include information indicative of the data storage hardware of each server cluster or each server node. As noted above, this data storage hardware may include solid state drives (SSDs), hard disk drives (HDDs), or other types of storage devices. In some cases, server nodes with larger solid state storage (e.g., on SSDs or flash drives) are given loading assignments 1304 to receive an increased number of media item requests. Indeed, in at least some instances, some server nodes are designed with relatively large amounts of SSD storage space. SSDs are capable of accessing and serving data to a very large number of users simultaneously, and therefore these types of server nodes are better suited for storing popular material that receives (or is predicted to receive) a large number of incoming requests (e.g., as shown in Figures 3 and 4 above).

[0069] As shown in Figures 14A and 14B, for example, some server clusters include primarily SSD (flash) storage (e.g., 1404A) while other server clusters include solely or primarily HDD storage (e.g., 1405A, 1405B). In Figure 14A, server cluster 1403A includes four SSD clusters 1404A and two HDD clusters 1405A. The SSD clusters store smaller data but provide that data to users 1401A very quickly via router (or other network connection hardware) 1402B, and server cluster 1403B includes two HDD devices but no SSD devices. In such a case, server cluster 1403B may be best suited to store a large number of less popular media items. In at least some embodiments, the underlying system uses information about each cluster's data storage hardware to determine the best manner to preload media items to provide a disciplined distribution. Once this determination is made, preloading instructions 127 are sent to server nodes 130 of FIG. 1 (or to storage clusters 1404A-1405B of FIG. 14) to preload the media items to those server nodes in the directed manner. It will be further appreciated that the term "preloading instructions" 127 can refer to either the initial loading of media items into a data store, or to the future movement of data items to other storage devices. Thus, "loading assignments" 118 refer to preloading operations (where the loading is based on how well the media items are expected to be received), and to general loading or reloading operations where media items are moved from SSD to HDD, or from HDD to SSD, or between other storage devices, at a time after the initial preloading.

[0070] In some embodiments, the network connection capabilities 1202 used in determining the loading assignments 118 include information indicative of each server node's (or each server cluster's) network connection hardware. In some cases, server nodes with increased amounts of network connection bandwidth are given loading assignments 118 that accept an increased number of media item requests. For example, as shown in FIG. 3, the amount of bytes of data streamed for popular titles is much larger than for less popular titles. Thus, the loading assignments 118 assign more popular media items to server nodes or clusters that have increased amounts of network connection bandwidth (whether those items are currently popular based on the number of tracked media item requests, or whether those items are predicted to be more popular based on the number of viewers of similar items or the people involved in the production of the media items). This may be because those nodes or clusters have an increased amount of network adapters, access to higher bandwidth data links, or because the network path between the majority of users and the stored content is shorter. Regardless of how the increased amount of network connection bandwidth is achieved, the loading module 117 takes into account the network connection capabilities of the server node or cluster when determining where to initially load a media item or where to move a media item over time after it becomes less popular.

[0071] Similarly, in at least some embodiments, in determining the loading assignments 118, the loading module 117 considers the processing capabilities 1201 and includes access to information indicative of the processing hardware of each server node. The information indicative of the hardware may identify the type of processing units used, the number of CPU cores, the type of memory used (e.g., RAM or DRAM), the total amount of memory available, the amount of memory currently available, the number and / or type of available machine learning processing units, the number and / or type of available graphics processing units (GPUs), the number and / or type of available dedicated processing units, or any other processing hardware provided by the server node or cluster. In such cases, a server node or cluster having an increased amount of processing power or processing bandwidth is given a loading assignment 118 designed to receive an increased number of media item requests.

[0072] Further, in at least some embodiments, server nodes that have an increased amount of current operational health 1204 are given a loading assignment 118 designed to receive an increased number of media item requests. Thus, nodes that are operating within normal temperature ranges, that are not experiencing defects, storage device failures, or network adapter failures, or that are not experiencing software crashes or other types of failures are given a loading assignment to which an increased number of media item requests are sent. Similarly, server nodes or clusters that have a reduced amount of current resource utilization, and therefore available processing, network connections, or storage resources, are given a loading assignment 118 designed to receive an increased number of media item requests.

[0073] The loading module 117 may use any or all of the server node's servicing capabilities 1200 to rank the available server nodes or clusters and further determine how to best utilize each cluster or node. Some nodes or clusters are better suited to store larger amounts of data that serve fewer users at a slower rate, while other nodes or clusters are better suited to store smaller amounts of data that serve more users at a faster rate. The loading module 117 takes this into account when determining loading assignments 118 that ultimately result in skewed distribution of media items to particular servers while distributing media item requests 126 using a random distribution algorithm 121.

[0074] In some embodiments, the determination of the loading assignment 118 includes, as at least one factor, the differing capabilities of the client devices (e.g., client devices 125A, 125B, or 125C) from which the media item request was received. In some cases, as shown in FIG. 15, the client device capabilities 1501 include, but are not limited to, decoder type 1502, device type 1503, screen resolution 1504, information indicative of processing resources 1505, information indicative of network connection hardware 1506, information indicative of data storage capacity 1507, or other characteristics of the client device. As shown in environment 1600 of FIG. 16, for example, media items 1602 in data store 1601 may be loaded onto one or more server clusters 1605, 1606, and / or 1607 by loading assignment 1604. The loading assignment 1604 may take into account the capabilities 1603 of the client device sending the request for the media item 1602.

[0075] Decoder type 1502 indicates, for example, the type of decoder that the client device uses to decode the audiovisual data. Some client devices have very efficient and powerful video decoders that can decode large amounts of data for a high resolution screen. Other client devices have less efficient and less powerful video decoders that can only handle smaller amounts of data. Thus, this difference may be taken into account when generating loading assignments. If a given cluster receives a preponderance of media item requests from client devices with less powerful video decoders (e.g., feature phones), a version of the media item encoded at a lower resolution may be optimally stored in that cluster.

[0076] The type of device 1503 may also be taken into account by the loading module 117. If a particular server node or server cluster receives many media item requests from televisions or personal computers with large display screens, then higher resolution versions of the media items will be optimally loaded to those nodes or clusters. If a cluster receives a majority of the requests it receives from smartphones that generally have high resolution screens (e.g., 1504), then the loading module 117 will load certain high quality encoded media items to those nodes or clusters.

[0077] Further, in some embodiments, server nodes that provide a particular encoded media item to client devices that have processing resources 1505 (e.g., CPU cores, RAM, etc.) below a threshold level are given a loading assignment 118 to receive media item requests for those client devices that have processing resources below a threshold level. In such cases, client devices with processing resources below the threshold will end up being sent to one cluster, again in a disciplined distribution, and client devices with processing resources above the threshold will be sent to another cluster, again in a disciplined distribution. Similarly, preloading media items may result in requests from client devices with network connection hardware 1506 or storage capacity 1507 above a particular threshold being sent to one server node or cluster, and requests from client devices with network connection hardware or storage capacity below a particular threshold being sent to a different server node or cluster. However, either or both of the server node's request serving capabilities 1200 and client device capabilities 1501 may be used as factors in determining the optimal loading assignment 118 for the disciplined distribution 122.

[0078] In some embodiments, server nodes that have provided a particular media item in the past are given a loading assignment 118 to receive an increased number of media item requests for contextually similar media items. In such cases, media items that share a similar genre, similar title, similar actors, or other contextual similarities are preloaded onto the same server nodes or clusters. Then, when the request routing module 120 routes the media item requests 126 according to the random distribution algorithm 121, media item requests for contextually similar media items will be skewed to those server nodes or clusters.

[0079] Further, in some instances, server nodes that are predicted to receive an increased number of media item requests for particular media items are given loading assignments 118 to serve those particular media items. Thus, in such cases, computer system 101 identifies past request distribution information to determine how many media item requests have been received for each given media item, and then predicts from that information which media items will be more frequently requested. Loading module 117 then uses this predictive information when generating loading assignments 118. In this manner, media items may be preloaded to skew the distribution of media item requests with a controlled and disciplined distribution, even when a random distribution algorithm is used to assign media item requests to server nodes or clusters.

[0080] Further, the corresponding system includes at least one physical processing unit and a physical memory containing computer-executable instructions which, when executed by the physical processing unit, cause the physical processing unit to determine that received media item requests should be skewed from a random distribution among the server nodes using a random distribution algorithm to a disciplined distribution among the server nodes, cause a loading assignment to identify which of a plurality of media items to be loaded onto a particular server node to generate a disciplined distribution of media item requests, cause the loading assignment to pre-load the identified media items onto the server nodes and receive media item requests for the pre-loaded media items, and further cause the received media item requests to be routed to the server nodes using the random distribution algorithm, the random distribution algorithm being skewed to the disciplined distribution based on the pre-loading of media items according to the identified loading assignment.

[0081] In some examples, the method is encoded as computer readable instructions on a computer readable medium. For example, the computer readable medium includes one or more computer executable instructions that, when executed by at least one processing unit of a computing device, cause the computing device to determine that received media item requests should be skewed from a random distribution among the server nodes using a random distribution algorithm to a disciplined distribution among the server nodes, cause a loading assignment to identify which of a plurality of media items to load on particular server nodes to generate a disciplined distribution of media item requests, cause the loading assignment to pre-load the identified media items on the server nodes, receive media item requests for the pre-loaded media items, and further cause the received media item requests to be routed to the server nodes using a random distribution algorithm, where the random distribution algorithm is skewed to the disciplined distribution based on the pre-loading of the media items according to the identified loading assignment.

[0082] Further, the alternative system includes at least one physical processing unit and a physical memory containing computer-executable instructions which, when executed by the physical processing unit, cause the physical processing unit to determine, for a set of electronic devices, which server nodes are capable of providing a media item to the set of electronic devices, pre-calculate from the determined server nodes server node rankings ranking the server nodes' capabilities of providing the media item to the set of electronic devices using one or more media item providing factors, receive a request indicating that the media item should be provided to a particular electronic device in the set of electronic devices, access the pre-calculated server node rankings for the set of electronic devices, and further instruct the identified optimal server node to provide the media item to the particular electronic device using the pre-calculated server node rankings.

[0083] Additionally or alternatively, in some examples, the method is encoded as computer readable instructions on a computer readable medium. For example, the computer readable medium may include one or more computer executable instructions that, when executed by at least one processing unit of a computing device, cause the computing device to determine, for a set of electronic devices, which server nodes are capable of providing a media item to the set of electronic devices, pre-calculate from the determined server nodes server node rankings ranking the server nodes' capabilities of providing the media item to the set of electronic devices using one or more media item providing factors, receive a request indicating that the media item should be provided to a particular electronic device in the set of electronic devices, access the pre-calculated server node rankings for the set of electronic devices, and further instruct the identified optimal server node to provide the media item to the particular electronic device using the pre-calculated server node rankings.

[0084] Next, with reference to Figure 17, an exemplary ecosystem in which content is provided to end nodes and requests for content are steered to specific end nodes is described in detail. The corresponding descriptions of Figures 18 and 19 respectively show an overview of an exemplary distributed infrastructure and an exemplary content player used during playback. These exemplary ecosystems and distributed infrastructures are used in any of the above embodiments described with reference to Figures 1-16.

[0085] 17 is a block diagram of a content distribution ecosystem 1700 including a distributed infrastructure 1710 in communication with a content player 1720. In some embodiments, the distributed infrastructure 1710 is configured to encode data at a particular data rate and forward the encoded data to the content player 1720. The content player 1720 is configured to receive the encoded data via the distributed infrastructure 1710 and decode the data for playback to a user. Data provided by the distributed infrastructure 1710 may include, for example, audio, video, text, images, animation, interactive content, haptic data, virtual or augmented reality data, location data, gaming data, or any other type of data provided via streaming.

[0086] The distributed infrastructure 1710 generally represents any service, hardware, software, or other infrastructure components configured to deliver content to end users. For example, the distributed infrastructure 1710 includes content aggregation systems, media transcoding and packaging services, network elements, and / or various other types of hardware and software. In some cases, the distributed infrastructure 1710 may be a highly complex distributed system, a single media server or device, or anything in between. In some examples, regardless of size or complexity, the distributed infrastructure 1710 includes at least one physical processing unit 1712 and at least one memory 1714. As described herein, one or more modules 1716 are stored or loaded into the memory 1714 to enable adaptive streaming.

[0087] The content player 1720 generally represents any type or form of device or system capable of playing audio and / or video content provided via the distributed infrastructure 1710. Examples of the content player 1720 include, but are not limited to, a mobile phone, a tablet, a laptop computer, a desktop computer, a television, a set-top box, a digital media player, a virtual reality headset, an augmented reality glasses, and / or any other type or form of device capable of rendering digital content. Similar to the distributed infrastructure 1710, the content player 1720 includes a physical processing unit 1722, a memory 1724, and one or more modules 1726. Some or all of the adaptive streaming processing described herein is performed or enabled by the module 1726, and in some examples, the module 1726 of the distributed infrastructure 1710 cooperates with the module 1726 of the content player 1720 to provide adaptive streaming of digital content.

[0088] In one embodiment, one or more of the modules 1716 and / or 1726 of Figure 17 represent one or more software applications or programs that, when executed by a computing device, cause the computing device to perform one or more tasks. For example, as described in greater detail below, one or more of the modules 1716, 1726 represent modules that are configured to be stored on and executed on one or more general-purpose computing devices. One or more of the modules 1716, 1726 of Figure 17 may also represent all or part of one or more special-purpose computers configured to perform one or more tasks.

[0089] Additionally, one or more of the modules, processes, algorithms, or steps described herein convert data, physical devices, and / or representations of physical devices from one form to another. For example, one or more of the modules described herein receive audio data to be encoded, convert the audio data by encoding it, output the encoding result for use in an adaptive audio bitrate system, transmit the conversion result to a content player, and / or render the converted data for consumption by an end user. Additionally or alternatively, one or more of the modules described herein convert a processing unit, a volatile memory, a non-volatile memory, and / or any other portion of a physical computing device from one form to another by executing on a computing device, storing data on a computing device, and / or otherwise interacting with a computing device.

[0090] The physical processors 1712, 1722 generally represent any type or form of hardware-based processor capable of interpreting and / or executing computer-readable instructions. In one example, the physical processors 1712, 1722 each access and / or modify one or more of the modules 1716, 1726. Additionally or alternatively, the physical processors 1712, 1722 execute one or more of the modules 1716, 1726 to facilitate adaptive streaming of digital content. Examples of the physical processors 1712, 1722 include, but are not limited to, a microprocessor, a microcontroller, a central processing unit (CPU), a field programmable gate array (FPGA) using a soft-core processor, an application specific integrated circuit (ASIC), one or more portions thereof, one or more variations or combinations thereof, and / or any other suitable physical processor.

[0091] Memory 1714, 1724 generally represents any type or form of volatile or non-volatile storage device or medium capable of storing data and / or computer readable instructions. In one example, memory 1714 and / or 1724 stores, loads, and / or maintains one or more modules 1716, 1726. Examples of memory 1714 and / or 1724 include, but are not limited to, random access memory (RAM), read only memory (ROM), flash memory, hard disk drive (HDD), solid state drive (SSD), optical disk drive, cache, one or more variations or combinations thereof, and / or any other suitable memory device or system.

[0092] 18 is a block diagram of exemplary elements of a content distribution infrastructure 1710 according to an embodiment. The distributed infrastructure 1710 includes a storage 1810, a service 1820, and a network 1830. The storage 1810 generally represents any device, set of devices, and / or system capable of storing content for delivery to end users. The storage 1810 may include a central repository with devices capable of storing terabytes or petabytes of data, and / or may include a distributed storage system (e.g., devices that mirror or cache content at Internet interconnected locations to provide faster access to the mirrored content within a region). The storage 1810 may be configured in any other suitable form.

[0093] Thus, storage 1810 may store a variety of different items including content 1812, user data 1814, and / or log data 1816. Content 1812 includes television programs, movies, video games, user generated content, and / or any other suitable type or form of content. User data 1814 includes personally identifiable information (PII), payment information, preference settings, language and accessibility settings, and / or any other information associated with a particular user or content player. Log data 1816 includes viewing history information, network throughput information, and / or any other metrics associated with a user's connection to or interaction with distributed infrastructure 1710.

[0094] The services 1820 include a personalization service 1822, a transcoding service 1824, and / or a packaging service 1826. The personalization service 1822 tailors recommendations, content streams, and / or other aspects of a user's experience with the distributed infrastructure 1710 to the individual. The transcoding service 1824 compresses media at different bit rates and allows real-time switching between different encodings, as described in greater detail below. The packaging service 1826 packages the encoded video before placing it on a delivery network, such as network 1830, for streaming.

[0095] The network 1830 generally represents any medium or architecture capable of facilitating communication or data transfer. The network 1830 facilitates communication or data transfer using wireless and / or wired connections. Examples of the network 1830 include, but are not limited to, an intranet, a wide area network (WAN), a local area network (LAN), a personal area network (PAN), the Internet, power line communication (PLC), a cellular network (e.g., a Global System for Mobile Communications (GSM) network), one or more portions thereof, one or more variations or combinations thereof, and / or any other suitable network. For example, as shown in FIG. 18, the network 1830 includes an Internet backbone 1832, an Internet service provider 1834, and / or a local network 1836. As described in greater detail below, bandwidth limitations and bottlenecks within one or more of these network segments trigger video and / or audio bitrate adjustments.

[0096] Figure 19 is a block diagram of an exemplary use of the content player 1720 of Figure 17. The content player 1720 generally represents any type or form of computing device capable of reading computer-executable instructions. The content player 1720 includes, but is not limited to, laptops, tablets, desktops, servers, mobile phones, multimedia players, embedded systems, Internet of Things (IoT) devices such as wearable devices (e.g., smart watches, smart glasses, etc.), smart cars, gaming consoles, smart appliances, one or more variations or combinations thereof, and / or any other suitable computing device.

[0097] 19, in addition to the processing unit 1722 and the memory 1724, the content player 1720 includes a communication interface 1922 coupled to the communications infrastructure 1902 and a network connection 1924. The content player 1720 also includes a graphics interface 1926 coupled to a graphics device 1928, an input interface 1934 coupled to an input device 1936, and a storage interface 1938 coupled to a storage device 1940.

[0098] Communications infrastructure 1902 generally represents any type or form of infrastructure capable of facilitating communications between one or more components of a computing device. Examples of communications infrastructure 1902 include, but are not limited to, any type or form of communications bus (e.g., Peripheral Component Interconnect (PCI) bus, PCI Express (PCIe) bus, memory bus, front side bus, Integrated Drive Electronics (IDE) bus, control or register bus, host bus, etc.).

[0099] As noted above, memory 1724 generally represents any type or form of volatile or non-volatile storage device or medium capable of storing data and / or other computer-readable instructions. In some examples, memory 1724 stores and / or loads operating system 1908 for execution by processing unit 1722. In one example, operating system 1908 includes and / or represents software that manages computer hardware and software resources and / or additionally or alternatively provides common services to computer programs and / or applications on content player 1720.

[0100] The operating system 1908 performs various system management functions, such as managing hardware elements (e.g., graphics interface 1926, audio interface 1930, input interface 1934, and / or storage interface 1938). The operating system 1908 also provides a processing and memory management model for the playback application 1910. Modules of the playback application 1910 include, for example, a content buffer 1912, an audio decoder 1918, and a video decoder 1920.

[0101] The playback application 1910 is configured to retrieve digital content via the communications interface 1922 and play the digital content through the graphics interface 1926. The graphics interface 1926 is configured to send rendered video signals to the graphics device 1928. In normal operation, the playback application 1910 receives a request from a user to play a particular title or particular content. The playback application 1910 then identifies one or more encoded video and audio streams associated with the requested title. After the playback application 1910 finds the encoded streams associated with the requested title, the playback application 1910 downloads from the distributed infrastructure 1710 a sequence header index associated with each encoded stream associated with the requested title. The sequence header index associated with the encoded content includes information related to the encoded data sequences included in the encoded content.

[0102] In one embodiment, the playback application 1910 begins downloading content associated with the requested title by downloading sequence data encoded at the lowest audio and / or video playback bitrate to minimize playback start-up time. It then downloads the requested digital content file to a content buffer 1912 configured to function as a first-in, first-out queue. In one embodiment, each unit of downloaded data includes a video data unit or an audio data unit. When a video data unit associated with the requested digital content file is downloaded to the content player 1720, the video data unit is pushed to the content buffer 1912. Similarly, when an audio data unit associated with the requested digital content file is downloaded to the content player 1720, the audio data unit is pushed to the content buffer 1912. In one embodiment, the video data unit is stored in a video buffer 1916 within the content buffer 1912, and the audio data unit is stored in an audio buffer 1914 within the content buffer 1912.

[0103] The video decoder 1920 reads video data units from the video buffer 1916 and outputs video data units of a video frame sequence whose duration corresponds to a fixed length of play time. Reading the video data units from the video buffer 1916 effectively removes the video data units from the video buffer 1916. The video frame sequence is then sent to the graphics device 1928 for rendering by the graphics interface 1926 and display to the user.

[0104] The audio decoder 1918 reads audio data units from the audio buffer 1914 and outputs the audio data units as an audio sample sequence, which is generally time-synchronized with the decoded video frame sequence. In one embodiment, the audio sample sequence is sent to an audio interface 1930, which converts the audio sample sequence into an electrical audio signal. The electrical audio signal is then sent to a speaker of an audio device 1932, which generates an acoustic output in response.

[0105] In situations where the bandwidth of the distributed infrastructure 1710 is limited and / or variable, the playback application 1910 downloads and buffers successive portions of video and / or audio data from the video encoding data at different bit rates based on various factors (e.g., scene complexity, audio complexity, network bandwidth, device capabilities, etc.). In some embodiments, video playback quality is prioritized over audio playback quality. Furthermore, audio playback quality and video playback quality may be balanced against each other, and in some embodiments, audio playback quality is prioritized over video playback quality.

[0106] Graphics interface 1926 is configured to generate video frame data and send the video frame data to graphics device 1928. In one embodiment, graphics interface 1926 is included as part of an integrated circuit along with processing unit 1722. Alternatively, graphics interface 1926 is configured as a hardware accelerator separate from (i.e., not integrated within) the chipset that includes processing unit 1722.

[0107] Graphics interface 1926 generally represents any type or form of device configured to send images for display to graphics device 1928. For example, graphics device 1928 is fabricated using liquid crystal display (LCD) technology, cathode ray tube technology, and (organic or inorganic) light emitting diode (LED) display technology. In some embodiments, graphics device 1928 also includes a virtual reality display and / or an augmented reality display. Graphics device 1928 includes any technically feasible means for generating images for display. In other words, graphics device 1928 generally represents any type or form of device capable of visually displaying information sent by graphics interface 1926.

[0108] 19, the content player 1720 also includes at least one input device 1936 coupled to the communications infrastructure 1902 via an input interface 1934. The input device 1936 generally represents any type or form of computing device capable of providing computer or human generated input to the content player 1720. Examples of the input device 1936 include, but are not limited to, a keyboard, a pointing device, a voice recognition device, a touch screen, a wearable device (e.g., a glove, a watch, etc.), a control, one or more variations or combinations thereof, and / or any other type or form of electronic input mechanism.

[0109] The content player 1720 also includes storage 1940 coupled to the communications infrastructure 1902 via a storage interface 1938. Storage 1940 generally represents any type or form of storage device or medium capable of storing data and / or other computer-readable instructions. For example, storage 1940 may be a magnetic disk drive, a solid state drive, an optical disk drive, a flash drive, etc. Storage interface 1938 generally represents any type or form of interface or device for transferring data between storage 1940 and other elements of the content player 1720.

[0110] Exemplary embodiments are also disclosed according to the following numbered items:

[0111] 1. A computer-implemented method comprising the steps of: determining that received media item requests should be skewed from a random distribution among server nodes using a random distribution algorithm to a disciplined distribution among server nodes; identifying, in a loading assignment, which of a plurality of media items to load onto particular server nodes to generate a disciplined distribution of media item requests; pre-loading the identified media items onto the server nodes using the loading assignment; receiving one or more media item requests for the pre-loaded media items; and routing the received media item requests to the server nodes using the random distribution algorithm, wherein the random distribution algorithm is skewed to result in a disciplined distribution based on the pre-loading of media items using the identified loading assignment.

[0112] 2. The computer implemented method of claim 1, further comprising determining the server node's ability to service the one or more requests.

[0113] 3. The computer-implemented method according to item 1 or 2, wherein the determination of the loading assignment includes as a factor the ability of the server node to service the request.

[0114] 4. A computer-implemented method according to any one of items 1 to 3, wherein the server node's ability to service requests includes at least one of processing capacity, network connection capacity, data storage capacity, current operational health, or current resource utilization status.

[0115] 5. The computer-implemented method of any one of items 1 to 4, wherein the data storage capabilities used in identifying loading assignments include information indicative of the data storage hardware of each server node.

[0116] 6. The computer-implemented method of any one of claims 1 to 5, wherein server nodes having increased amounts of solid-state storage are given loading assignments to receive an increased number of media item requests.

[0117] 7. A computer-implemented method according to any one of items 1 to 6, wherein the network connection capabilities used in identifying loading assignments include information indicative of each server node's network connection hardware.

[0118] 8. The computer-implemented method of any one of claims 1 to 7, wherein a server node having an increased amount of network connection bandwidth is given a loading assignment to receive an increased number of media item requests.

[0119] 9. The computer-implemented method of any one of items 1 to 8, wherein the processing capabilities used in identifying loading assignments include information indicative of the processing hardware of each server node.

[0120] 10. The computer-implemented method of any one of claims 1 to 9, wherein a server node having an increased amount of processing bandwidth is given a loading assignment to receive an increased number of media item requests.

[0121] 11. The computer-implemented method of any one of items 1 to 10, wherein a server node having an increased amount of current operational health is assigned to receive an increased number of media item requests.

[0122] 12. The computer-implemented method of any one of claims 1 to 11, wherein a server node having a reduced amount of current resource utilization is assigned to receive an increased number of media item requests.

[0123] 13. A system comprising at least one physical processing unit and a physical memory containing computer-executable instructions that, when executed by the physical processing unit, cause the physical processing unit to determine that received media item requests should be skewed from a random distribution among the server nodes using a random distribution algorithm to a controlled distribution among the server nodes, cause the physical processing unit to identify, in a loading assignment, which of a plurality of media items to be loaded onto a particular server node to generate a controlled distribution of media item requests, cause the server node to pre-load the identified media items using the loading assignment, receive one or more media item requests for the pre-loaded media items, and route the received media item requests to the server nodes using the random distribution algorithm, the random distribution algorithm being skewed to the controlled distribution based on the pre-loading of media items using the identified loading assignment.

[0124] 14. The system of claim 13, wherein the determination of the loading assignment includes as factors one or more capabilities of a client device from which one or more media item requests are received.

[0125] 15. A system as described in item 13 or 14, wherein the capabilities of the client device include at least one of information indicating the type of decoding unit, device type, screen resolution, processing resources, information indicating network connection hardware, or information indicating data storage capacity of the client device.

[0126] 16. A system according to any one of items 13 to 15, wherein a server node providing encoded media items for a particular device type is given a loading assignment to receive an increased number of media item requests.

[0127] 17. A system described in any one of items 13 to 16, wherein a server node that provides particular encoded media items to client devices having processing resources below a threshold level is given a loading assignment to receive media item requests for those client devices having processing resources below the threshold level.

[0128] 18. A system according to any one of items 13 to 17, wherein a server node that has provided a particular media item in the past is given a loading assignment to receive an increased number of media item requests for contextually similar media items.

[0129] 19. A system according to any one of items 13 to 18, wherein server nodes that are predicted to receive an increased number of media item requests for particular media items are given a loading assignment to provide those particular media items.

[0130] 20. A non-transitory computer-readable medium comprising one or more computer-executable instructions which, when executed by at least one processing unit of a computing device, cause the computing device to determine that received media item requests should be skewed from a random distribution among server nodes using a random distribution algorithm to a controlled distribution among server nodes, cause a loading assignment to identify which of a plurality of media items to load onto a particular server node to generate a controlled distribution of media item requests, cause the loading assignment to pre-load the identified media items onto the server node, receive one or more media item requests for the pre-loaded media items, and route the received media item requests to the server nodes using the random distribution algorithm, the random distribution algorithm being skewed to the controlled distribution based on the pre-loading of media items according to the identified loading assignment.

[0131] 21. A non-transitory computer-readable medium comprising one or more computer-executable instructions that, when executed by at least one processing unit of a computing device, cause the computing device to perform the method of any one of items 1 to 12.

[0132] A1. A computer-implemented method comprising the steps of: for a set of electronic devices, determining server nodes capable of providing a media item to the set of electronic devices; pre-calculating server node rankings from the determined server nodes that rank the server nodes' capabilities of providing the media item to the set of electronic devices according to one or more media item providing factors; receiving a request indicating that the media item should be provided to a particular electronic device in the set of electronic devices; accessing the pre-calculated server node rankings for the set of electronic devices; and instructing an optimal server node identified by the pre-calculated server node rankings to provide the media item to the particular electronic device.

[0133] A2. The computer-implemented method of claim A1, wherein the server nodes are part of one or more specific server clusters.

[0134] A3. The computer-implemented method of any one of claims A1 to A2, wherein the server node ranking is expanded to include a ranking for one or more server clusters based on at least one of the one or more media item providing factors.

[0135] A4. The computer-implemented method of any one of A1 to A3, wherein the media item provisioning factors include at least one of proximity, cost, geography, server node health, popularity, server node processing hardware, or server node network connection hardware.

[0136] A5. The computer-implemented method of any one of paragraphs A1 to A4, wherein a particular electronic device is identified as part of a set of electronic devices based on an associated identifier.

[0137] A6. The computer-based method of any one of paragraphs A1 to A5, wherein the associated identifier of the particular electronic device includes an Internet Protocol (IP) address.

[0138] A7. The computer-based method of any one of paragraphs A1 to A6, wherein the IP address of the particular electronic device is part of a Classless Inter-Domain Routing (CIDR) block of IP addresses.

[0139] A8. The computer-implemented method of any one of clauses A1 to A7, wherein the set of electronic devices to which the server node can provide media items is represented by a CIDR block.

[0140] A9. The computer-implemented method of any one of paragraphs A1 to A8, wherein the pre-computed server node rankings rank each server node that provides services to IP addresses in each CIDR block.

[0141] A10. The computer-implemented method of any one of items A1 to A9, wherein the identified optimal server node comprises the server node that is ranked highest in the pre-computed server node rankings.

[0142] A11. A system comprising at least one physical processing unit and a physical memory including computer-executable instructions that, when executed by the physical processing unit, cause the physical processing unit to determine, for a set of electronic devices, server nodes capable of providing media items to the set of electronic devices, and from the determined server nodes, pre-compute a server node ranking that ranks the server nodes' ability to provide media items to the set of electronic devices as a function of one or more media item providing factors; A system that receives a request indicating that a media item should be provided to a particular electronic device in a set of electronic devices, accesses pre-computed server node rankings for the set of electronic devices, and instructs an optimal server node identified by the pre-computed server node rankings to provide the media item to the particular electronic device.

[0143] A12. The system of claim A11, wherein the pre-computed server node rankings are provided to at least a plurality of server nodes.

[0144] A13. The system of any one of items A11 to A12, wherein the pre-computed server node rankings are compressed before being transferred to the multiple server nodes.

[0145] A14. The system of any one of items A11 to A13, further comprising: determining that a ranking for one or more of the server nodes has changed based on one or more factors; and propagating the ranking changes for those server nodes to update the pre-computed server node rankings with only the ranking changes for those server nodes.

[0146] A15. The system of any one of items A11 to A14, further comprising instructing the identified optimal server node to establish a peer-to-peer connection with the specific electronic device.

[0147] A16. A system according to any one of items A11 to A15, which selects a server node having a particular ranking in a pre-computed server node ranking according to one or more established policies to provide a media item to a particular electronic device.

[0148] A17. The system of any one of items A11 to A16, further comprising verifying one or more network paths between a particular electronic device and one or more of the server nodes to ensure that the network paths provide a threshold level of data transfer.

[0149] A18. The system of any one of items A11 to A17, further comprising filtering one or more network paths between the particular electronic device and one or more of the server nodes to prevent erroneous or malicious paths to the server nodes.

[0150] A19. The system of any one of items A11 to A18, further comprising steering one or more subsequent requests for the media item to the identified optimal server node.

[0151] A20. A non-transitory computer-readable medium, comprising one or more computer-executable instructions, which when executed by at least one processing unit of a computing device, cause the computing device to determine, for a set of electronic devices, server nodes capable of providing media items to the set of electronic devices, and from the determined server nodes, pre-compute a server node ranking that ranks the server nodes' ability to provide media items to the set of electronic devices as a function of one or more media item providing factors; A non-transitory computer-readable medium for receiving a request indicating that a media item should be provided to a particular electronic device in a set of electronic devices, accessing pre-computed server node rankings for the set of electronic devices, and instructing an optimal server node identified by the pre-computed server node rankings to provide the media item to the particular electronic device.

[0152] A21. A non-transitory computer-readable medium comprising one or more computer-executable instructions that, when executed by at least one processing unit of a computing device, cause the computing device to perform a method according to any one of items A1 to A10.

[0153] As detailed above, the computing devices and systems described and / or illustrated herein broadly represent any type or form of computing device or system capable of executing computer-readable instructions, such as those contained within the modules described herein. In their most basic configurations, each such computing device may include at least one memory device and at least one physical processing unit.

[0154] In some examples, the term "memory device" generally refers to any type or form of volatile or non-volatile storage device or medium capable of storing data and / or computer-readable instructions. In one example, a memory device may store, load, and / or maintain one or more of the modules described herein. Examples of memory devices include, but are not limited to, random access memory (RAM), read-only memory (ROM), flash memory, hard disk drive (HDD), solid-state drive (SSD), optical disk drive, cache, one or more variations or combinations thereof, or any other suitable storage memory.

[0155] In some examples, the term "physical processor" generally refers to any type or form of hardware processor capable of interpreting and / or executing computer-readable instructions. In one example, the physical processor may access and / or modify one or more modules stored in the memory device. Examples of physical processors include, but are not limited to, a microprocessor, a microcontroller, a central processing unit (CPU), a field programmable gate array (FPGA) using a soft-core processor, an application specific integrated circuit (ASIC), one or more portions thereof, one or more variations or combinations thereof, or any other suitable physical processor.

[0156] Although shown as separate elements, the modules described and / or illustrated herein may represent a single module or portion of an application. Moreover, in some embodiments, one or more of these modules may represent one or more software applications or programs that, when executed by a computing device, may cause the computing device to perform one or more tasks. For example, one or more of the modules described and / or illustrated herein may represent modules stored on and configured to execute on one or more of the computing devices or systems described and / or illustrated herein. One or more of these modules may also represent all or a portion of one or more special-purpose computers configured to perform one or more tasks.

[0157] Further, one or more of the modules described herein may transform data, a physical device, and / or a representation of a physical device from one form to another. Additionally or alternatively, one or more of the modules described herein may transform a processing unit, volatile memory, non-volatile memory, and / or any other portion of a physical computing device from one form to another by executing on a computing device, storing data on a computing device, and / or otherwise interacting with a computing device.

[0158] In some embodiments, the term "computer-readable medium" generally refers to any form of device, carrier, or medium capable of storing or carrying computer-readable instructions. Examples of computer-readable media include, but are not limited to, transmission-type media such as carrier waves, and non-transitory media such as magnetic storage media (e.g., hard disk drives, tape drives, and floppy disks), optical storage media (e.g., compact discs (CDs), digital video discs (DVDs), and BLU-RAY discs), and electronic storage media (e.g., solid-state drives and flash media) and other distributed systems.

[0159] The process parameters and sequences of steps described and / or illustrated herein are exemplary only and may be varied as desired. For example, although the steps illustrated and / or described herein may be shown or described in a particular order, these steps need not necessarily be performed in the order shown or described. Various exemplary methods described and / or illustrated herein may omit one or more of the steps described or illustrated herein or include steps in addition to those illustrated steps.

[0160] The above description is provided to enable those skilled in the art to best utilize various aspects of the exemplary embodiments disclosed herein. This exemplary description is not intended to be exhaustive or to be limited to any particular form disclosed. Many changes and modifications are possible without departing from the spirit and scope of the present disclosure. The embodiments disclosed herein are to be considered in all respects as illustrative and not restrictive. Reference should be made to the appended claims and their equivalents to determine the scope of the present disclosure.

[0161] Unless otherwise indicated, the terms "connected" and "coupled" (and their derivatives) as used in the specification and claims should be interpreted to allow both direct and indirect connections (i.e., connections via other elements or components). Furthermore, the indefinite article as used in the original English specification and claims should be interpreted in the sense of "at least one". Finally, the terms "including" and "having" (and their derivatives) as used in the specification and claims are interchangeable for ease of use and have the same meaning as the term "comprising". [Explanation of symbols]

[0162] 101 Computer Systems 102 Processing section 103 System Memory 104 Communication Module 107 Decision Module 109 Precomputation Module 116 Distributed Decision Module 117 Loading Module 119 Preloading Module 120 Request Routing Module 130, 502, 701, 702, 804, 805, 1403A, 1403B Server Cluster 1712, 1722 Physical processing unit 1714, 1724 Memory

Claims

1. 1. A computer-implemented method comprising: determining, for a set of electronic devices, server nodes that are capable of providing media items to the set of electronic devices; from the determined server nodes, pre-computing a server node ranking that ranks the server nodes' ability to provide the media items to the set of electronic devices as a function of one or more media item providing factors; receiving a request indicating that a media item should be provided to a particular electronic device in the set of electronic devices; accessing the pre-computed server node rankings for the set of electronic devices; instructing an optimal server node identified by the pre-computed server node rankings to provide the media item to the particular electronic device; The method includes:

2. The computer-implemented method of claim 1 , wherein the server nodes are part of one or more particular server clusters.

3. 3. The computer-implemented method of claim 2, wherein the server node ranking is expanded to include a ranking for one or more server clusters based on at least one of one or more media item provision factors.

4. 2. The computer-implemented method of claim 1, wherein the media item offering factors include at least one of proximity, cost, geographic location, server node health, popularity, server node processing hardware, or server node network connection hardware.

5. The computer-implemented method of claim 1 , wherein the particular electronic device is identified as part of the set of electronic devices based on an associated identifier.

6. 6. The computer-implemented method of claim 5, wherein the associated identifier of the particular electronic device comprises an Internet Protocol (IP) address.

7. 7. The computer-implemented method of claim 6, wherein the IP address of the particular electronic device is part of a Classless Inter-Domain Routing (CIDR) block of IP addresses.

8. 8. The computer-implemented method of claim 7, wherein the set of electronic devices to which a server node can provide media items is represented by the CIDR block.

9. 8. The computer-implemented method of claim 7, wherein the pre-computed server node rankings rank each of the server nodes that provide services to IP addresses within each CIDR block.

10. 2. The computer-implemented method of claim 1, wherein the identified optimal server node comprises a server node that is highest ranked in the pre-computed server node rankings.

11. In the system, At least one physical processing unit; A physical memory containing computer-executable instructions; Including, The computer-executable instructions, when executed by the physical processing unit, cause the physical processing unit to: determining, for a set of electronic devices, server nodes that are capable of providing media items to the set of electronic devices; pre-computing, from the determined server nodes, a server node ranking that ranks the server nodes' capabilities to provide the media items to the set of electronic devices as a function of one or more media item providing factors; receiving a request indicating that a media item should be provided to a particular electronic device in the set of electronic devices; accessing the pre-computed server node rankings for the set of electronic devices; The system instructs an optimal server node identified by the pre-computed server node rankings to provide the media item to the particular electronic device.

12. The system of claim 11 , wherein the pre-computed server node rankings are provided to at least a plurality of server nodes.

13. The system of claim 12 , wherein the pre-computed server node rankings are compressed before being transferred to the plurality of server nodes.

14. The computer executable instructions further include: instructions for determining that a ranking for one or more of the server nodes has changed based on the one or more factors; instructions to propagate the ranking changes for those server nodes to update the pre-computed server node rankings with only the ranking changes for those server nodes; The system of claim 12, comprising:

15. The computer executable instructions further include: instructions to instruct the identified optimal server node to establish a peer-to-peer connection with the particular electronic device; The system of claim 11 , comprising:

16. The system of claim 11 , wherein a server node having a particular ranking in the pre-computed server node rankings is selected according to one or more established policies to provide the media item to the particular electronic device.

17. The computer executable instructions further include: instructions for verifying one or more network paths between the particular electronic device and one or more of the server nodes to ensure that the network paths provide a threshold level of data transfer; The system of claim 11 , comprising:

18. The computer executable instructions further include: instructions for filtering one or more network paths between the particular electronic device and one or more of the server nodes to prevent erroneous paths or paths to malicious server nodes; The system of claim 11 , comprising:

19. The computer executable instructions further include: instructions for steering one or more subsequent requests for a media item to the identified optimal server node; The system of claim 11 , comprising:

20. In a non-transitory computer readable medium, One or more computer executable instructions, Including, The computer-executable instructions, when executed by at least one processing unit of a computing device, cause the computing device to: determining, for a set of electronic devices, server nodes that are capable of providing media items to the set of electronic devices; pre-computing, from the determined server nodes, a server node ranking that ranks the server nodes' capabilities to provide the media items to the set of electronic devices as a function of one or more media item providing factors; receiving a request indicating that a media item should be provided to a particular electronic device in the set of electronic devices; accessing the pre-computed server node rankings for the set of electronic devices; A non-transitory computer-readable medium for instructing an optimal server node identified by the pre-computed server node rankings to provide the media item to the particular electronic device.

Citation Information

Patent Citations

  • Method for optimizing network distribution of digital information based upon hierarchical grouping of server topology and code distribution

    JP2002049546A

  • Load distribution program, load distribution device and service system

    JP2007164264A

  • Communication control apparatus, communication control program, data distribution server, data distribution program, and data distribution system

    JP2011109180A

  • A method for determining network proximity for global traffic load balancing using passive TCP performance measurement.

    JP2011508524A

  • Chunk-format download on content distribution network

    JP2013503390A