Real-time streaming flash crowd management

JP7634014B2Active Publication Date: 2025-02-20STATS LLC
View PDF 3 Cites 0 Cited by

Patent Information

Application Number
JP2022542332
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2020-01-13
Filing Date
2021-01-13
Publication Date
2025-02-20
Estimated Expiration
2041-01-13

Smart Images

  • Figure 0007634014000021
    Figure 0007634014000021
  • Figure 0007634014000022
    Figure 0007634014000022
  • Figure 0007634014000023
    Figure 0007634014000023
Patent Text Reader

Abstract

A real-time streaming service predicts an incoming flash crowd event and manages computing resources to respond to the event before traffic peaks, thereby reducing the likelihood of the streaming service's resources being overwhelmed. An embodiment of a real-time streaming server predicts a flash crowd event by detecting actions by client devices during a multi-step process for accessing real-time content streams from an endpoint server cluster. Initially, the endpoint server has a first computing resource configured to stream the content stream to the client devices. The streaming server provisions a second computing resource at the endpoint server based on the rate at which the client devices perform actions associated with the first step of the multi-step process. The second computing resource is configured to stream the real-time content stream based on the rate at which the client devices perform actions associated with the second step of the multi-step process.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical field]

[0001] The present application relates generally to real-time streaming, and more particularly to detecting and managing flash crowds in real-time streaming services.

[0002] (CROSS REFERENCE TO RELATED APPLICATIONS) This application claims priority to U.S. Provisional Patent Application No. 62 / 960,534, filed January 13, 2020, which is incorporated herein by reference in its entirety. Summary of the Invention

[0003] Streaming video content over the Internet is rapidly becoming a popular way of displaying video content. In a typical streaming service, video and / or audio data is streamed from a collection of servers to an electronic device (such as a smartphone, computer, tablet, or smart TV) for playback by a user. However, real-time streaming services capture and simultaneously broadcast media to the user's device with sufficiently low delay so as not to affect the natural human interactions that exist, for example, between participants in the streaming content, between spectators betting on the outcome of a live sports play, or between performers at a live event and their spectators.

[0004] To facilitate interactions that users perceive as natural, and thereby improve user retention and engagement, real-time streaming services must provide a high-quality experience. A variety of factors can affect the quality of experience of the service, including start-up latency, average bitrate, and rebuffering rate. Many of these factors are directly or indirectly influenced by the load placed on the service infrastructure in terms of the number of client requests processed.

[0005] One particular challenge of real-time streaming services is the ability of the service to handle temporary surges in the number of clients accessing (or "subscribing") to a stream. Sudden surges in the number of clients requesting a stream, also called "flash crowds", often occur after the occurrence of important events of widespread interest (e.g., tsunamis, the death of a public figure, questions about the actual color of a costume). Given the high demands placed on resources by streaming media, flash crowd events can easily overwhelm a streaming service. Flash crowds arrive like tsunamis, where the traffic surge usually occurs within minutes, leaving servers with only tens of seconds to adapt to the incoming traffic. Given that flash crowds are infrequent and unpredictable, a solution to mitigate the impact of flash crowd events would advantageously include proactive and real-time detection mechanisms and methods of immediate action that can mitigate the impact of the stress.

[0006] Much work has been done to improve efficient Internet content delivery, from infrastructure-based Content Distribution Networks (CDNs, e.g., Akamai2, Limelight3), to peer-to-peer (P2P) content delivery (e.g., Gnutella, Bittorrent), to hybrid solutions that leverage the strengths of both approaches. Some of these platforms are capable of handling large-scale flash crowd events, but their infrastructure, organization, and solutions are naturally built based on the type of data and usage patterns they are intended to support. Traditionally, these systems have mostly served static content (e.g., text, images), but some content has recently shifted to video-on-demand (VoD) and video streaming. However, such non-real-time services have a high tolerance for streaming lag (the time between when a streamed event occurs and when it is delivered to a subscriber).

[0007] A high tolerance for stream lag allows non-real-time services to handle surges in client requests by using delegation and placing caches along the data path to dampen the effects of the surge. For example, CDNs can cache the (usually small) number of objects that can serve the majority of requests during a flush event, and rely on cooperative caching or dynamic delegation to reduce the load on origin servers in the early stages of a flush event. However, these techniques are largely ineffective for real-time media streams, where stream lag can impede or completely disable participants' ability to respond or interact in real time with the content and other subscribers.

[0008] Various features and characteristics of the disclosed technology will become more apparent to those skilled in the art from a study of the detailed description in conjunction with the drawings in which: Embodiments of the technology are illustrated by way of example and not limitation in the drawings, in which like references indicate like elements. [Brief description of the drawings]

