US-12621504-B2 - Techniques for caching media content when streaming live events
Abstract
In various embodiments, a live event caching application caches segments that are associated with live events. At a first point-in-time, the live event caching application stores a segment of a downloadable that is associated with a live event in a high priority list. At a second point-in-time, the live event caching application determines that the segment is at a tail of the high priority list, where the second point-in-time is subsequent to the first point-in-time. Upon determining that the segment is at the tail of the high priority list, further determining that an age of the segment is greater than a cutoff threshold. In response to determining that the age of the segment is greater than the cutoff threshold, moving the segment from the high priority list to a low priority list.
Inventors
- Christopher Alan Newton
Assignees
- NETFLIX, INC.
Dates
- Publication Date
- 20260505
- Application Date
- 20230406
Claims (20)
- 1 . A method for caching segments associated with live events that is implemented by a first computer device included in a plurality of computer devices, the method comprising: at a first point-in-time, storing a first segment of a first downloadable that is associated with a first live event in a first high priority list; at a second point-in-time, determining that the first segment is at a tail of the first high priority list, wherein the second point-in-time is subsequent to the first point-in-time; upon determining that the first segment is at the tail of the first high priority list, further determining that an age of the first segment is greater than a cutoff threshold; and in response to determining, by the first computer device, that the first downloadable is uniquely assigned to a second computer device included in the plurality of computer devices, and determining that the age of the first segment is greater than the cutoff threshold, moving the first segment from the first high priority list to a first low priority list.
- 2 . The method of claim 1 , wherein the first computer device comprises an edge server included in a content delivery network.
- 3 . The method of claim 1 , further comprising: receiving a request from a client device for a second segment of a second downloadable that is associated with the first live event; determining that the second segment is stored in a second high priority list and the second downloadable is uniquely assigned to the first computer device; and in response to determining that the second downloadable is uniquely assigned to the first computer device, moving the second segment to a head of the second high priority list.
- 4 . The method of claim 3 , further comprising determining that the second downloadable has become obsolete, and deleting the second segment from the second high priority list.
- 5 . The method of claim 3 , wherein, at a third point-in-time that is subsequent to when the first live event completes, a plurality of segments of the second downloadable that includes the second segment and spans a duration of the first live event is stored in the second high priority list.
- 6 . The method of claim 3 , wherein a portion of a live video feed is encoded based on two different encoding parameters to generate the first segment and the second segment.
- 7 . The method of claim 1 , further comprising: receiving a request from a client device for a second segment of the first downloadable; determining that the second segment is stored in the first high priority list and an age of the second segment is not greater than the cutoff threshold; and in response to determining that the age of the second segment is not greater than the cutoff threshold, moving the second segment to a head of the first high priority list.
- 8 . The method of claim 1 , further comprising: receiving a request from a client device for a second segment of the first downloadable; determining that the second segment is stored in the first high priority list and that an age of the second segment is greater than the cutoff threshold; and in response to determining that the age of the second segment is greater than the cutoff threshold, moving the second segment from the first high priority list to a head of the first low priority list.
- 9 . The method of claim 1 , further comprising deleting the first segment from a tail of the first low priority list during the first live event.
- 10 . The method of claim 1 , wherein the first segment is moved from the tail of the first high priority list to a head of the first low priority list.
- 11 . One or more non-transitory computer readable media including instructions that, when executed by one or more processors included in a first edge server included in a plurality of edge servers, cause the one or more processors to cache segments associated with live events by performing the steps of: at a first point-in-time, storing a first segment of a first downloadable that is associated with a first live event in a first high priority list; at a second point-in-time, determining that the first segment is at a tail of the first high priority list, wherein the second point-in-time is subsequent to the first point-in-time; upon determining that the first segment is at the tail of the first high priority list, further determining that an age of the first segment is greater than a cutoff threshold; and in response to determining, by the first edge server, that the first downloadable is uniquely assigned to a second edge server included in the plurality of edge servers, and determining that the age of the first segment is greater than the cutoff threshold, moving the first segment from the first high priority list to a first low priority list.
- 12 . The one or more non-transitory computer readable media of claim 11 , the plurality of edge servers are associated with a first geographical region.
- 13 . The one or more non-transitory computer readable media of claim 11 , further comprising: receiving a request from a client device for a second segment of a second downloadable that is associated with the first live event; determining that the second segment is stored in a second high priority list and the second downloadable is uniquely assigned to the first edge server; and in response to determining that the second downloadable is uniquely assigned to the first edge server, moving the second segment to a head of the second high priority list.
- 14 . The one or more non-transitory computer readable media of claim 13 , wherein, at a third point-in-time that is subsequent to when the first live event completes, a plurality of segments of the second downloadable that includes the second segment and spans a duration of the first live event is stored in the second high priority list.
- 15 . The one or more non-transitory computer readable media of claim 11 , further comprising computing a difference between a creation time associated with the first segment and a current time to determine the age of the first segment.
- 16 . The one or more non-transitory computer readable media of claim 11 , wherein a portion of a live video feed, a live audio feed, or a live subtitle feed is encoded to generate the first segment.
- 17 . The one or more non-transitory computer readable media of claim 11 , further comprising: receiving a request from a client device for a second segment of the first downloadable; determining that the second segment is stored in the first high priority list and an age of the second segment is not greater than the cutoff threshold; and in response to determining that the age of the second segment is not greater than the cutoff threshold, moving the second segment to a head of the first high priority list.
- 18 . The one or more non-transitory computer readable media of claim 11 , further comprising: receiving a request from a client device for a second segment of the first downloadable; determining that the second segment is stored in the first high priority list and that an age of the second segment is greater than the cutoff threshold; and in response to determining that the age of the second segment is greater than the cutoff threshold, moving the second segment from the first high priority list to a head of the first low priority list.
- 19 . The one or more non-transitory computer readable media of claim 11 , wherein both the first high priority list and the first low priority list are dedicated solely to the first downloadable.
- 20 . A first system included in a plurality of systems, the first system comprising: one or more memories storing instructions; and one or more processors coupled to the one or more memories that, when executing the instructions, perform the steps of: at a first point-in-time, storing a first segment of a first downloadable that is associated with a first live event in a first high priority list; at a second point-in-time, determining that the first segment is at a tail of the first high priority list, wherein the second point-in-time is subsequent to the first point-in-time; upon determining that the first segment is at the tail of the first high priority list, further determining that an age of the first segment is greater than a cutoff threshold; and in response to determining, by the first system, that the first downloadable is uniquely assigned to a second system included in the plurality of systems, and determining that the age of the first segment is greater than the cutoff threshold, moving the first segment from the first high priority list to a first low priority list.
Description
BACKGROUND Field of the Various Embodiments The various embodiments relate generally to computer science and to media streaming technology and, more specifically, to techniques for caching media content when streaming live events. Description of the Related Art In some approaches to streaming media content to endpoint devices, each media source is encoded based on different sets of encoding parameters to generate multiple encoded versions of the media source, where each encoded version of each media source is known as a “downloadable.” The downloadables are partitioned into segments, and those segments are stored in an origin server and subsequently streamed to various client devices, on-demand, via a content delivery network (CDN). In some implementations, a CDN includes multiple distribution centers, where each distribution center is associated with a different geographical region and includes one or more edge servers. Each edge server caches and delivers segments to the client devices in the associated geographical region on behalf of the origin server. When an edge server receives a request from a client device for a segment, the edge server transmits the segment directly to the client device if the edge server already has the segment stored in cache memory. Otherwise, the edge server downloads the segment from the origin server, transmits the segment to the client device, and optionally stores the segment in cache memory. Because each edge server has a limited amount of cache memory, each edge server typically implements one or more strategies to selectively cache different segments. One approach to caching segments involves downloading a segment from the origin server to an edge server, where the edge server then stores the segment at the head of a list. When responding to a request for a segment that is cached in the list, the edge server moves the corresponding segment forward within the list to the head of the list. Periodically, the edge server executes a least-recently-used (LRU) algorithm that determines whether to delete segments from the list based on the amount of free cache memory within the edge server. If the amount of free cache memory is less than a free cache threshold, then the LRU algorithm deletes one or more segments at the tail of the list to increase the amount of free cache memory. In this fashion, the LRU algorithm deletes the segment(s) that were accessed least recently or furthest in the past. One drawback of the above approach is that, in the context of streaming a live event, discarding different segments based on when those segments were accessed last does not necessarily correlate to the benefits of retaining certain segments in cache memory. More particularly, if all relevant downloaded segments of downloadables associated with a live event or “live event downloadables” are not cached by an edge server and made available to a client device, then providing the client device with scrubbing functionality, such as rewind, pause, and fast forward, during the live event can be problematic. For example, to enable proper rewind capability during a live event, an edge server would likely have to re-download numerous segments of a live event downloadable from the origin server so that all relevant segments are available to a client device to allow the client device to rewind back through the live event. Re-downloading numerous segments in such a fashion can cause the associated upstream network link to become saturated, which can reduce the ability of the edge server to provide un-cached segments of downloadables to the client device and to any other client devices. Without efficient access to un-cached segments, the overall viewing experiences for the users of the client devices can be substantially reduced. Another approach to caching segments of downloadables involves an edge server implementing multiple separate lists (e.g., queues) to store different types of content, where the edge server stores segments to and deletes segments from a given list using a caching strategy that is tailored to the type of content stored in the given list. In such an implementation, an edge server may allocate a high priority list for segments of live event downloadables and one or more lower priority lists for all other segments. When a segment of a live event downloadable is received from the origin server, the edge server stores the segment at the head of the high priority list. The edge server stores all segments of each live event downloadable in the high priority list until the live event downloadable is deemed obsolete (e.g., when the associated live event ends). One drawback of this approach is that a prohibitively large amount of cache memory is needed to ensure that all segments of all live event downloadables that are not deemed obsolete can be simultaneously stored in the high priority list. As the foregoing illustrates, what is needed in the art are more effective techniques for cachi