KR20220128396A - 실시간 스트리밍시의 플래시 크라우드 관리 - Google Patents
실시간 스트리밍시의 플래시 크라우드 관리 Download PDFInfo
- Publication number
- KR20220128396A KR20220128396A KR1020227027852A KR20227027852A KR20220128396A KR 20220128396 A KR20220128396 A KR 20220128396A KR 1020227027852 A KR1020227027852 A KR 1020227027852A KR 20227027852 A KR20227027852 A KR 20227027852A KR 20220128396 A KR20220128396 A KR 20220128396A
- Authority
- KR
- South Korea
- Prior art keywords
- real
- stream
- subscription
- server cluster
- endpoint
- Prior art date
Links
- 238000000034 method Methods 0.000 claims abstract description 75
- 230000008569 process Effects 0.000 claims abstract description 43
- 230000009471 action Effects 0.000 claims abstract description 6
- 238000012545 processing Methods 0.000 claims description 20
- 230000004044 response Effects 0.000 claims description 19
- 238000003860 storage Methods 0.000 claims description 15
- 238000004590 computer program Methods 0.000 claims description 8
- 230000005540 biological transmission Effects 0.000 claims description 6
- 238000012544 monitoring process Methods 0.000 claims description 5
- 238000012546 transfer Methods 0.000 claims description 4
- 230000008859 change Effects 0.000 description 11
- 238000010586 diagram Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 4
- 238000003491 array Methods 0.000 description 3
- 230000007423 decrease Effects 0.000 description 3
- 238000009826 distribution Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 238000010801 machine learning Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000003139 buffering effect Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000033001 locomotion Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000001010 compromised effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000009474 immediate action Effects 0.000 description 1
- 230000004941 influx Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000011897 real-time detection Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
- H04L65/61—Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
- H04L65/613—Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio for the control of the source by the destination
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/24—Traffic characterised by specific attributes, e.g. priority or QoS
- H04L47/2416—Real-time traffic
-
- H04L47/823—
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/70—Admission control; Resource allocation
- H04L47/83—Admission control; Resource allocation based on usage prediction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
- H04L65/61—Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
- H04L65/611—Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio for multicast or broadcast
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
- H04L65/61—Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
- H04L65/612—Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio for unicast
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/80—Responding to QoS
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
- H04L67/1008—Server selection for load balancing based on parameters of servers, e.g. available memory or workload
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
- H04L67/101—Server selection for load balancing based on network conditions
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1029—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers using data related to the state of servers by a load balancer
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Information Transfer Between Computers (AREA)
- Reverberation, Karaoke And Other Acoustics (AREA)
Abstract
실시간 스트리밍 서비스는 유입되는 플래시 크라우드 이벤트를 예측하고 트래픽이 정점에 도달하기 전에 이벤트에 대응할 수 있도록 컴퓨팅 리소스를 관리하므로, 스트리밍 서비스의 리소스가 초과될 가능성을 줄일 수 있다. 실시간 스트리밍 서버의 실시예는 엔드포인트 서버 클러스터로부터 실시간 콘텐츠 스트림에 액세스하기 위한 다단계 프로세스 동안 클라이언트 장치에 의한 동작을 감지함으로써 플래시 크라우드 이벤트를 예측한다. 처음에 엔드포인트 서버는 콘텐츠 스트림을 클라이언트 장치로 스트리밍하도록 구성된 제 1 컴퓨팅 리소스를 갖는다. 스트리밍 서버는 클라이언트 장치가 다단계 프로세스의 제 1 단계와 관련된 동작을 수행하는 비율에 기초하여 엔드포인트 서버에서 제 2 컴퓨팅 리소스를 프로비저닝한다. 제2 컴퓨팅 리소스는 클라이언트 장치가 다단계 프로세스의 제2 단계와 관련된 동작을 수행하는 비율에 기초하여 실시간 콘텐츠 스트림을 스트리밍하도록 구성된다.
Description
[관련 출원과의 상호참조]
본 출원은 2020년 1월 13일에 출원된 미국 예비특허출원 제62/960,534호의 우선권을 주장하며, 이것은 전체가 참고로 본 명세서에서 포함된다.
본 출원은 일반적으로 실시간 스트리밍에 관한 것으로, 특히 실시간 스트리밍 서비스에서 플래시 크라우드(flash crowd)를 감지하고 관리하는 것에 관한 것이다.
인터넷을 통한 비디오 콘텐츠 스트리밍은 비디오 콘텐츠를 시청하는 방법으로서 빠르게 인기를 얻고 있다. 일반적인 스트리밍 서비스에서, 비디오 및/또는 오디오 데이터는 사용자가 재생하기 위해 서버 모음에서 전자 장치(예: 스마트폰, 컴퓨터, 태블릿 또는 스마트 텔레비전)로 스트리밍된다. 그러나 실시간 스트리밍 서비스는, 예를 들어 스트리밍된 콘텐츠의 참가자들 간에, 경기 결과에 베팅하는 라이브 스포츠 이벤트 관중들 간에, 또는 라이브 이벤트의 출연자와 관객 간에 존재하는 자연스러운 인간 상호 작용에 영향을 미치지 않도록 하기 위해 충분히 작은 지연으로 매체를 동시에 캡처하고 사용자 장치에 브로드캐스트한다.
사용자에게 자연스럽게 느껴지는 상호작용을 용이하게 하여 사용자 유지 및 참여를 개선하기 위해서, 실시간 스트리밍 서비스는 고품질의 경험을 전달해야만 한다. 시작 레이턴시, 평균 비트 전송률 및 재버퍼링 비율을 비롯한 다양한 요인이 서비스의 경험 품질에 영향을 줄 수 있다. 이러한 요소 중 다수는 처리되는 클라이언트 요청 수 측면에서 서비스 인프라에 부과되는 부하에 의해 직간접적으로 영향을 받는다.
실시간 스트리밍 서비스에 대한 한 가지 특정 과제는 스트림에 액세스 (또는 "구독")하는 클라이언트 수의 일시적인 급증을 처리하는 서비스의 능력이다. "플래시 크라우드"이라고도 알려진, 스트림을 요청하는 클라이언트 수의 갑작스러운 급증은 광범위한 관심을 불러오는 중요한 이벤트(예: 쓰나미, 공적 인물의 죽음, 드레스의 실제 색상에 대한 질문)가 발생한 후에 종종 발생한다. 스트리밍 매체가 부과하는 리소스에 대한 높은 수요를 감안할 때, 플래시 크라우드 이벤트는 스트리밍 서비스를 쉽게 초과할 수 있다. 플래시 크라우드가 해일처럼 도착하고, 이 때 트래픽 스파이크는 일반적으로 몇 분 이내에 발생하고 따라서 서버가 들어오는 트래픽에 적응하는 데 몇 십초밖에 부여되지 않는다. 플래시 크라우드가 드물고 예측할 수 없다는 점을 감안할 때, 플래시 크라우드 이벤트의 영향을 완화하기 위한 솔루션은 사전 예방적 실시간 감지 메커니즘 및 스트레스의 영향을 완화할 수 있는 즉각적인 조치 방법을 포함한다.
인프라 기반 콘텐츠 배포 네트워크(CDN, 예를 들어 Akamai2, Limelight3)에서 피어-투-피어(P2P) 콘텐츠 배포(예: Gnutella, Bittorrent) 및 두 접근 방식의 장점을 모두 활용하는 하이브리드 솔루션에 이르기까지 효율적인 인터넷 콘텐츠 배포를 개선하기 위한 많은 작업이 있어 왔다. 이러한 플랫폼 중 일부는 대규모 플래시 크라우드 이벤트를 처리할 수 있지만, 이러한 플랫폼의 인프라, 조직 및 솔루션은 자연스럽게 지원하려는 데이터 유형과 사용 패턴을 기반으로 구축된다. 전통적으로 이러한 시스템은 대부분 정적 콘텐츠(예: 텍스트, 이미지)를 제공했으며, 최근에는 주문형 비디오(VoD) 및 비디오 스트리밍으로 이동했다. 그러나 이와 같은 비실시간 서비스는 스트리밍 지연 - 스트리밍 중인 이벤트가 발생한 시점부터 구독자에게 전달되기 까지의 시간- 에 대한 내성이 높다.
스트림 지연에 대한 높은 내성으로 비실시간 서비스는 급증의 영향을 완화하기 위해 데이터 경로를 따른 캐시의 배치 및 위임의 사용을 통해 클라이언트 요청의 급증을 처리할 수 있다. 예를 들어, CDN은 플래시 이벤트 동안 많은 비율의 요청을 담당하는 객체(일반적으로 소수)를 캐시할 수 있으며 플래시 이벤트의 초기 단계에서 원본 서버의 부하를 줄이기 위해 협력 캐싱 또는 동적 위임에 의존할 수 있다. 그러나 이러한 기술은 실시간 매체 스트림에는 거의 효과가 없으며, 이 때 스트림 지연은 참자가가 실시간으로 콘텐츠 및 다른 구독자에 반응하거나 상호 작용하는 것을 방해하거나 이를 완전히 배제시킨다.
개시된 기술의 다양한 특징 및 특성은 도면과 함께 상세한 설명의 연구로부터 당업자에게 보다 명백해질 것이다. 본 기술의 실시 예는 예시로 도시되지만 이들 도면에만 제한되는 것은 아니며, 이 때 유사한 참조 부호는 유사한 요소를 나타낼 수 있다.
도 1은 비디오 콘텐츠를 복수의 클라이언트 장치로 스트리밍하기 위한 실시간 스트리밍 시스템을 예시하는 블록도이다.
도 2는 실시간 스트리밍 시스템의 예시적인 아키텍처 모델을 도시한다.
도 3은 실시간 스트림에 액세스하기 위해 클라이언트 장치에 의해 수행되는 프로세스를 도시하는 흐름도이다.
도 4는 실시간 스트림으로 유입되는 플래시 크라우드를 감지하고, 플래시 크라우드에 응답하도록 리소스를 관리하는 과정을 도시한 흐름도이다.
도 5는 처리 시스템의 일 례를 나타내는 블록도이다.
도면은 단지 예시의 목적으로 다양한 실시 예를 도시한다. 당업자라면 기술의 원리를 벗어나지 않으면서 대안적인 실시 예가 채용될 수 있다는 것을 인식할 것이다. 따라서, 특정 실시 예가 도면에 도시되어 있지만, 기술은 다양한 변형이 가능하다.
도 1은 비디오 콘텐츠를 복수의 클라이언트 장치로 스트리밍하기 위한 실시간 스트리밍 시스템을 예시하는 블록도이다.
도 2는 실시간 스트리밍 시스템의 예시적인 아키텍처 모델을 도시한다.
도 3은 실시간 스트림에 액세스하기 위해 클라이언트 장치에 의해 수행되는 프로세스를 도시하는 흐름도이다.
도 4는 실시간 스트림으로 유입되는 플래시 크라우드를 감지하고, 플래시 크라우드에 응답하도록 리소스를 관리하는 과정을 도시한 흐름도이다.
도 5는 처리 시스템의 일 례를 나타내는 블록도이다.
도면은 단지 예시의 목적으로 다양한 실시 예를 도시한다. 당업자라면 기술의 원리를 벗어나지 않으면서 대안적인 실시 예가 채용될 수 있다는 것을 인식할 것이다. 따라서, 특정 실시 예가 도면에 도시되어 있지만, 기술은 다양한 변형이 가능하다.
인터넷과 같은 패킷 교환 네트워크를 통해 미디어 콘텐츠를 스트리밍하는 것은 다양한 미디어(예를 들어, 비디오, 오디오)를 소비하는 방법으로서 빠르게 인기를 얻고 있다. 전자 장치(예: 스마트폰, 컴퓨터, 태블릿)는 네트워크(예: 인터넷)에 연결하고 다양한 비디오 및 오디오 데이터 스트림을 구독할 수 있다. 예를 들어, 다수의 전자 장치(또는 "클라이언트 장치")가 발신 장치에 의해 생성된 화상 통화의 라이브 스트림에 구독할 수 있다. 다른 예로서, 클라이언트 장치는 스포츠 이벤트의 라이브 스트림을 구독할 수도 있다.
스트리밍 미디어 콘텐츠의 인기가 높아짐에 따라 인터넷을 통해 고품질 비디오 및 오디오 스트리밍을 전달하기 위한 사용자의 대역폭 및 계산 리소스 요구도 증가한다. 플래시 크라우드 이벤트 동안 대역폭 및 계산 리소스 요구 사항이 복잡해지고, 이 때 동일한 서버를 통해 동일한 콘텐츠 스트림에 액세스하려는 클라이언트 장치의 수가 급증하게 되면 해당 서버의 스트리밍 용량을 초과할 수 있다.
플래시 클라우드 이벤트 동안, 정당한 트래픽의 갑작스런 급증으로 인해 서버의 성능 및 정당한 사용자에 의한 서비스에의 액세스가 저하하게 된다. 수학적으로, 플래시 크라우드 이벤트는 지정된 기간 내 평균 요청 비율로 정의될 수 있다. 경우에 따라, 플래시 크라우드 이벤트는 특정 리소스에 대한 요청 비율이 기하급수적으로 증가하는 기간을 말한다; 즉, 기간 ti에 대한 분당 평균 요청 비율이 rateti이면, 모든 i∈[0,k]에 대해, rateti>2i*ratet0인 경우, 리소스는 플래시 크라우드를 경험하며, 여기서 k는 기간의 수이다. 플래시 크라우드 이벤트는 정당한 요청으로 서비스를 초과하여 상당한 성능 저하를 일으킨다.
본 명세서에 설명된 실시간 스트리밍 서비스의 실시 예는 유입되는 플래시 크라우드 이벤트를 예측하고 트래픽 피크 전에 이벤트에 응답하기 위해 리소스를 관리하며, 이에 따라 스트리밍 서비스와 관련된 컴퓨팅 리소스가 초과될 가능성을 줄일 수 있다. 일반적으로, 플래시 크라우드 이벤트는 스트림을 구독할 때 클라이언트 장치가 뒤따르는 다단계 프로세스가 잠재적인 향후 플래시 이벤트를 감지하는 데 활용할 수 있는 여러 신호를 제공한다는 관찰을 기반으로 예측된다.
일부 실시 예에서, 플래시 크라우드 이벤트를 예측하고 관리하기 위해 실시간 스트리밍 서비스에서 수행하는 방법은 실시간 스트리밍 서버와 같은 컴퓨터 시스템에 의해, 실시간 콘텐츠 스트림을 스트리밍하기 위해 엔드포인트 서버 클러스터에서 제1 수량의 컴퓨팅 리소스를 구성하는 단계를 포함한다. 컴퓨터 시스템은 엔드포인트 서버 클러스터에 연결하기 위한 클라이언트 장치의 제 1 요청 비율을 결정한다. 엔드포인트에 연결하려는 제 1 요청 비율이 제 1 임계값보다 큰지 결정하는 것에 응답하여, 컴퓨터 시스템은 엔드포인트 서버 클러스터에서 제 2 수량의 컴퓨팅 리소스를 프로비저닝한다. 컴퓨터 시스템은 엔드포인트 서버 클러스터에서의 제어 채널에 대한 클라이언트 장치의 구독을 모니터링하고, 여기서 구독은 엔드포인트 서버 클러스터에 연결하기 위한 요청을 기반으로 한다. 컴퓨터 시스템은 이들 구독의 제 2 비율을 결정하고, 이 제 2 비율이 제 2 임계값보다 큰지 여부를 결정한다. 제 2 비율이 제2 임계값보다 크다는 결정에 응답하여, 컴퓨터 시스템은 실시간 콘텐츠 스트림을 하나 이상의 클라이언트 장치로 스트리밍하기 위해 프로비저닝된 컴퓨팅 리소스를 구성한다.
실시간 스트리밍 시스템의 일부 실시 예는 엔드포인트 서버 클러스터 및 스트리밍 서버를 포함한다. 엔드포인트 서버 클러스터는 클라이언트 장치에 실시간 콘텐츠 스트림을 스트리밍하도록 구성된 제 1 수량의 컴퓨팅 리소스를 포함한다. 엔드포인트 서버 클러스터에 통신 가능하게 연결된 스트리밍 서버는 엔드포인트 서버 클러스터로부터 실시간 콘텐츠 스트림에 액세스하기 위한 다단계 프로세스 동안 복수의 클라이언트 장치에 의한 동작을 감지한다. 스트리밍 서버는 복수의 클라이언트 장치가 다단계 프로세스의 제 1 단계와 관련된 동작을 수행하는 비율에 기반하여 엔드포인트 서버 클러스터에서 추가 컴퓨팅 리소스를 프로비저닝하고, 복수의 클라이언트 장치가 다단계 프로세스의 제 2 단계와 관련된 동작을 수행하는 비율에 기초하여 실시간 콘텐츠 스트림을 스트리밍하도록 프로비저닝된 컴퓨팅 리소스를 구성한다.
후술하는 실시 예는 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 실시 예를 실시하고 실시 예를 실시하는 최선의 모드를 예시하는 데 필요한 정보를 나타낸다. 첨부된 도면에 비추어 다음 설명을 읽으면, 당업자라면 본 개시의 개념을 이해하고 본 명세서에서 특별히 다루지 않은 이들 개념의 적용을 인식할 수 있을 것이다. 이러한 개념 및 응용은 본 개시 및 첨부된 실시 예의 범위에 속한다.
개시된 기술은 특수 목적 하드웨어(예를 들어, 회로), 소프트웨어 및/또는 펌웨어로 적절하게 프로그래밍된 프로그래밍 가능 회로, 또는 특수 목적 하드웨어와 프로그래밍 가능 회로의 조합을 사용하여 구현될 수 있다. 따라서, 실시 예는 비디오 게임을 테스트하기 위해 실행될 수 있는 명령을 갖는 기계 판독가능 매체를 포함할 수 있다.
본 명세서에서 사용된 용어는 단지 실시 예를 설명하기 위해 사용된 것으로, 본 발명의 범위를 한정하려는 것은 아니다. 문맥이 허용하는 경우, 단수 또는 복수 형태를 사용하는 단어는 각각 복수 또는 단수 형태를 포함할 수도 있다.
본 명세서에 사용된 바와 같이, 달리 구체적으로 언급되지 않는 한, "처리", "계산", "연산", "결정", "표시", "생성" 등과 같은 용어는 컴퓨터 메모리 내에서 물리적(전자적) 양으로 표시된 데이터를 조작하고 변환하거나 컴퓨터의 메모리, 레지스터 또는 기타 저장 매체, 전송 또는 디스플레이 장치 내에서 물리량으로 유사하게 표현되는 다른 데이터에 등록하는 컴퓨터 또는 유사한 전자 컴퓨팅 장치의 작업 및 프로세스를 나타낸다.
본 명세서에 사용된 바와 같이, "연결된", "결합된" 등과 같은 용어는 2개 이상의 요소 사이의 직접적 또는 간접적인 임의의 연결 또는 결합을 지칭할 수 있다. 요소 간의 결합 또는 연결은 물리적, 논리적 또는 이들의 조합일 수 있다.
"일 실시 예" 또는 "하나의 실시 예"에 대한 언급은 설명되는 특정 특징, 기능, 구조 또는 특성이 적어도 하나의 실시 예에 포함된다는 것을 의미한다. 이러한 문구의 발생은 반드시 동일한 실시 예를 지칭하는 것은 아니며, 반드시 상호 배타적인 대안적인 실시 예를 지칭하는 것은 아니다.
문맥상 명백히 달리 요구하지 않는 한, "포함하다" 및 "포함하는"이라는 단어는 배타적이거나 포괄적인 의미가 아닌 포괄적인 의미로 해석되어야 한다(즉, "제한하는 것은 아니지만 포함함"의 의미에서). "~에 기초한"이라는 용어는 배타적인 의미가 아니라 포괄적인 의미로 해석되어야 한다. 따라서, 달리 언급되지 않는 한, "~에 기초한"이라는 용어는 "적어도 부분적으로 ~에 기초한"을 의미하는 것이다.
"모듈"이라는 용어는 소프트웨어 구성요소, 하드웨어 구성요소 및/또는 펌웨어 구성요소를 광범위하게 지칭한다. 모듈은 일반적으로 지정된 입력을 기반으로 유용한 데이터 또는 기타 출력을 생성할 수 있는 기능적 구성 요소이다. 모듈은 독립적일 수 있다. 컴퓨터 프로그램은 하나 이상의 모듈을 포함할 수 있다. 따라서 컴퓨터 프로그램은 여러 작업을 완료하는 역할을 하는 여러 모듈 또는 여러 작업을 완료하는 단일 모듈을 포함할 수 있다.
여러 항목의 목록과 관련하여 사용될 때, "또는"이라는 단어는 다음 해석을 모두 포함하도록 의도된다: 목록 중 임의의 항목, 목록의 모든 항목 및 목록의 모든 항목의 조합.
본 명세서에 기재된 임의의 공정에서 수행되는 단계의 시퀀스는 예시적이다. 그러나, 물리적 가능성에 반하지 않는 한 다양한 순서 및 조합으로 수행될 수 있다. 예를 들어, 본 명세서에서 설명된 프로세스에 단계를 추가하거나 제거할 수 있다. 마찬가지로 단계를 교체하거나 재정렬할 수 있다. 따라서 모든 프로세스에 대한 설명은 개방형이다.
실시간 스트리밍 시스템
도 1은 다양한 실시 예에 따른 복수의 클라이언트 장치(114A-114C)로 비디오 콘텐츠를 스트리밍하기 위한 실시간 스트리밍 시스템(100)을 도시한다. 시스템(100)은 인터넷과 같은 네트워크(112)를 통해 미디어 콘텐츠를 인코딩 및 스트리밍하도록 구성된 하나 이상의 스트리밍 서버(110)를 포함할 수 있다. 스트리밍 서버(110)는 외부 노드(예를 들어, 클라이언트 장치, 외부 서버, 비디오 카메라)로부터 미디어 데이터를 수신할 수 있다. 스트리밍 서버(110)는 미디어 데이터를 인코딩하여 클라이언트 장치(114)에 전달한다.
미디어 데이터는 라이브 비디오 스트림을 포함한다. 예를 들어, 라이브 비디오 스트림은 외부 노드에 의해 생성될 수 있고, 스트리밍 서버(110)에 의해 네트워크를 통해 전달되고, 클라이언트 장치(114)의 사용자가 인지할 수 없는 기간 내에 클라이언트 장치(114)에 의해 렌더링될 수 있다. 일부 실시 예에서, 라이브 비디오는 거의 실시간인 비디오를 포함할 수 있다. 라이브 비디오는 라이브 비디오를 보는 사용자가 라이브 비디오와 자연스럽게 상호 작용하고 라이브 비디오에 반응할 수 있도록 클라이언트 장치에 전송될 수 있다.
"라이브 미디어 스트림" 또는 "실시간 스트림"이라는 용어는 네트워크 상에서 이벤트를 발생하면서 바로 브로드캐스팅하는 것을 광범위하게 의미하는 것이다. 이것은 소스 장치에서 생성되어 네트워크를 통해 전송되고, 수신 장치의 사용자가 인지할 수 없는 레이턴시/지연으로 ("거의 실시간"으로도 지칭될 수 있음) 수신 장치에 의해 렌더링되는 컨텐츠를 브로드캐스팅하는 단계를 포함할 수 있다. 장치 사용자가 감지할 수 없는 이러한 레이턴시의 예는 100ms, 300ms, 500ms 등을 포함할 수 있다. 따라서 클라이언트 장치의 사용자는 거의 실시간으로(즉, 스트림에 구독하는 클라이언트 장치의 사용자가 감지할 수 없는 지연 정도로) 라이브 미디어 스트림과 상호 작용하거나 이에 응답할 수 있다. 예시적인 예에서, 실시간 스트리밍 쇼를 구독하는 참가자는 출연자와 직접 의사 소통하고 출연자가 행동을 하게 만들수 있다(예: 스탠드업 코미디 쇼에서 출연자와 상호작용, 아마도 질문에 답하는 등). 또 다른 예에서 실시간 스트림 카드 게임의 플레이어는 카드가 뒤집히는 동안 베팅을 할 수 있다.
예를 들어, 스마트폰(114A)은 라이브 비디오(예를 들어, 비디오 캡처 게임플레이, 사용자의 움직임을 캡처하는 비디오)를 생성하고 스트리밍 서버(110)에 전송할 수 있다. 스트리밍 서버(110)는 수신된 라이브 비디오를 인코딩하고 인코딩된 비디오를 다른 클라이언트 장치(예를 들어, 랩톱 컴퓨터(114B) 또는 컴퓨터(114C))로 전송할 수 있다. 이 예에서, 다른 클라이언트 장치는 최소 버퍼링으로 사용자가 인지할 수 없는(예를 들어, 300밀리초 미만) 시간 지연으로 인코딩된 라이브 비디오를 수신할 수 있다. 이 예에 더하여, 랩탑 컴퓨터(114B)는 라이브 비디오를 수신하고 제2 라이브 비디오를 생성할 수 있다. 제2 라이브 영상은 스트리밍 서버(110)로 전송될 수 있고, 여기서 스트리밍 서버(110)는 제2 라이브 비디오를 인코딩하여 다른 클라이언트 장치(스마트폰(114A) 또는 컴퓨터(114C)와 같은)로 전송한다. 이 예에서, 스트림에 구독하는 장치는 장치(114A-C)의 사용자가 인지할 수 없는 지연/레이턴시로 라이브 비디오 스트림을 통해 대화식으로 통신할 수 있다.
스트리밍 서버(110)는 인코딩된 미디어 스트림(예를 들어, 미디어 스트림(116))을 클라이언트 장치(114)로 전송한다. 스트림 요청(118)은 클라이언트 장치(114)의 사용자가 인코딩된 미디어 스트림(116)에 구독하도록 요청했음을 나타낼 수 있다. 예를 들어, 랩톱 컴퓨터(114B)의 사용자는 네트워크(112)를 통해 스트리밍 서버(110)에 스트림 요청을 전송함으로써 스포츠 이벤트의 라이브 비디오 스트림에 구독할 수 있다. 스트리밍 요청을 수신하면, 스트리밍 서버(110)는 인코딩된 비디오 콘텐츠를 랩톱 컴퓨터(114B)로 전송할 수 있다. 랩톱 컴퓨터(114B)는 그 다음 인코딩된 비디오 데이터를 디코딩하고 스포츠 이벤트의 라이브 비디오 스트림을 디스플레이에 출력할 수 있다.
실시간 스트리밍을 위한 콘텐츠 캐싱의 제한된 이점과 캐싱 및 버퍼링이 스트림에 허용할 수 없는 지연을 유발할 수 있다는 사실을 감안할 때, 시스템(100)은 지리적으로 분산된 포인트-오브-프레즌스(PoP)에 위치한 서버(본 명세서에서 데이터 센터 또는 클러스터로 지칭됨)의 컬렉션을 활용한다. 도 2는 클라이언트 장치(114), 스트림 소스(205), 및 다양한 PoP의 데이터 센터(210A-210F)를 포함하는 시스템(100)의 예시적인 아키텍처 모델을 도시한다. 스트림 소스(205)는 콘텐츠의 실시간 스트림을 캡처 및/또는 전송하는 데 사용되는 컴퓨팅 장치이며, 예를 들어 클라이언트 장치(114) 중 하나일 수 있다. 본 명세서에서 엔드포인트 서버 클러스터로도 지칭되는 각각의 데이터 센터(210) 내에는, 스트림 소스(205)로부터 클라이언트 장치(114)로 콘텐츠를 배포하는데 이용 가능한 컴퓨팅 리소스의 수량을 나타내는, 서버 및 관련 컴퓨팅 및 네트워킹 인프라의 컬렉션이 있다.
진행중인 스트림에 대한 액세스를 요청하기 전에, 클라이언트 장치(114)는 예를 들어 클라이언트의 지리적 위치에 가장 가까운 PoP를 선택하거나 요청에 대한 다중 데이터 센터(210) 각각의 응답 시간에 기초하여 일반적으로 근처 PoP를 선택한다. 일단 PoP가 선택되면, 클라이언트(114)는 특정 스트림에 구독하기 위해 차례로 사용되는 지속적 제어 채널을 설정하고 인증한다. 예시로서, 도 2는 미국 남서부에 위치한 클라이언트 장치(114)를 도시한다. 클라이언트는 데이터 센터 210A(캐나다에 위치됨), 210B(브라질에 위치됨) 및 210C(독일에 위치됨)에 요청을 보낸다. 요청에 대한 응답 시간이 가장 짧은 데이터 센터를 선택한다.
스트리밍 서버(110)는 가변 트래픽 부하를 처리하기 위해 각 데이터 센터(210)에서 컴퓨팅 리소스의 다양한 양을 프로비저닝 및 구성할 수 있다. 일반적으로 스트리밍 서버(110)는 대량의 스트리밍 트래픽을 처리하고 트래픽이 더 적을 때 리소스 사용을 줄이기 위해 추가 컴퓨팅 리소스를 배치한다. 예를 들어, 컴퓨팅 리소스의 기준 수량은 주어진 데이터 센터(210)에 배치되고, 여기서 기준선은 예를 들어 데이터 센터(210)를 통과하는 스트리밍 트래픽의 중앙값을 처리하는 데 필요한 리소스의 수량으로 정의된다. 스트리밍 서버(110)는 트래픽이 증가할 때 기준선으로부터 컴퓨팅 리소스를 증가시키고 트래픽이 감소함에 따라 기준선 이상의 레벨로 컴퓨팅 리소스를 감소시킨다. 기준 수량은 예상 스트리밍 트래픽, 기준 리소스를 유지 관리하는 비용 또는 스트리밍 트래픽이 증가할 경우 리소스를 확장하는 데 필요한 비용 또는 시간과 같은 요인의 균형을 맞추기 위해 관리자가 정의할 수 있다. 각각의 데이터 센터(210)는 서로 다른 양의 트래픽을 관리하도록 구성될 수 있으며, 기준 리소스는 트래픽 패턴이 변화함에 따라 시간이 지남에 따라 증가하거나 감소할 수 있다. 예를 들어 스트리밍 서비스가 호주보다 북미에서 더 인기가 있다면, 데이터 센터(210A)를 통해 이용가능한 기준 리소스는 북미 데이터 센터(210A)가 호주 데이터 센터(210F)보다 일반적인 조건 하에서 더 많은 트래픽을 처리할 가능성이 있다는 결정에 기초하여 데이터 센터(210F)에서 이용가능한 리소스보다 클 수 있다. 그러나 스트리밍 서비스가 호주에서 인기를 얻어 해당 지역의 평균 트래픽 양이 증가하면, 호주 데이터 센터(210F)를 통해 사용할 수 있는 기준 리소스가 그에 따라 증가할 수 있다.
실시간 스트림에 액세스할 때, 클라이언트 장치(114)는 일반적으로 일련의 단계를 따라 서버에 연결하고 스트림에 대한 액세스를 요청한다. 도 3은 실시간 스트림에 액세스하기 위해 클라이언트 장치(114)에 의해 수행되는 프로세스(300)를 예시하는 흐름도이다.
도 3에 도시된 바와 같이, 클라이언트 장치(114)는 블록(302)에서 영역을 선택함으로써 실시간 스트림에 액세스하는 프로세스를 시작한다. 블록(302)은 예를 들어 사용자가 실시간 스트리밍 서비스와 연관된 웹사이트 또는 애플리케이션에 액세스하기 위해 클라이언트 장치(114)를 사용할 때 수행된다. 일부 실시 예에서, 클라이언트 장치(114)는 다수의 데이터 센터(210) 각각에 요청을 전송함으로써 영역을 선택하고 각 요청에 대한 서버 응답을 기다린다. 그 다음, 클라이언트 장치(114)는 제1 서버 응답이 수신되는 데이터 센터(210)를 선택한다. 클라이언트 장치(114)는 지역을 선택하기 위해 하나 또는 다수의 상이한 유형의 요청을 사용할 수 있다. 예를 들어, 인터넷 제어 메시지 프로토콜(ICMP) 요청 패킷("핑")을 전송하는 것은 클라이언트 장치(114)와 각 서버 사이의 네트워크 레이턴시에 대한 정보를 제공할 수 있는 반면, 하이퍼텍스트 전송 프로토콜(HTTP) GET 명령은 네트워크 레이턴시와 애플리케이션 계층 응답 시간에 대한 정보를 제공한다. 클라이언트 장치(114)는 선택된 엔드포인트와 서버 연결을 설정한다.
블록(304)에서, 클라이언트 장치(114)는 제어 채널에 구독한다. 실시간 스트리밍 서비스를 통해 제공되는 여러 채널 중 하나일 수 있는 제어 채널은 미디어 스트림과 관련된 소스 또는 작성자를 나타낸다. 예를 들어, 실시간 스트리밍 서비스에서 이용 가능한 각 제어 채널은 스트림 소스와 연관되어 있으며, 주어진 시간에 스트리밍 서비스를 통해 하나 이상의 실시간 스트림을 제공한다.
블록(306)에서, 클라이언트 장치(114)는 블록(304)에서 선택된 제어 채널을 통해 이용가능한 특정 스트림에 구독다. 블록(306)은 예를 들어 클라이언트 장치(114)의 사용자가 채널을 통해 이용 가능한 스트림의 목록에서 원하는 스트림을 선택한 것에 응답하여 수행될 수 있다.
실시간 스트리밍 시스템의 플래시 크라우드 관리
스트리밍 서버(110)는 클라이언트가 실시간 스트림에 구독하게 하는 정의된 프로세스 내의 다중 단계 각각에서 비율을 모니터링함으로써 플래시 크라우드를 감지하고 리소스를 관리하여 플래시 크라우드의 영향을 완화한다. 일반적으로, 플래시 크라우드은 클라이언트 장치(114)가 실시간 스트림을 구독할 때 도 3과 관련하여 설명된 프로세스를 따른다는 관찰에 기초하여 검출되므로, 프로세스(300)의 각 단계와 연관된 행동이 들어오는 플래시 크라우드를 나타내는 점진적으로 더 강한 신호에 대응하게 된다.
도 4는 실시간 스트림으로 들어오는 플래시 크라우드를 검출하고 플래시 크라우드에 응답하기 위한 리소스를 관리하기 위한 프로세스(400)를 예시하는 흐름도이다. 도 4에 도시된 프로세스는 예를 들어, 스트리밍 서버(110)에 저장된 컴퓨터 프로그램 명령을 실행하기 위해 프로세서를 사용함으로써 스트리밍 서버(110)에 의해 실행될 수 있다. 프로세스의 하나 이상의 단계는 데이터 센터(210) 내의 컴퓨팅 장치와 같은, 일부 실시 예에서 스트리밍 서버(110) 이외의 장치에 의해 수행될 수 있다.
도 4에 도시된 바와 같이, 스트리밍 서버(110)는 블록(402)에서 클라이언트 장치(114)에 의해 이루어진 엔드포인트 선택을 검출한다. 스트리밍 서버(110)와 데이터 센터(210)의 엔드포인트 서버의 구성에 따라, 다양한 엔드포인트 선택 신호는 클라이언트가 주어진 엔드포인트과 통신하려는 시도를 나타낼 수 있다. 예를 들어, 스트리밍 서버(110)는 데이터 센터(210)를 통해 스트리밍을 시도하는 클라이언트의 수의 표시자로서 주어진 데이터 센터(210)에서 수신된 핑(ICMP 요청 패킷)의 수를 측정할 수 있다. 스트리밍 서버(110)에 의해 측정될 수 있는 다른 엔드포인트 선택 신호는 데이터 센터(210)를 통해 콘텐츠에 대한 액세스를 요청하는 클라이언트 장치(114)로부터 데이터 센터(210)에서 수신된 HTTP GET 요청의 수이다. 또 다른 예시적인 엔드포인트 선택 신호는 전송 제어 프로토콜(TCP) 연결 요청이 수신되는 비율 또는 TCP 연결이 설정되는 비율이다. 블록(402)에서 엔드포인트 선택을 검출할 때, 스트리밍 서버(110)는 엔드포인트 선택 신호 중 임의의 하나 또는 이러한 신호의 임의의 조합을 모니터링할 수 있다.
블록(404)에서, 스트리밍 서버(110)는 주어진 엔드포인트의 선택 비율이 임계 비율보다 큰지 여부를 결정한다. 일부 실시 예에서, 스트리밍 서버(110)는 엔드포인트 선택 신호에 의해 표시된 바와 같이, 지정된 시간 기간 내에 주어진 엔드포인트를 선택하는 다수의 클라이언트(114)의 변화의 비율에 기초하여 엔드포인트 선택 비율을 측정한다. 예를 들어, 스트리밍 서버(110)는 다음 수학식에 의해 시간 t에서 추정된 부하를 계산한다:
여기에서 MeasuredLoadt는 시간 t에서 엔드포인트 선택의 수의 측정값이고, MeasuredLoadt-1는 이전 시간에 여러 엔드포인트 선택에 대한 측정값이고, w는 구성 가능한 가중치 매개변수이다. 관리자는 가중치 매개변수 w를 정의하여 시간 t-1에서의 과거 부하 추정에 더 높은 가중치를 부여하거나 시간 t에서의 현재 부하 추정에 더 높은 가중치를 부여할 수 있다. 다른 실시 예에서, 스트리밍 서버(110)는 제1 시간에서의 엔드포인트 선택의 비율과 제2 시간에서의 엔드포인트 선택의 비율 사이의 변화에 기초하여 엔드포인트 선택 비율을 측정한다. 예를 들어, 스트리밍 서버(110)는 MeasuredLoadt로 시간 t에서 엔드포인트 선택의 변화 비율의 측정을 사용하고 MeasuredLoadt-1로 시간 t-1에서 엔드포인트 선택의 변화율을 사용하여, 위의 수학식을 적용한다. 추정되는 부하를 계산한 후, 엔드포인트 선택 수의 변화 비율이든 엔드포인트 선택 비율의 변화 비율이든, 스트리밍 서버(110)는 다음 방정식을 사용하여 엔드포인트 선택 비율의 추정된 이동 표준 편차(EMSD)를 계산할 수 있다:
블록(404)에서 엔드포인트의 선택 비율이 임계 비율보다 큰지 여부를 결정할 때, 스트리밍 서버(110)는 엔드포인트 선택 비율의 다양한 측정치 중 임의의 것을 임계 비율과 비교할 수 있다. 스트리밍 서버(110)의 실시 예는 임계 비율을, 예를 들어, 추정된 이동 표준 편차, 시간 t에서의 추정된 부하, 엔드포인트 선택 신호의 값과 비교한다. 또한, 스트리밍 서버(110)가 엔드포인트 선택률을 비교하는 임계값은 예를 들어 사용 가능한 리소스 또는 예상 스트림 구독의 수량을 기반으로 하여 스트리밍 시스템(100)의 관리자가 설정 가능한 매개변수일 수 있다. 그러나 어떤 경우에는, 임계값은 들어오는 플래시 크라우드를 나타내는 엔드포인트 선택 비율을 예측하기 위해 실시간 스트리밍 트래픽의 과거 관찰을 사용하여 기계 학습 모델을 훈련함으로써 선택된 값이다.
스트리밍 서버(110)가 블록(404)에서 엔드포인트 선택의 비율이 임계값보다 작다고 결정하면, 스트리밍 서버(110)는 임계값 초과 비율이 검출될 때까지 엔드포인트 선택을 계속 모니터링한다. 대신에 임계값이 블록(404)에서 초과된 경우, 엔드포인트 선택의 비율이 주어지면, 스트리밍 서버(110)는 블록(406)에서 충분한 수량의 컴퓨팅 리소스가 유입되는 스트림 요청을 처리하는 데 현재 이용 가능한지를 결정한다. 예를 들어, 스트리밍 서버(110)는 엔드포인트에 배치된 컨테이너 또는 가상 머신의 수가 (예: 엔드포인트를 통한 트래픽의 이전 증가에 대한 응답으로) 기준 수인지 또는 기준 이상으로 추가 리소스가 이미 배포되었는지 결정한다.
구성된 컴퓨팅 리소스가 블록(406)에서 불충분하다고 결정되면, 스트리밍 서버(110)는 블록(408)에서 추가 리소스를 프로비저닝하거나, 요청 처리를 느리게 하거나, 또는 둘 모두를 제공한다. 리소스를 프로비저닝하는 것은 예를 들어 추가로 들어오는 스트리밍 요청을 처리하기 위해 데이터 센터(210)에서 사용 가능한 하드웨어에 추가 컨테이너 또는 가상 머신을 배포하는 것을 포함할 수 있다. 채널 구독을 느리게 하기 위해 스트리밍 서버(110)는 예를 들어 각각의 요청 또는 요청의 하위 집합에 응답하기 전에 인공적인 레이턴시를 삽입하거나, 클라이언트(114)가 나중에 재접속을 시도하게 하기 위해 요청의 하위집합을 거부할 수 있다.
블록(408)에서 리소스를 프로비저닝하거나 블록(406)에서 이용 가능한 리소스가 충분한지 결정한 후, 스트리밍 서버(110)는 블록(410)에서 엔드포인트에서 채널 구독을 모니터링한다. 채널 구독 요청의 비율, 채널 구독 요청 큐 길이 또는 전송 세션 요청 비율과 같은 다양한 채널 구독 신호가 스트리밍 서버(110)에 의해 측정될 수 있다. 엔드포인트 선택 신호와 마찬가지로, 스트리밍 서버(110)는 하나 이상의 채널 구독 신호를 개별적으로 모니터링할 수 있거나, 다중 채널 구독 신호를 결합하여 채널 구독 비율을 결정할 수 있다.
블록(412)에서, 스트리밍 서버(110)는 엔드포인트에서 제1 채널에 대한 구독 비율이 임계 비율보다 큰지 여부를 결정한다. 엔드포인트 선택 비율과 마찬가지로, 채널 구독 비율은 다양한 실시 예에서 예를 들어, 위에 제공된 추정 하중 및 추정 이동 표준 편차 방정식을 사용하여, 특정 채널에 구독한 다수의 클라이언트(114)의 수의 변화율 또는 제 1 시간의 채널 구독 비율과 제 2 시간의 채널 구독 비율 사이의 변경으로서 측정될 수 있다. 비슷하게, 채널 구독 비율이 비교되는 임계값은 일부 실시 예에서 구성 가능한 매개변수이며, 이용 가능한 리소스 또는 예상 스트림 구독과 같은 요인에 기초하여 관리자에 의해 설정된다. 임계값은 대신 들어오는 플래시 크라우드를 나타내는 구독 비율을 예측하도록 훈련된 기계 학습 모델을 적용하여 설정할 수 있다.
블록(412)에서 제1 채널에 대한 채널 구독률이 임계값을 초과하는 것으로 결정되면, 스트리밍 서버(110)는 블록(414)에서 컴퓨팅 리소스가 충분한지 여부를 결정한다. 예를 들어, 스트리밍 서버(110)는 제1 채널로부터 콘텐츠를 제공하도록 현재 할당된 가상 머신 또는 컨테이너의 용량을 결정하고, 용량을 미리 구성된 임계값과 비교하여 인커밍 채널 구독 요청의 비율에 기초하여 용량이 충분한지 여부를 결정한다.
리소스가 부족하다고 판단되면, 블록(416)에서 스트리밍 서버(110)는 블록(408)에서 프로비저닝된 리소스 일부나 전부를 구성하거나, 구독 처리를 늦추거나, 또는 둘 모두를 행할 수 있다. 리소스 구성은 제 1 채널의 채널 서버에 새로 프로비저닝된 리소스를 할당하는 것 뿐만 아니라, 리소스가 제1 채널에서 클라이언트 장치(114)로 콘텐츠를 스트리밍할 수 있게 하는 설정, 네트워크 매개변수, 또는 기타 리소스의 측면을 구성하는 것을 포함한다.
블록(416)에서 리소스를 구성하거나 블록(414)에서 이용 가능한 리소스가 충분한지 결정한 후, 스트리밍 서버(110)는 엔드포인트에서 특정 스트림에 대한 구독을 모니터링한다. 스트리밍 서버(110)에 의해 측정되는 스트림 구독 신호는, 예를 들어, 스트림 구독 요청의 도달 비율, 스트림 구독 요청 큐 길이, 또는 전송 세션 요청 비율을 포함한다. 이들 또는 다른 스트림 구독 신호는 스트리밍 서버(110)가 실시간 스트림에 대한 구독 비율을 결정할 때 개별적으로 또는 조합하여 모니터링될 수 있다.
블록(420)에서, 스트리밍 서버(110)는 엔드포인트에서 제1 스트림에 대한 구독 비율이 임계 비율보다 큰지 여부를 결정한다. 제1 스트림에 대한 구독 비율은 다양한 실시 예에서 제1 스트림에 구독하는 클라이언트(114)의 수의 변화 비율 또는 제 1 시간에서의 스트림 구독 비율과 제 2 시간에서의 스트림 구독 비율 사이의 변화로서 측정될 수 있다. 상술된 엔드포인트 선택 및 채널 구독 비율에 적용되는 임계값과 마찬가지로, 스트림 구독 비율과 비교되는 임계값은 관리자가 정의한 매개변수일 수도 있고, 훈련된 머신 러닝 모델을 적용하여 스트리밍 서버(110)에서 자동으로 선택되는 임계값일 수도 있다.
제 1 스트림에 대한 구독 비율이 임계값보다 크면, 스트리밍 서버(110)는 블록(422)에서 스트리밍을 처리하기 위해 현재 배치된 리소스가 충분한지 여부를 결정한다. 리소스가 충분하지 않은 경우, 스트리밍 서버(110)는 블록(424)에서 리소스를 조정하고, 구독 처리를 늦추고, 또는 둘 다를 행한다. 리소스의 조정은 리소스 간의 트래픽 균형을 조정하고 실시간 스트림의 전달을 동기화하기 위해 새로 구성된 리소스와 기존 리소스를 구성하는 작업을 포함할 수 있다.
프로세스(400)의 일부 실시 예에서, 스트리밍 서버(110)는 들어오는 플래시 크라우드가 새로운 리소스가 배포될 수 있는 비율보다 더 빠른 비율로 증가하고 있거나 각 엔드포인트에서 사용 가능한 유한 리소스에 비해 너무 클 때를 식별하기 위해 더 높은 임계값을 추가로 사용한다. 추가 임계값은 블록(404, 412, 420) 중 일부 또는 전체에 적용될 수 있으며 관리자에 의해 수동으로 설정되거나 스트리밍 서버(110)에 의해 자동으로 설정될 수 있다. 엔드포인트 선택, 채널 구독 또는 스트림 구독의 비율이 해당 추가 임계값을 초과하는 경우, 스트리밍 서버(110)는 스트림 구독의 수가 엔드포인트에서 사용 가능한 리소스의 용량을 초과할 가능성이 있다고 결정할 수 있고 위협이 지나갈 때까지 새로운 선택 또는 구독의 처리를 늦추거나 중지하는 절차를 구현할 수 있다.
프로세스(400) 내의 다양한 지점 중 임의의 지점에서, 스트리밍 서버(110)의 실시 예는 서버(110)가 스트리밍 트래픽이 느려졌다고 검출하는 경우 불필요한 리소스를 양도하거나 용도 변경할 것인지 결정할 수 있다. 예를 들어, 스트리밍 서버(110)가 엔드포인트 선택의 임계값 초과 비율을 검출한 후 블록(408)에서 추가 리소스를 프로비저닝하지만 이후에 플래시 크라우드 이벤트가 발생하지 않았음을 결정하는 경우, 스트리밍 서버(110)는 프로비저닝된 리소스를 분해할 수 있다. 또는 스트리밍 서버(110)가 스트림 구독의 유입을 관리하기 위해 리소스를 구성 및 조정하는 경우, 서버(110)는 충분한 클라이언트가 스트림에서 연결 해제된 후에 리소스를 분해하거나 용도 변경할 수 있다.
도 4와 관련하여 설명된 플래시 이벤트 검출 프로세스는 스트리밍 서버(110)가 트래픽 피크 전에 들어오는 플래시 크라우드를 검출하는 것을 가능하게 한다. 조기 감지를 통해, 스트리밍 서버(110)는 클라이언트가 스트림에 연결을 시도하기 전에 트래픽 유입을 처리하도록 컴퓨팅 리소스를 프로비저닝 및 구성할 수 있다. 따라서 스트리밍 서버(110)에 의해 제공되는 스트리밍 서비스는 플래시 크라우드 이벤트와 관련된 갑작스러운 트래픽 증가에 더 강하여, 서비스가 초과되거나 스트림의 실시간 상호 작용이 손상될 가능성을 줄일 수 있다.
처리 시스템의 예
도 5는 본 명세서에서 설명된 적어도 일부 동작들이 구현될 수 있는 프로세싱 시스템의 예를 예시하는 블록도이다. 처리 시스템은 상술된 방법/알고리즘 중 임의의 것을 실행할 수 있는 시스템을 나타내는 처리 장치(500)일 수 있다. 예를 들어, 스트리밍 서버(110), 클라이언트 장치(114), 또는 엔드포인트와 연관된 컴퓨팅 장치 중 임의의 것이 처리 시스템(500)으로서 구현될 수 있다. 시스템은 네트워크 또는 다중 네트워크를 통해 서로 결합될 수 있는, 도 5에 나타낸 바와 같은 2개 이상의 처리 장치를 포함할 수 있다. 네트워크는 통신 네트워크라고 할 수 있다.
예시된 실시 예에서, 처리 장치(500)는 하나 이상의 프로세서(502), 메모리(504), 통신 장치(506), 및 하나 이상의 입/출력(I/O) 장치(508)를 포함하고, 이들 모두는 상호접속(510)을 통해 서로 결합된다. 인터커넥트(510)는 하나 이상의 전도성 트레이스, 버스, 포인트-투-포인트 연결, 컨트롤러, 어댑터 및/또는 다른 종래의 연결 장치이거나 이를 포함할 수 있다. 프로세서(502) 각각은, 예를 들어, 하나 이상의 범용 프로그램 가능 마이크로프로세서 또는 마이크로프로세서 코어, 마이크로컨트롤러, 주문형 집적 회로(ASIC), 프로그램 가능 게이트 어레이 등, 또는 이러한 장치의 조합이거나 이를 포함할 수 있다.
프로세서(들)(502)는 처리 장치(500)의 전체 동작을 제어한다. 메모리(504)는 랜덤 액세스 메모리(RAM), 읽기 전용 메모리(ROM)(소거 가능 프로그래머블), 플래시 메모리, 미니어처 하드 디스크 드라이브 또는 기타 적절한 유형의 저장 장치 형태, 또는 이들 장치의 조합일 수 있는, 하나 이상의 물리적 저장 장치이거나 이를 포함한 것일 수 있다. 메모리(504)는 위에서 설명된 기술에 따라 동작을 실행하도록 프로세서(들)(502)를 구성하는 명령어 및 데이터를 저장할 수 있다. 통신 장치(506)는 예를 들어 이더넷 어댑터, 케이블 모뎀, Wi-Fi 어댑터, 셀룰러 트랜시버, 블루투스 트랜시버 등, 또는 이들의 조합일 수 있거나 이를 포함한 것일 수 있다. 처리 장치(500)의 특정 특성 및 목적에 따라, I/O 장치(508)는 디스플레이(터치 스크린 디스플레이일 수 있음), 오디오 스피커, 키보드, 마우스 또는 기타 포인팅 장치, 마이크, 카메라 등와 같은 장치를 포함할 수 있다.
프로세스 또는 블록이 주어진 순서로 제시되는 반면, 대안적인 실시 예는 단계가 있는 루틴을 수행하거나, 블록을 갖는 시스템을 다른 순서로 사용할 수 있으며, 일부 프로세스 또는 블록은 삭제, 이동, 추가, 세분화, 결합 및/또는 수정되어 대안 또는 하위 조합을 제공하거나, 복제(예: 여러 번 수행)될 수 있다. 이러한 프로세스 또는 블록 각각은 다양한 방식으로 구현될 수 있다. 또한, 프로세스 또는 블록이 직렬로 수행되는 것으로 표시되는 경우가 있지만, 이러한 프로세스 또는 블록은 대신 병렬로 수행되거나 다른 시간에 수행될 수 있다. 프로세스 또는 단계가 값 또는 계산을 "기반으로"하는 경우, 프로세스 또는 단계는 적어도 해당 값 또는 해당 계산을 기반으로 하는 것으로 해석되어야 한다.
본 명세서에서 소개된 기술을 구현하기 위한 소프트웨어 또는 펌웨어는 기계 판독 가능 저장 매체에 저장될 수 있고 하나 이상의 범용 또는 특수 목적 프로그래밍 가능 마이크로프로세서에 의해 실행될 수 있다. 본 명세서에서 사용된 용어 "기계 판독 가능 매체"는 기계가 액세스할 수 있는 형식으로 정보를 저장할 수 있는 모든 메커니즘을 포함한다(기계는 예를 들어 컴퓨터, 네트워크 장치, 휴대폰, 개인 휴대 정보 단말기(PDA), 제조 도구, 하나 이상의 프로세서가 있는 장치 등일 수 있다). 예를 들어, 기계 접근 가능 매체는 기록 가능/비기록 매체(예: 읽기 전용 메모리(ROM), 랜덤 액세스 메모리(RAM), 자기 디스크 저장 매체, 광 저장 매체, 플래시 메모리 장치) 등을 포함한다.
상술된 실시 예의 일부 및 모두는, 상기와 다르게 언급될 수 있는 정도나 임의의 실시 예가 기능 및/또는 구조에서 상호 배타적일 수 있는 정도를 제외하고, 서로 결합될 수 있다는 점에 유의한다. 본 발명이 특정 예시적인 실시 예를 참조하여 설명되었지만, 본 발명은 설명된 실시 예로 제한되지 않고 개시된 실시 예의 사상 및 범위 내에서 수정 및 변경으로 실시될 수 있음이 인식될 것이다. 따라서, 본 명세서 및 도면은 제한적인 의미가 아니라 예시적인 의미로 간주되어야 한다.
프로세싱 장치(500)와 연관된 물리적 및 기능적 구성요소(예를 들어, 장치, 엔진, 모듈, 및 데이터 저장소)는 회로, 펌웨어, 소프트웨어, 기타 실행 가능한 명령어, 또는 이들의 임의의 조합으로서 구현될 수 있다. 예를 들어 기능 구성 요소는 특수 목적 회로의 형태로, 하나 이상의 적절하게 프로그래밍된 프로세서, 단일 보드 칩, 필드 프로그래밍 가능 게이트 어레이, 실행 가능한 명령어로 구성된 범용 컴퓨팅 장치, 실행 가능한 명령어로 구성된 가상 머신, 실행 가능한 명령어로 구성된 클라우드 컴퓨팅 환경, 또는 이들의 임의의 조합의 형태로 구현될 수 있다. 예를 들어, 설명된 기능적 구성요소는 프로세서 또는 기타 집적 회로 칩에 의해 실행될 수 있는 유형의 스토리지 메모리에 대한 명령으로 구현될 수 있다. 유형의 스토리지 메모리는 컴퓨터 판독 가능한 데이터 스토리지일 수 있다. 유형의 스토리지 메모리는 휘발성 또는 비휘발성 메모리일 수 있다. 일부 실시 예에서, 휘발성 메모리는 일시적인 신호가 아니라는 점에서 "비일시적"인 것으로 간주될 수 있다. 도면에 설명된 메모리 공간 및 스토리지는 휘발성 또는 비휘발성 메모리를 포함하는 유형의 스토리지 메모리로도 구현될 수 있다.
각각의 기능적 구성요소는 다른 기능적 구성요소와 개별적으로 그리고 독립적으로 동작할 수 있다. 일부 또는 모든 기능 구성 요소는 동일한 호스트 장치 또는 별도의 장치에서 실행될 수 있다. 별도의 장치는 하나 이상의 통신 채널(예: 무선 또는 유선 채널)을 통해 연결되어 작동을 조정할 수 있다. 기능적 구성요소의 일부 또는 전부는 하나의 구성요소로 결합될 수 있다. 단일 기능 구성요소는 하위 구성요소로 분할될 수 있으며, 각 하위 구성요소는 단일 구성요소의 개별 방법 단계 또는 방법 단계를 수행한다.
일부 실시 예에서, 기능적 구성요소 중 적어도 일부는 메모리 공간에 대한 액세스를 공유한다. 예를 들어, 하나의 기능적 구성요소는 다른 기능적 구성요소에 의해 액세스되거나 변환된 데이터에 액세스할 수 있다. 기능 구성 요소는 물리적 연결 또는 가상 연결을 직접 또는 간접적으로 공유하여 한 기능 구성 요소에서 액세스하거나 수정한 데이터를 다른 기능 구성 요소에서 액세스할 수 있도록 하는 경우 서로 "결합"된 것으로 간주될 수 있다. 일부 실시 예에서, 기능적 구성요소의 적어도 일부는 (예: 기능 구성요소의 일부를 구현하는 실행 가능한 명령어를 재구성함으로써) 원격으로 업그레이드 또는 수정될 수 있다. 위에서 설명된 다른 어레이, 시스템 및 장치는 다양한 애플리케이션을 위한 추가, 더 적거나 또는 다른 기능 구성요소를 포함할 수 있다.
개시된 실시 예의 측면은 메모리에 저장된 데이터 비트에 대한 연산의 알고리즘 및 기호 표현의 관점에서 설명될 수 있다. 이러한 알고리즘 설명 및 기호 표현에는 일반적으로 원하는 결과로 이어지는 일련의 작업이 포함된다. 동작에는 물리량의 물리적 조작이 필요한다. 일반적으로 반드시 그런 것은 아니지만, 이러한 양은 저장, 전송, 결합, 비교 및 기타 조작이 가능한 전기 또는 자기 신호의 형태를 취한다. 관례적으로, 그리고 편의상, 이러한 신호는 비트, 값, 요소, 기호, 문자, 용어, 숫자 등으로 지칭된다. 이러한 용어 및 유사한 용어는 물리량과 관련되며 이러한 양에 적용되는 편리한 레이블일 뿐이다.
실시 예가 완전히 기능하는 컴퓨터의 맥락에서 설명되었지만, 당업자라면, 실시 예에 실제로 영향을 미치기 위해 사용되는 특정 유형의 기계 또는 컴퓨터 판독 가능 매체에 관계없이 다양한 실시 예가 다양한 형태의 프로그램 제품으로서 배포될 수 있고 본 개시가 동등하게 적용된다는 것을 이해할 것이다.
상기로부터, 본 발명의 특정 실시 예가 예시의 목적으로 본 명세서에 기술되었지만, 본 발명의 범위를 벗어나지 않고 다양한 수정이 이루어질 수 있다는 것이 이해될 것이다. 따라서, 본 발명은 첨부된 청구범위에 의한 경우를 제외하고는 제한되지 않는다.
Claims (20)
- 방법으로서,
컴퓨터 시스템에 의해, 실시간 콘텐츠 스트림을 스트리밍하기 위해 엔드포인트 서버 클러스터에서 제1 수량의 컴퓨팅 리소스를 구성하는 단계;
상기 컴퓨터 시스템에 의해, 클라이언트 장치에 의한 상기 엔드포인트 서버 클러스터에 연결하기 위한 요청의 제1 비율을 결정하는 단계;
상기 엔드포인트 서버 클러스터에 연결하기 위한 상기 요청의 상기 제1 비율이 제1 임계값보다 크다고 결정하는 것에 응답하여, 상기 컴퓨터 시스템에 의해, 상기 엔드포인트 서버 클러스터에서 제2 수량의 컴퓨팅 리소스를 프로비저닝하는 단계;
상기 컴퓨터 시스템에 의해, 상기 클라이언트 장치에 의한 상기 엔드포인트 서버 클러스터에서의 제어 채널에 대한 구독을 모니터링하는 단계 - 상기 구독은 상기 엔드포인트 서버 클러스터에 연결하기 위한 상기 요청에 기초함 - ;
상기 컴퓨터 시스템에 의해, 상기 엔드포인트 서버 클러스터에서 상기 제어 채널에 대한 상기 구독의 제2 비율을 결정하는 단계; 및
상기 제어 채널에 대한 상기 구독의 상기 제2 비율이 제2 임계값보다 크다는 결정에 응답하여, 상기 컴퓨터 시스템에 의해, 상기 실시간 콘텐츠 스트림을 상기 클라이언트 장치 중 하나 이상으로 스트리밍하기 위해 상기 프로비저닝된 컴퓨팅 리소스를 구성하는 단계
를 포함하는, 방법. - 제 1 항에 있어서, 상기 클라이언트 장치에 의한 상기 요청 비율을 결정하는 단계는:
상기 클라이언트 장치로부터 상기 엔드포인트 서버 클러스터에 수신된 인터넷 컨트롤 메시지 프로토콜(ICMP) 패킷의 수,
상기 클라이언트 장치에서 상기 엔드포인트 서버 클러스터에 수신된 하이퍼텍스트 전송 프로토콜(HTTP) GET 요청의 수, 또는
상기 클라이언트 장치로부터 상기 엔드포인트 서버 클러스터에서 수신된 전송 제어 프로토콜(TCP) 연결 요청의 수
중 적어도 하나에 기초하여 상기 클라이언트 장치에 의한 상기 엔드포인트에 연결하기 위한 상기 요청을 감지하는 단계를 포함하는, 방법. - 제 1 항에 있어서, 상기 클라이언트 장치에 의한 상기 구독의 상기 비율을 결정하는 단계는:
상기 클라이언트 장치에 의한 상기 제어 채널에 대한 상기 구독을 모니터링하는 단계; 및
상기 제어 채널과 관련된 채널 구독 요청의 비율,
상기 제어 채널과 관련된 채널 구독 요청 큐 길이, 또는
상기 제어 채널과 관련된 전송 세션 요청의 비율
중 하나 이상을 감지하는 단계
를 포함하는, 방법. - 제 1 항에 있어서,
상기 컴퓨터 시스템에 의해, 클라이언트 장치에 의한 상기 제어 채널 상의 상기 실시간 콘텐츠 스트림에 대한 구독을 모니터링하는 단계; 및
상기 실시간 스트림에 대한 상기 구독의 제3 비율이 제3 임계값보다 크다는 결정에 응답하여, 상기 클라이언트 장치에 상기 실시간 콘텐츠 스트림을 전달하기 위해 상기 제1 수량의 컴퓨팅 리소스 및 상기 제 2 수량의 컴퓨팅 리소스를 조정하는 단계
를 포함하는, 방법. - 제 4 항에 있어서, 상기 클라이언트 장치에 의한 상기 제어 채널 상의 상기 실시간 콘텐츠 스트림에 대한 상기 구독을 모니터링하는 단계는:
상기 실시간 콘텐츠 스트림과 관련된 스트림 구독 요청의 비율,
상기 실시간 콘텐츠 스트림과 관련된 스트림 구독 요청 큐 길이, 또는
상기 실시간 콘텐츠 스트림과 관련된 전송 세션 요청의 비율
중 적어도 하나를 감지하는 단계를 포함하는, 방법. - 제 1 항에 있어서,
상기 엔드포인트 서버 클러스터에 연결하기 위한 상기 요청의 상기 제1 비율이 제3 임계값보다 크다는 결정에 응답하여, 상기 엔드포인트 서버 클러스터에 연결하기 위한 상기 요청의 처리를 늦추는 단계를 더 포함하는, 방법. - 제 1 항에 있어서, 상기 제어 채널에 대한 상기 구독의 상기 제 2 비율이 제3 임계값보다 크다는 결정에 응답하여, 상기 엔드포인트 서버 클러스터에 구독하기 위한 상기 요청의 처리를 늦추는 단계
를 더 포함하는, 방법. - 실행 가능한 컴퓨터 프로그램 명령을 저장하는 비일시적 컴퓨터 판독 가능 저장 매체에 있어서, 상기 컴퓨터 프로그램 명령은 상기 프로세서에 의해 실행될 때 상기 프로세서로 하여금:
실시간 콘텐츠 스트림을 스트리밍하기 위해 엔드포인트 서버 클러스터에서 제 1 수량의 컴퓨팅 리소스를 구성하고;
상기 엔드포인트 서버 클러스터에 연결하기 위해 클라이언트 장치에 의한 요청의 제1 비율을 결정하고;
상기 엔드포인트 서버 클러스터에 연결하기 위한 상기 요청의 상기 제1 비율이 제1 임계값보다 크다고 결정하는 것에 응답하여, 상기 엔드포인트 서버 클러스터에서 제 2 수량의 컴퓨팅 리소스를 프로비저닝하고;
상기 엔드포인트 서버 클러스터에서 상기 클라이언트 장치에 의한 제어 채널에 대한 구독을 모니터링하고 - 상기 구독은 상기 엔드포인트 서버 클러스터에 연결하기 위한 상기 요청에 기초함 - ;
상기 엔드포인트 서버 클러스터에서 상기 제어 채널에 대한 상기 구독의 제2 비율을 결정하고; 및
상기 제어 채널에 대한 상기 구독의 상기 제2 비율이 제2 임계값보다 크다는 결정에 응답하여, 상기 실시간 콘텐츠 스트림을 상기 클라이언트 장치 중 하나 이상으로 스트리밍하기 위해 상기 프로비저닝된 컴퓨팅 리소스를 구성하도록
하는, 비일시적 컴퓨터 판독 가능 저장 매체. - 제 8 항에 있어서, 상기 컴퓨터 프로그램 명령은 상기 프로세서로 하여금 더욱:
상기 클라이언트 장치에 의한 상기 제어 채널 상에서 상기 실시간 콘텐츠 스트림에 대한 구독을 모니터링하고;
상기 실시간 스트림에 대한 상기 구독의 제3 비율이 제3 임계값보다 크다는 결정에 응답하여, 상기 클라이언트 장치에 상기 실시간 콘텐츠 스트림을 전달하기 위해 상기 제 1 수량의 컴퓨팅 리소스 및 상기 제 2 수량의 컴퓨팅 리소스를 조정하도록
하는, 비일시적 컴퓨터 판독 가능 저장 매체. - 제 8 항에 있어서, 상기 컴퓨터 프로그램 명령은 상기 프로세서로 하여금 더욱:
상기 엔드포인트 서버 클러스터에 연결하기 위한 상기 요청의 상기 제1 비율이 제3 임계값보다 크다는 결정에 응답하여, 상기 엔드포인트 서버 클러스터에 연결하기 위한 상기 요청의 처리를 늦추도록 하는, 비일시적 컴퓨터 판독 가능 저장 매체. - 제 8 항에 있어서, 상기 컴퓨터 프로그램 명령은 상기 프로세서로 하여금 더욱:
상기 제어 채널에 대한 상기 구독의 상기 제2 비율이 제3 임계값보다 크다는 결정에 응답하여, 상기 엔드포인트 서버 클러스터에 구독하기 위한 상기 요청의 처리르 늦추도록 하는, 비일시적 컴퓨터 판독 가능 저장 매체. - 실시간 스트리밍 시스템에 있어서,
실시간 콘텐츠 스트림을 클라이언트 장치로 스트리밍하도록 구성된 제1 컴퓨팅 리소스를 포함하는 엔드포인트 서버 클러스터; 및
상기 엔드포인트 서버 클러스터에 통신 가능하게 연결되며:
상기 엔드포인트 서버 클러스터로부터 상기 실시간 콘텐츠 스트림에 액세스하기 위해 다단계 프로세스 동안 복수의 클라이언트 장치에 의한 동작을 감지하고;
상기 복수의 클라이언트 장치가 상기 다단계 프로세스의 제1 단계와 연관된 동작을 수행하는 비율에 기초하여 상기 엔드포인트 서버 클러스터에서 상기 제1 컴퓨팅 리소스와 상이한 제2 컴퓨팅 리소스를 프로비저닝하고;
상기 복수의 클라이언트 장치가 상기 다단계 프로세스의 제2 단계와 연관된 동작을 수행하는 비율에 기초하여 상기 실시간 콘텐츠 스트림을 스트리밍하도록 상기 엔드포인트 서버 클러스터에서 상기 프로비저닝된 제2 컴퓨팅 리소스를 구성하도록
구성된 스트리밍 서버
를 포함하는, 실시간 스트리밍 시스템. - 제 12 항에 있어서,
상기 다단계 프로세스의 상기 제 1 단계와 관련된 상기 동작은 클라이언트 장치와 상기 엔드포인트 서버 클러스터 간의 연결을 설정하는 단계를 포함하고,
상기 스트리밍 서버는 엔드포인트 선택 신호를 사용하여 상기 제1 단계와 연관된 상기 동작을 상기 복수의 클라이언트 장치가 수행하는 상기 비율을 측정하도록 구성되는, 실시간 스트리밍 시스템. - 제 13 항에 있어서, 상기 엔드포인트 선택 신호는:
상기 클라이언트 장치에서 상기 엔드포인트 서버 클러스터에 수신된 인터넷 제어 메시지 프로토콜(ICMP) 패킷의 수,
상기 클라이언트 장치로부터 상기 엔드포인트 서버 클러스터에서 수신된 하이퍼텍스트 전송 프로토콜(HTTP) GET 요청의 수, 또는
상기 클라이언트 장치에서 상기 엔드포인트 서버 클러스터에서 수신된 전송 제어 프로토콜(TCP) 연결 요청의 수
중 적어도 하나를 포함하는, 실시간 스트리밍 시스템. - 제 12 항에 있어서, 상기 다단계 프로세스의 상기 제 2 단계와 관련된 상기 동작은 제어 채널에 대한 액세스를 요청하는 단계를 포함하고, 상기 스트리밍 서버는 채널 구독 신호를 사용하여 상기 제2 단계와 연관된 상기 동작을 상기 복수의 클라이언트 장치가 수행하는 상기 비율을 측정하도록 구성되는, 실시간 스트리밍 시스템.
- 제 15 항에 있어서, 상기 채널 구독 신호는:
상기 제어 채널과 관련된 채널 구독 요청의 비율,
상기 제어 채널과 관련된 채널 구독 요청 큐 길이, 또는
상기 제어 채널과 관련된 전송 세션 요청의 비율
중 적어도 하나를 포함하는, 실시간 스트리밍 시스템. - 제 12 항에 있어서, 상기 스트리밍 서버는:
상기 복수의 클라이언트 장치가 상기 다단계 프로세스의 제 3 단계와 관련된 동작을 수행하는 비율에 기반하여 상기 실시간 콘텐츠 스트림을 하나 이상의 클라이언트 장치에 전달하기 위해 상기 제1 컴퓨팅 리소스와 상기 제2 컴퓨팅 리소스를 조정하는, 실시간 스트리밍 시스템. - 제 17 항에 있어서, 상기 다단계 프로세스의 상기 제 3 단계와 관련된 상기 동작은 상기 실시간 콘텐츠 스트림에 대한 구독을 요청하는 단계를 포함하고,
상기 스트리밍 서버는 스트림 구독 신호를 사용하여 상기 제3 단계와 연관된 상기 동작에 의해 상기 복수의 클라이언트 장치가 수행하는 상기 비율을 측정하도록 구성되는, 실시간 스트리밍 시스템. - 제 18 항에 있어서, 상기 스트림 구독 신호는:
상기 실시간 콘텐츠 스트림과 관련된 스트림 구독 요청 비율,
상기 실시간 콘텐츠 스트림과 관련된 스트림 구독 요청 큐 길이, 또는
상기 실시간 콘텐츠 스트림과 관련된 전송 세션 요청의 비율
중 적어도 하나를 포함하는, 실시간 스트리밍 시스템. - 제 12 항에 있어서, 상기 스트리밍 서버는:
상기 복수의 클라이언트 장치가 상기 다단계 프로세스의 상기 제 1 단계와 관련된 상기 동작을 수행하는 상기 비율이 임계값보다 크다고 결정하는 것에 응답하여, 상기 제 1 단계를 수행하기 위한 요청의 처리를 늦추도록 더욱 구성되는, 실시간 스트리밍 시스템.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202062960534P | 2020-01-13 | 2020-01-13 | |
US62/960,534 | 2020-01-13 | ||
PCT/US2021/013242 WO2021146288A1 (en) | 2020-01-13 | 2021-01-13 | Flash crowd management in real-time streaming |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20220128396A true KR20220128396A (ko) | 2022-09-20 |
Family
ID=76763441
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020227027852A KR20220128396A (ko) | 2020-01-13 | 2021-01-13 | 실시간 스트리밍시의 플래시 크라우드 관리 |
Country Status (7)
Country | Link |
---|---|
US (2) | US11451483B2 (ko) |
EP (1) | EP4091330A4 (ko) |
JP (1) | JP2023517270A (ko) |
KR (1) | KR20220128396A (ko) |
AU (1) | AU2021207610A1 (ko) |
CA (1) | CA3167440A1 (ko) |
WO (1) | WO2021146288A1 (ko) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7143883B2 (ja) * | 2018-06-13 | 2022-09-29 | 日本電気株式会社 | 対象物数推定システム、対象物数推定方法、及びプログラム |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8429287B2 (en) | 2009-04-29 | 2013-04-23 | Rangecast Technologies, Llc | Network audio distribution system and method |
US20130272121A1 (en) * | 2012-04-17 | 2013-10-17 | Cygnus Broadband, Inc. | Systems and methods for application-aware admission control in a communication network |
-
2021
- 2021-01-13 JP JP2022542332A patent/JP2023517270A/ja active Pending
- 2021-01-13 CA CA3167440A patent/CA3167440A1/en active Pending
- 2021-01-13 US US17/147,856 patent/US11451483B2/en active Active
- 2021-01-13 KR KR1020227027852A patent/KR20220128396A/ko unknown
- 2021-01-13 AU AU2021207610A patent/AU2021207610A1/en active Pending
- 2021-01-13 WO PCT/US2021/013242 patent/WO2021146288A1/en unknown
- 2021-01-13 EP EP21741367.3A patent/EP4091330A4/en active Pending
-
2022
- 2022-09-16 US US17/933,044 patent/US11736404B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
AU2021207610A1 (en) | 2022-07-28 |
EP4091330A4 (en) | 2023-07-19 |
WO2021146288A1 (en) | 2021-07-22 |
US11736404B2 (en) | 2023-08-22 |
US20230081769A1 (en) | 2023-03-16 |
EP4091330A1 (en) | 2022-11-23 |
CA3167440A1 (en) | 2021-07-22 |
JP2023517270A (ja) | 2023-04-25 |
US20210218681A1 (en) | 2021-07-15 |
US11451483B2 (en) | 2022-09-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3120523B1 (en) | Bandwidth management in a content distribution network | |
CN104394486B (zh) | 一种基于云桌面的视频流处理方法及装置 | |
US10291675B2 (en) | Methods and apparatus for proactive multi-path routing | |
US10659832B1 (en) | Dynamic bitrate selection for streaming media | |
TWI604728B (zh) | 使用對使用者設備節點之加權定義自加權公平佇列排程器的調節內容串流 | |
US9756361B2 (en) | On-demand load balancer and virtual live slicer server farm for program ingest | |
WO2020220902A1 (zh) | 视频资源的传输参数分发方法及装置 | |
US11089076B1 (en) | Automated detection of capacity for video streaming origin server | |
WO2012033766A1 (en) | Method and apparatus for adaptive bit rate switching | |
CN108881931B (zh) | 一种数据缓冲方法及网络设备 | |
CN106713936B (zh) | 直播视讯媒合方法与系统 | |
US11765217B1 (en) | Dynamic congestion control through real-time QOS monitoring in video streaming | |
US10673907B2 (en) | Systems and methods for providing DLNA streaming to client devices | |
EP3238453A1 (en) | Context aware media streaming technologies, devices, systems, and methods utilizing the same | |
EP3024225B1 (en) | System and method of video streaming | |
CN107920108A (zh) | 一种媒体资源的推送方法、客户端及服务器 | |
US11736404B2 (en) | Flash crowd management in real-time streaming | |
Nguyen et al. | An adaptive streaming method of 360 videos over HTTP/2 protocol | |
CN114245225B (zh) | 用于经由内容分发网络流式传输媒体数据的方法及系统 | |
US11997366B2 (en) | Method and apparatus for processing adaptive multi-view streaming | |
US11350160B1 (en) | Management of a client device buffer | |
US20230247244A1 (en) | Estimating video resolution delivered by an encrypted video stream | |
Pelayo | Bandwidth prediction for adaptive video streaming | |
US20240223832A1 (en) | Video stream bitrate adjustment method and apparatus, computer device, and storage medium | |
US11706469B2 (en) | Systems and methods for streaming media content during unavailability of content server |