[0009] [Figure 1] FIG. 1 is a block diagram illustrating a real-time streaming system for streaming video content to multiple client devices. [Diagram 2] 1 illustrates an exemplary architecture model of a real-time streaming system. [Diagram 3] 4 is a flowchart illustrating a process performed by a client device to access a real-time stream. [Figure 4] 1 is a flowchart illustrating a process for detecting an incoming flash crowd to a real-time stream and managing resources to respond to the flash crowd. [Diagram 5] FIG. 1 is a block diagram illustrating an example of a processing system. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0010] The drawings depict various embodiments for illustrative purposes only. Those skilled in the art will recognize that alternative embodiments may be employed without departing from the principles of the technology. Thus, while specific embodiments are shown in the drawings, the technology may be modified in various ways.

[0011] Streaming of media content over packet-switched networks such as the Internet is rapidly becoming a popular way of handling various media (e.g., video, audio). Electronic devices (e.g., smartphones, computers, tablets) can connect to a network (e.g., the Internet) and subscribe to various video and audio data streams. For example, multiple electronic devices (or "client devices") can subscribe to a live stream of a video call generated by an originating device. As another example, client devices can subscribe to a live stream of a sporting event.

[0012] As streaming media content grows in popularity, so does the demand from users for bandwidth and computational resources to deliver high quality video and audio streaming over the Internet. During flash crowd events, the demand for bandwidth and computational resources becomes compounded as the streaming capacity of those servers becomes overwhelmed by a large increase in the number of client devices attempting to access the same content stream through the same servers.

[0013] During a flash crowd event, a sudden surge in legitimate traffic degrades server performance and legitimate users' access to the service. Mathematically, a flash crowd event can be defined by the average request rate over a specified period of time. In some cases, a flash crowd event is a period in which the request rate for a particular resource increases exponentially. That is, if the period

number

number

number

number

number

[0014] Embodiments of the real-time streaming service described herein predict incoming flash crowd events and manage resources to respond to the events before traffic peaks, thereby reducing the likelihood that computing resources associated with the streaming service will be overwhelmed. In general, flash crowd events are predicted based on the observation that the multi-step process that client devices follow when subscribing to a stream provides multiple signals that can be utilized to detect potential future flash events.

[0015] In some embodiments, a method performed by a real-time streaming service for predicting and managing flash crowd events includes a computer system, such as a real-time streaming server, configuring a first amount of computing resources at an endpoint server cluster to stream real-time content streams. The computer system determines a first rate of requests by client devices to connect to the endpoint server cluster. In response to determining that the first rate of requests to connect to the endpoint server cluster is greater than a first threshold, the computer system provisions a second amount of computing resources at the endpoint server cluster. The computer system monitors subscriptions to control channels by client devices at the endpoint server cluster, the subscriptions being based on the requests to connect to the endpoint server cluster. The computer system determines a second rate of these subscriptions and determines whether the second rate is greater than a second threshold. In response to determining that the second rate is greater than the second threshold, the computer system configures the provisioned computing resources such that the real-time content streams are streamed to one or more client devices.

[0016] Some embodiments of a real-time streaming system include an endpoint server cluster and a streaming server, the endpoint server cluster including a first amount of computing resources configured to stream real-time content streams to client devices, a streaming server communicatively coupled to the endpoint server cluster detects actions by a plurality of client devices during a multi-step process for accessing the real-time content streams from the endpoint server cluster, the streaming server provisions additional computing resources at the endpoint server cluster based on a rate at which the plurality of client devices perform actions associated with a first step of the multi-step process, and configures the provisioned computing resources to stream the real-time content streams based on a rate at which the plurality of client devices perform actions associated with a second step of the multi-step process.

[0017] The embodiments described below represent the necessary information to enable those skilled in the art to implement the embodiments and to show the best mode of implementing the embodiments. Upon reading the following description in light of the accompanying figures, those skilled in the art will understand the concepts of the present disclosure and recognize applications of these concepts not specifically addressed herein. These concepts and applications are within the scope of the present disclosure and the accompanying embodiments.

[0018] The techniques disclosed herein may be implemented using dedicated hardware (e.g., circuitry), programmable circuitry that is appropriately programmed with software and / or firmware, or a combination of dedicated hardware and programmable circuitry. Thus, embodiments may include a machine-readable medium having instructions that can be executed to test a video game.

[0019] The purpose of the terminology used herein is for the purpose of describing the embodiments only and is not intended to limit the scope of the present disclosure. Where the context permits, words using the singular or plural form can also include the plural or singular form respectively.

[0020] As used herein, and unless otherwise indicated, the terms "processing," "computing," "calculating," "determining," "displaying," "generating," and the like refer to operations and processes of a computer or similar electronic device that manipulates and transforms data represented as physical (electronic) quantities in the computer's memory or registers to other data similarly represented as physical quantities in the computer's memory, registers, or other such storage medium, transmission, or display device.

[0021] As used herein, terms such as "connected" and "coupled" may refer to any direct or indirect connection or coupling between two or more elements. The coupling or connection between the elements may be physical, logical, or a combination thereof.

[0022] Reference to "an embodiment" or "one embodiment" means that a particular feature, function, structure, or characteristic described is included in at least one embodiment. Appearances of such phrases do not necessarily refer to the same embodiment or to mutually exclusive alternative embodiments.

[0023] Unless the context clearly indicates otherwise, the terms "comprise" and "comprising" are to be interpreted in their inclusive sense rather than their exclusive or exhaustive sense (i.e., in the sense of "comprising but not limited to"). The term "based on" is also to be interpreted in their inclusive sense rather than their exclusive or exhaustive sense. Thus, unless otherwise indicated, the term "based on" is intended to mean "based, at least in part, on."

[0024] The term "module" refers broadly to a software component, a hardware component, and / or a firmware component. A module is typically a functional component that can generate useful data or other output based on specified input. A module can be self-contained. A computer program can contain one or more modules. Thus, a computer program can contain multiple modules responsible for completing different tasks, or a single module responsible for completing multiple tasks.

[0025] The word "or", when used in reference to a list of multiple items, is intended to cover any of the items in the list, every item in the list, and any combination of items in the list.

[0026] The sequence of steps performed in any of the processes described herein is exemplary. However, steps may be performed in various sequences and combinations, unless physically possible. For example, steps could be added to or deleted from the processes described herein. Similarly, steps could be substituted or rearranged. Thus, the description of the processes is intended to be open-ended.

[0027] Real-time Streaming System 1 illustrates a real-time streaming system 100 for streaming video content to multiple client devices 114A-114C, according to various embodiments. The system 100 can include one or more streaming servers 110 configured to encode and stream media content over a network 112, such as the Internet. The streaming servers 110 can receive media data from external nodes (e.g., client devices, external servers, video cameras). The streaming servers 110 encode and forward the media data to the client devices 114.

[0028] The media data includes live video streams. As an example, the live video streams may be generated by an external node, transferred over a network by the streaming server 110, and rendered by the client device 114 within a period of time imperceptible to a user of the client device 114. In some embodiments, the live video may include video that is near real-time. The live video may be transmitted to the client device such that a user watching the live video can naturally interact with and respond to the live video.

[0029] The term "live media stream" or "real-time stream" broadly refers to broadcasting events over a network as they occur. This can include broadcasting content generated by a source device, transmitted over a network, and rendered by a receiving device with a latency / delay that is imperceptible to a user of the receiving device (which can also be called "near real"). Examples of such latencies that are imperceptible to a user of the device can include 100 ms, 300 ms, 500 ms, etc. Thus, a user of a client device can interact with or respond to a live media stream in near real-time (i.e., with a delay that is imperceptible to a user of a client device subscribing to the stream). In an example, participants subscribing to a real-time streaming show can directly communicate with and manipulate the actions of the performer (e.g., in a stand-up comedy show, perhaps interacting with the performer in response to questions). In another example, players of a real-time streaming game of cards could place bets while the cards are being turned over.

[0030] As an example, the smartphone 114A can generate live video (e.g., video capture game play, video capturing user movements) and transmit it to the streaming server 110. The streaming server 110 can encode the received live video and transmit the encoded video to another client device (e.g., laptop computer 114B or computer 114C). In this example, the other client device can receive the encoded live video with minimal buffering and with a time delay that is imperceptible to the user (e.g., less than 300 milliseconds). Continuing with this example, the laptop computer 114B can receive the live video and generate a second live video. This second live video can be transmitted to the streaming server 110. The streaming server 110 can then encode and transmit the second live video to another client device (such as the smartphone 114A or computer 114C). In this example, devices that have subscribed to the stream can communicate interactively via the live video stream with a delay / latency that is imperceptible to the users of the devices 114A-C.

[0031] The streaming server 110 sends an encoded media stream (e.g., media stream 116) to the client device 114. The stream request 118 can indicate that a user of the client device 114 has already requested to subscribe to the encoded media stream 116. For example, a user of a laptop computer 114B can subscribe to a live video stream of a sporting event by sending a stream request to the streaming server 110 over the network 112. Upon receiving the stream request, the streaming server 110 can send the encoded video content to the laptop computer 114B. The laptop computer 114B can then decode the encoded video data and output the live video stream of the sporting event to a display.

[0032] Given the limited benefits of content caching for real-time streaming and the fact that caching and buffering can introduce unacceptable delays to the streams, the system 100 leverages a collection of servers (referred to herein as data centers or clusters) at geographically distributed Points of Presence (PoPs). FIG. 2 illustrates an exemplary architecture model of the system 100, including client devices 114, stream sources 205, and data centers 210A-210F at various PoPs. A stream source 205 is a computing device used to capture and / or transmit a real-time stream of content, and can be, for example, one of the client devices 114. Within each data center 210 is a collection of servers and associated computing and networking infrastructure (also referred to herein as an end-point server cluster), which represents the amount of computing resources available to deliver content from the stream sources 205 to the client devices 114.

[0033] Before requesting access to an ongoing stream, a client device 114 typically selects a nearby PoP, for example, by selecting the PoP closest to the client's geographic location or based on the response time to the request of each of the multiple data centers 210. Once a PoP is selected, the client 114 sets up and authenticates a persistent control channel that will be used to subscribe to the particular stream. As an example, FIG. 2 shows a client device 114 located in the southwestern United States. The client sends a request to data centers 210A (in Canada), 210B (in Brazil), and 210C (in Germany), and selects the data center with the shortest response time to the request.

[0034] The streaming server 110 can provision and configure varying amounts of computing resources in each data center 210 to handle varying traffic loads. Typically, the streaming server 110 deploys additional computing resources to handle large amounts of streaming traffic and reduces resource usage when traffic is light. For example, a baseline amount of computing resources is deployed in a given data center 210. This baseline is defined, for example, by the amount of resources required to handle the median amount of streaming traffic passing through the data center 210. The streaming server 110 increases computing resources from the baseline when traffic increases and decreases computing resources to the baseline level or above when traffic decreases. The baseline amount can be defined by an administrator, balancing factors such as expected streaming traffic, the cost of maintaining the baseline resources, or the cost or time required to scale up resources if streaming traffic increases. Each data center 210 can be configured to manage different amounts of traffic, and the baseline resources can be increased or decreased over time as traffic patterns change. For example, if a streaming service is more popular in North America than in Australia, the baseline resources available through data center 210A may be greater than the resources available at data center 210F based on a determination that North American data center 210A is likely to handle more data under normal conditions than Australian data center 210F. However, if the popularity of the streaming service increases in Australia, causing average traffic volumes in that region to increase, the baseline resources available at Australian data center 210F may be increased accordingly.

[0035] When accessing a real-time stream, a client device 114 typically follows a sequence of steps to connect to a server and request access to the stream. Figure 3 is a flow chart illustrating a process 300 performed by a client device 114 to access a real-time stream.

[0036] As shown in FIG. 3, the client device 114 begins the process of accessing a real-time stream by selecting a region at block 302. Block 302 is executed, for example, when a user uses the client device 114 to access a website or application associated with a real-time streaming service. In some embodiments, the client device 114 selects a region by sending a request to each of a plurality of data centers 210 and waiting for a server response to each request. The client device 114 then selects the data center 210 from which a server response is first received. The client device 114 can use one or multiple different types of requests to select a region. For example, sending an Internet Control Message Protocol (ICMP) request packet ("ping") provides information about the network delay between the client device 114 and each server, while a HyperText Transfer Protocol (HTTP) GET command provides information about both network latency and application layer response time. The client device 114 establishes a server connection with the selected endpoint.

[0037] At block 304, the client device 114 subscribes to a control channel, which may be one of multiple channels available through the real-time streaming service, that represents a source or creator associated with a media stream. For example, each control channel available in a real-time streaming service is associated with a stream source and provides one or more real-time streams via the streaming service at a particular time.

[0038] At block 306, the client device 114 subscribes to a particular stream available over the control channel selected in block 304. Block 306 may be performed, for example, in response to a user of the client device 114 selecting a desired stream from a list of streams available over the channel.

[0039] Flash Crowd Management for Real-time Streaming System The streaming server 110 detects incoming flash crowds and manages resources to mitigate the effects of flash crowds by monitoring the rates at each of the multiple steps in a defined process by which clients subscribe to real-time streams. In general, flash crowds are detected based on the observation that client devices 114 follow the process described with respect to FIG. 3 when subscribing to real-time streams (the actions associated with each step of process 300 correspond to a progressively stronger signal indicative of an incoming flash crowd).

[0040] 4 is a flow chart illustrating a process 400 for detecting an incoming flash crowd to a real-time stream and managing resources to respond to the flash crowd. The process illustrated in FIG. 4 may be performed by the streaming server 110, for example, by using a processor to execute computer program instructions stored on the streaming server 110. One or more steps of the process may, in some embodiments, be performed by a device other than the streaming server 110, such as a computing device in the data center 210.

[0041] As shown in FIG. 4, the streaming server 110 detects an endpoint selection made by a client device 114 in block 402. Depending on the configuration of the streaming server 110 and the endpoint servers in the data center 210, various endpoint selection signals can indicate an attempt by a client to communicate with a particular endpoint. For example, the streaming server 110 can measure the number of pings (ICMP request packets) received at a given data center 210 as an indication of the number of clients attempting to stream through the data center 210. Another endpoint selection signal that the streaming server 110 can measure is the number of HTTP GET requests received at the data center 210 from client devices 114 requesting access to content through the data center 210. Yet another exemplary endpoint selection signal is the rate at which Transmission Control Protocol (TCP) connection requests are received or the rate at which TCP connections are set up. In detecting the endpoint selection in block 402, the streaming server 110 can monitor any one of the endpoint selection signals or any combination of these signals.

[0042] At block 404, the streaming server 110 determines whether the selection rate of a given endpoint is greater than a threshold rate. In some embodiments, the streaming server 110 measures the endpoint selection rate, indicated by the endpoint selection signal, based on the rate of change of the number of clients 114 that select a given endpoint within a specified period of time. For example, the streaming server 110 may use the following formula:

number

number

number

number

number

number

number

number

number

number

number

number

number

number

[0043] In determining whether the endpoint selection rate is greater than the threshold rate in block 404, the streaming server 110 can compare any of a variety of measures of the endpoint selection rate to this threshold rate. Embodiments of the streaming server 110 may compare this threshold rate to, for example, an estimated moving standard deviation, a time

number

[0044] If the streaming server 110 determines in block 404 that the endpoint selection rate is less than the threshold, the streaming server 110 continues to monitor the endpoint selection until a rate exceeding the threshold is detected. Alternatively, if the threshold is exceeded in block 404, the streaming server 110 determines in block 406 whether a sufficient amount of computing resources is currently available to process the incoming stream requests for the endpoint selection rate. For example, the streaming server 110 determines whether the number of containers or virtual machines deployed to the endpoint is a baseline number, or whether additional resources beyond the baseline have already been deployed (e.g., in response to a previous increase in traffic through the endpoint).

[0045] If, at block 406, it is determined that the configured computing resources are insufficient, the streaming server 110 may, at block 408, provision additional resources and / or slow down the request processing. Provisioning resources may include, for example, deploying additional containers or virtual machines on available hardware at the data center 210 to process additional incoming streaming requests. To slow down channel subscriptions, the streaming server 110 may, for example, insert an artificial latency before responding to each request or a subset of requests, or reject a subset of requests to force the client 114 to attempt to reconnect at a later time.

[0046] After provisioning resources in block 408 or after determining that the available resources are sufficient in block 406, the streaming server 110 monitors channel subscriptions at the endpoints in block 410. The streaming server 110 can measure various channel subscription signals, such as the rate of channel subscription requests, the length of a queue of channel subscription requests, or the transport session request rate. As with the endpoint selection signals, the streaming server 110 can monitor one or more channel subscription signals individually or combine multiple channel subscription signals to determine the rate of channel subscriptions.

[0047] At block 412, the streaming server 110 determines whether the rate of subscriptions to the first channel at the endpoints is greater than a threshold rate. Similar to the endpoint selection rate, the rate of channel subscriptions can be measured in various embodiments as the rate of change of the number of clients 114 subscribing to a particular channel, or the change between the rate of first channel subscriptions and the rate of second channel subscriptions, for example, using the estimated load and the estimated moving standard deviation equation described above. Similarly, the threshold against which the rate of channel subscriptions is compared is, in some embodiments, a configurable parameter set by an administrator based on factors such as available resources or expected stream subscriptions. Alternatively, the threshold can be set by applying a machine learning model trained to predict subscription rates indicative of an incoming flash crowd.

[0048] If, at block 412, it is determined that the rate of channel subscriptions for the first channel exceeds a threshold, the streaming server 110 determines whether computing resources are sufficient at block 414. For example, the streaming server 110 determines the capacity of a virtual machine or container currently allocated to provide content from the first channel, compares this capacity to a pre-configured threshold, and determines whether this capacity is sufficient based on the incoming channel subscription request rate.

[0049] If it is determined that there are insufficient resources, then in block 416 the streaming server 110 configures some or all of the resources provisioned in block 408 and / or slows down the subscription process. Resource configuration includes allocating newly provisioned resources to the channel server of the first channel and configuring settings, network parameters, or other aspects of the resources that enable streaming of content from the first channel to the client device 114.

[0050] After configuring resources in block 416 or after determining that the available resources are sufficient in block 414, the streaming server 110 monitors subscriptions for particular streams at the endpoints. Stream subscription signals that may be measured by the streaming server 110 include, for example, the arrival rate of stream subscription requests, the length of a stream subscription request queue, or the transport session request rate. These or other stream subscription signals may be monitored individually or in combination when the streaming server 110 determines the rate of subscriptions for real-time streams.

[0051] At block 420, the streaming server 110 determines whether the rate of subscriptions to the first stream at the endpoints is greater than a threshold rate. The rate of subscriptions to the first stream can be measured, in various embodiments, as a rate of change in the number of clients 114 subscribing to the first stream, or as a change between the rate of first stream subscriptions and the rate of second stream subscriptions. The threshold against which the rate of stream subscriptions is compared can be an administrator-defined parameter, or a threshold automatically selected by the streaming server 110 by applying a trained machine learning model, similar to the thresholds applied to the endpoint selection and channel subscription rates described above.

[0052] If the subscription rate for the first stream is greater than the threshold, the streaming server 110 determines whether the currently deployed resources are sufficient to handle the streaming in block 422. If the resources are not sufficient, the streaming server 110 adjusts the resources, slows down the subscription processing, or both in block 424. Adjusting the resources can also include configuring newly configured and pre-existing resources to balance the traffic between these resources and synchronize the delivery of the real-time streams.

[0053] In some embodiments of process 400, the streaming server 110 uses an additional, higher threshold to identify when the incoming flash crowd is growing at a faster rate than new resources can be deployed or would be too large for the finite resources available at each endpoint. The additional threshold can be applied to any or all of blocks 404, 412, or 420, and can be set manually by an administrator or automatically by the streaming server 110. If the rate of an endpoint's selections, channel subscriptions, or stream subscriptions exceeds the corresponding additional threshold, the streaming server 110 can determine that the number of stream subscriptions is likely to exceed the capacity of the resources available at the endpoint, and can implement procedures to slow or stop processing new selections or subscriptions until the threat has passed.

[0054] At any of various points in process 400, embodiments of the streaming server 110 can decide to abandon or reuse unnecessary resources if the server 110 detects that streaming traffic is slowing down. For example, if the streaming server 110 provisioned resources in block 408 after detecting a rate exceeding an endpoint selection threshold but subsequently determining that a flash crowd event did not occur, the streaming server 110 can abandon the provisioned resources. Alternatively, if the streaming server 110 configures and adjusts resources to manage a flood of stream subscriptions, the server 110 can abandon or reuse resources after enough clients have disconnected from the stream.

[0055] The flash event detection process described with respect to Fig. 4 allows the streaming server 110 to detect an incoming flash crowd before traffic peaks. Early detection allows the streaming server 110 to provision and configure computing resources to handle the traffic influx before clients attempt to connect to the stream. Thus, the streaming service provided by the streaming server 110 is more robust against sudden increases in traffic associated with flash crowd events. This reduces the chances that the service will be overwhelmed or that real-time interactivity of the stream will be compromised.

[0056] Example of a processing system 5 is a block diagram illustrating an example of a processing system capable of performing at least some of the operations described herein. The processing system may be a processing device 500 that represents a system capable of executing any of the methods / algorithms described above. For example, any of the streaming server 110, the client device 114, or a computing device associated with an endpoint may be implemented as the processing system 500. The system may include two or more processing devices as depicted in FIG. 5 that may be coupled to each other via a network or multiple networks. The network may also be referred to as a communication network.

[0057] In the illustrated embodiment, the processing device 500 includes one or more processors 502, memory 504, communication devices 506, and one or more input / output (I / O) devices 508, all coupled together via an interconnect 510. The interconnect 510 may be or include one or more conductive traces, buses, point-to-point connections, controllers, adapters, and / or other conventional connection devices. Each of the processors 502 may be or include, for example, one or more general-purpose programmable microprocessors or microprocessor cores, microcontrollers, application specific integrated circuits (ASICs), programmable gate arrays, etc., or a combination of such devices.

[0058] The processor 502 controls the overall operation of the processing device 500. The memory 504 may be or include one or more physical storage devices, which may be in the form of a random access memory (RAM), a read only memory (ROM) (which may be erasable and programmable), a flash memory, a miniature hard disk drive, or other suitable type of storage device, or a combination of such devices. The memory 504 may store data and instructions that configure the processor 502 to perform operations in accordance with the techniques described above. The communication device 506 may be or include, for example, an Ethernet adapter, a cable modem, a Wi-Fi adapter, a cellular transceiver, a Bluetooth transceiver, or the like, or a combination thereof. Depending on the particular nature and purpose of the processing device 500, the I / O device 508 may include devices such as a display (which may be a touch screen display), audio speakers, a keyboard, a mouse or other pointing device, a microphone, a camera, or the like.

[0059] Although processes or blocks are presented in a given order, alternative embodiments may perform routines having steps or use systems having blocks in a different order, and some processes or blocks may be deleted, moved, added, subdivided, combined, and / or modified to provide alternatives or subcombinations, or duplicated (e.g., performed multiple times). Each of these processes or blocks may be implemented in a variety of different ways. In addition, while processes or blocks may be shown to be performed sequentially, these processes or blocks may alternatively be performed in parallel or at different times. When a process or step is "based on" a value or calculation, the process or step should be construed to be based on at least that value or calculation.

[0060] Software or firmware for implementing the techniques presented herein can be stored in a machine-readable storage medium and executed by one or more general-purpose or special-purpose programmable microprocessors. A "machine-readable medium," as the term is used herein, includes any mechanism that can store information in a form accessible by a machine (which can be, for example, a computer, a network device, a mobile phone, a personal digital assistant (PDA), a manufacturing tool, any device equipped with one or more processors, etc.). For example, machine-accessible media includes writable / non-writable media (e.g., read-only memory (ROM), random access memory (RAM), magnetic disk storage media, optical storage media, flash memory devices), etc.

[0061] It should be noted that any and all of the above-described embodiments may be combined with each other, except to the extent otherwise described above or to the extent such embodiments may be mutually exclusive in function and / or structure. Although the invention has been described with reference to certain exemplary embodiments, it will be recognized that the invention is not limited to the embodiments described herein, but can be practiced with modification and alteration within the spirit and scope of the disclosed embodiments. Accordingly, the specification and drawings are to be regarded in an illustrative, rather than a restrictive, sense.

[0062] The physical and functional components (e.g., devices, engines, modules, and data repositories) associated with the processing device 500 may be implemented as circuits, firmware, software, other executable instructions, or any combination thereof. For example, the functional components may be implemented in the form of dedicated circuitry, in the form of one or more appropriately programmed processors, single board chips, field programmable gate arrays, general purpose computing devices configured with executable instructions, virtual machines configured with executable instructions, cloud computing environments configured with executable instructions, or any combination thereof. For example, the functional components described herein may be implemented as instructions on a tangible storage memory that may be executed by a processor or other integrated circuit chip. The tangible storage memory may be computer readable data storage. The tangible storage memory may be volatile or non-volatile memory. In some embodiments, the volatile memory may be considered "non-transient" in the sense that it is not a transitory signal. The illustrated memory space and storage may be implemented by tangible storage memory, including volatile or non-volatile memory.

[0063] Each functional component can operate individually and independently of the other functional components. Some or all of the functional components can run on the same host device or on separate devices. The separate devices can be coupled via one or more communication channels (e.g., wireless or wired channels) to coordinate their operation. Some or all of the functional components can be combined into a single component. A single functional component can be divided into subcomponents, with each subcomponent performing a separate method step or method steps of a single component.

[0064] In some embodiments, at least some of the functional components share access to memory space. For example, one functional component can access data accessed or transformed by another functional component. If the functional components share a physical or virtual connection, directly or indirectly, such that data accessed or modified by one functional component is accessible by another functional component, the functional components can be considered to be "coupled" to one another. In some embodiments, at least some of the functional components can be upgraded or modified remotely (e.g., by reconfiguring executable instructions that implement some of the functional components). Other arrays, systems, and devices described above can include fewer or different functional components that are added for various applications.

[0065] Aspects of the disclosed embodiments can be described in terms of algorithms and symbolic representations of operations on data bits stored in a memory. These algorithmic descriptions and symbolic representations usually include a sequence of operations leading to a desired result. These operations require physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, transferred, combined or compressed. Conventionally and conveniently, these signals are referred to as bits, values, elements, symbols, characters, terms, numbers, or the like. These and similar terms are merely convenient labels applied to the physical quantities associated with these quantities.

[0066] Although the embodiments have been described in the context of a fully functional computer, those skilled in the art will appreciate that various embodiments can be distributed as program products in a variety of forms, and that the present disclosure applies equally regardless of the type of machine or computer-readable medium used to actually implement the embodiments.

[0067] From the foregoing, it will be appreciated that, although specific embodiments of the invention have been described herein for purposes of illustration, various modifications can be made without deviating from the scope of the invention. Accordingly, the invention is not limited except as by the appended claims.

Claims

1. A computer system configuring a first amount of computing resources at an endpoint server cluster for streaming a real-time content stream; determining a first rate of requests by client devices to connect to the endpoint server cluster; in response to determining that the first rate of requests to connect to the endpoint server cluster is greater than a first threshold, the computer system provisioning a second amount of computing resources at the endpoint server cluster; the computer system monitoring a subscription of a control channel by the client device at the endpoint server cluster, the subscription being based on the request to connect to the endpoint server cluster; determining a second rate of subscription of the control channel at the endpoint server cluster; and in response to determining that the second rate of subscriptions to the control channel is greater than a second threshold, the computer system configures the provisioned computing resources to stream the real-time content stream to one or more of the client devices. A method for providing the above.

2. determining the rate of requests by the client devices, a number of Internet Control Message Protocol (ICMP) packets received from the client device at the endpoint server cluster; the number of HyperText Transfer Protocol (HTTP) GET requests received from the client device at the endpoint server cluster; or The number of Transmission Control Protocol (TCP) connection requests received from the client device at the endpoint server cluster. detecting the request by the client device to connect to the endpoint server cluster based on at least one of The method of claim 1 , comprising:

3. determining the rate of the subscription by the client device, monitoring the subscription of the control channel by the client device; and a rate of channel subscription requests associated with the control channel; the length of a channel subscription request queue associated with said control channel; or a rate of transport session requests associated with said control channel; The method of claim 1 , further comprising detecting at least one of:

4. the computer system monitoring subscriptions by the client devices to the real-time content stream on a control channel; and in response to determining that a third rate of subscription to the real-time content stream is greater than a third threshold, adjusting the first amount of computing resources and the second amount of computing resources for delivering the real-time content stream to the client device; The method of claim 1 further comprising:

5. monitoring the subscription by the client device to the real-time content stream on the control channel, a rate of stream subscription requests associated with the real-time content stream; the length of a stream subscription request queue associated with said real-time content stream; or a rate of transport session requests associated with the real-time content stream; detecting at least one of The method according to claim 4.

6. in response to determining that the first rate of the requests to connect to the endpoint server cluster exceeds a third threshold, slowing down the processing of the requests to connect to the endpoint server cluster. The method of claim 1 further comprising:

7. slowing down the processing of the requests to subscribe to the endpoint server cluster in response to determining that the second rate of subscriptions to the control channel is greater than a third threshold. The method of claim 1 further comprising:

8. A non-transitory computer readable storage medium storing executable computer program instructions, the computer program instructions, when executed by a processor, causing the processor to perform the steps of: configuring a first amount of computing resources at the endpoint server cluster to stream the real-time content stream; determining a first rate of requests by client devices to connect to the endpoint server cluster; in response to determining that the first rate of requests to connect to an endpoint server cluster is greater than a first threshold, causing a second amount of computing resources to be provisioned at the endpoint server cluster; causing the endpoint server cluster to monitor a subscription to a control channel by the client device, the subscription being based on the request to connect to the endpoint server cluster; determining a second rate of subscription of the control channel at the endpoint server cluster; and configuring the provisioned computing resources to stream the real-time content stream to one or more of the client devices in response to determining that the second rate of subscriptions to the control channel is greater than a second threshold; A non-transitory computer-readable storage medium for causing a program to be executed.

9. The computer program instructions further cause the processor to: monitoring subscriptions by the client devices to the real-time content streams on the control channel; and and in response to determining that a third rate of subscription to the real-time content stream is greater than a third threshold, adjusting the first amount of computing resources and the second amount of computing resources to deliver the real-time content stream to the client device. The non-transitory computer-readable storage medium of claim 8.

10. The computer program instructions further cause the processor to: in response to determining that the first rate of the requests to connect to the endpoint server cluster exceeds a third threshold, slowing down the processing of the requests to connect to the endpoint server cluster. The non-transitory computer-readable storage medium of claim 8.

11. The computer program instructions cause the processor to: in response to determining that the second rate of subscriptions to the control channel is greater than a third threshold, slowing down the processing of the requests to subscribe to the endpoint server cluster. The non-transitory computer-readable storage medium of claim 8.

12. an endpoint server cluster including a first computing resource configured to stream real-time content streams to client devices; communicatively coupled to the endpoint server cluster; and Detecting actions by a plurality of the client devices during a multi-step process for accessing the real-time content stream from the endpoint server cluster; provisioning a second computing resource at the endpoint server cluster that is different from the first computing resource based on a rate at which the plurality of client devices execute an action associated with a first step of the multi-step process; and and configuring the provisioned second computing resource in the endpoint server cluster to stream the real-time content stream based on a rate at which the plurality of client devices perform actions associated with a second step of the multi-step process. Configured streaming servers A real-time streaming system comprising:

13. the action associated with the first step of the multi-step process comprises establishing a connection between a client device and the endpoint server cluster, and the streaming server is configured to measure the rate at which the client devices perform using an endpoint selection signal, according to the action associated with the first step. The real-time streaming system according to claim 12.

14. The endpoint selection signal is a number of Internet Control Message Protocol (ICMP) packets received from the client device at the endpoint server cluster; the number of HyperText Transfer Protocol (HTTP) GET requests received from the client device at the endpoint server cluster; or The number of Transmission Control Protocol (TCP) connection requests received from the client device at the endpoint server cluster. The real-time streaming system according to claim 13, comprising at least one of:

15. 13. The real-time streaming system of claim 12, wherein the action associated with the second step of the multi-step process comprises requesting access to a control channel, and the streaming server is configured to measure the rate at which the plurality of client devices perform using a channel subscription signal by the action associated with the second step.

16. The channel subscription signal: a rate of channel subscription requests associated with the control channel; the length of a channel subscription request queue associated with said control channel; or a rate of transport session requests associated with said control channel; The real-time streaming system according to claim 15, comprising at least one of:

17. The streaming server further comprises: and configured to coordinate the first computing resource and the second computing resource for delivering the real-time content stream to one or more client devices based on a rate at which the plurality of client devices perform an action associated with a third step of the multi-step process. The real-time streaming system according to claim 12.

18. the action associated with the third step of the multi-step process comprises requesting a subscription to the real-time content stream, and the streaming server is configured to measure the rate at which the plurality of client devices perform using a stream subscription signal, according to the action associated with the third step.

18. The real-time streaming system according to claim 17.

19. The stream subscription signal comprises: a rate of stream subscription requests associated with the real-time content stream; the length of a stream subscription request queue associated with said real-time content stream; or a rate of transport session requests associated with said real-time content stream; At least one of the following:

20. The real-time streaming system according to claim 18.

20. The streaming server further comprises: the plurality of client devices are configured to, in response to determining that the rate of performing the actions associated with the first step of the multi-step process is greater than a threshold, slow down processing of requests to perform the first step. The real-time streaming system according to claim 12.

Citation Information

Patent Citations

  • System and method obtained by integrating distribution of load and resource management in internet environment

    JP2001067377A

  • Load distribution in data networks

    JP2017118575A

  • Network Audio Distribution System and Method

    US20150071458A1