KR102024637B1 - Open platform for live broadcast - Google Patents

Open platform for live broadcast Download PDF

Info

Publication number
KR102024637B1
KR102024637B1 KR1020170145200A KR20170145200A KR102024637B1 KR 102024637 B1 KR102024637 B1 KR 102024637B1 KR 1020170145200 A KR1020170145200 A KR 1020170145200A KR 20170145200 A KR20170145200 A KR 20170145200A KR 102024637 B1 KR102024637 B1 KR 102024637B1
Authority
KR
South Korea
Prior art keywords
server
pool
streaming data
broadcast
allocated
Prior art date
Application number
KR1020170145200A
Other languages
Korean (ko)
Other versions
KR20190050068A (en
Inventor
오재원
윤병조
박기영
양승관
노혜성
김종주
Original Assignee
네이버 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 네이버 주식회사 filed Critical 네이버 주식회사
Priority to KR1020170145200A priority Critical patent/KR102024637B1/en
Priority to PCT/KR2018/013152 priority patent/WO2019088721A1/en
Publication of KR20190050068A publication Critical patent/KR20190050068A/en
Application granted granted Critical
Publication of KR102024637B1 publication Critical patent/KR102024637B1/en

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/21Server components or server architectures
    • H04N21/218Source of audio or video content, e.g. local disk arrays
    • H04N21/2187Live feed
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/21Server components or server architectures
    • H04N21/222Secondary servers, e.g. proxy server, cable television Head-end
    • H04N21/2225Local VOD servers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/238Interfacing the downstream path of the transmission network, e.g. adapting the transmission rate of a video stream to network bandwidth; Processing of multiplex streams
    • H04N21/2385Channel allocation; Bandwidth allocation

Abstract

오픈형 생중계 플랫폼 기술을 제공한다. 본 발명의 실시예들에 따른 오픈형 생중계 플랫폼을 위한 시스템은 논리적 스트리밍 클라우드를 통해 실제로 방송의 송출이 발생하는 시점에 동적으로 리소스를 할당할 수 있다.It provides open live platform technology. The system for the open live platform according to the embodiments of the present invention may dynamically allocate resources at the time when the broadcast is actually broadcast through the logical streaming cloud.

Description

오픈형 생중계 플랫폼{OPEN PLATFORM FOR LIVE BROADCAST}OPEN PLATFORM FOR LIVE BROADCAST}

아래의 설명은 오픈형 생중계 플랫폼 기술에 관한 것으로, 보다 자세하게는 오픈형 생중계 플랫폼을 위한 시스템 및 상기 오픈형 생중계 플랫폼의 동작 방법에 관한 것이다.The following description relates to an open live platform technology, and more particularly, to a system for an open live platform and a method of operating the open live platform.

생중계는 실황을 동시적으로 중계 방송하는 일로서, 예를 들어, 한국공개특허 제10-2014-0115661호는 복수의 사용자 단말기에 양방향 현장 생중계 서비스를 제공하는 방법, 서버 및 시스템을 개시하고 있다.Live broadcasting is to broadcast a live broadcast simultaneously, for example, Korean Patent Laid-Open No. 10-2014-0115661 discloses a method, a server, and a system for providing an interactive live broadcast service to a plurality of user terminals.

또한, 누구나 방송국이 되어 영상을 송출할 수 있는 개인 방송 생중계 서비스와 같이, 방송의 송출을 원하는 다양한 송출자들과 송출자들의 생중계 방송들을 시청하고자 하는 다양한 시청자들을 중계하기 위한 생중계 플랫폼이 존재한다.In addition, there is a live broadcast platform for relaying various broadcasters who want to broadcast broadcasts and various viewers who want to watch live broadcasts of broadcasters, such as a personal broadcast live service, in which anyone can broadcast a video as a broadcast station.

이러한 종래기술의 생중계 플랫폼에서는 송출자들 각각이 각자의 스트리밍 데이터를 해당 송출자에게 할당된 중계 서버로 전송하고, 할당된 중계 서버는 수신한 스트리밍 데이터를 인코딩하여 시청자들에게 송출할 수 있다. 이를 위해, 생중계 플랫폼에서는 송출자들이 방송을 등록할 때, 송출자들을 위한 중계 서버를 할당해야 하며, 할당된 중계 서버를 위한 송출 주소를 송출자들에게 제공한다. 이 경우, 중계 서버는 송출 여부와 상관없이 방송 송출을 처리하기 위해 리소스가 할당된 상태로 준비되어 있어야만 한다. 그러나, 송출자들의 방송을 등록하여 중계 서버의 리소스를 점유하는 시간과 실제 송출자들의 방송이 송출되는 시간이 일치하지 않기 때문에, 실제 방송이 송출되지 않는 동안에도 방송이 등록된 중계 서버의 리소스가 해당 방송을 위해 할당되어 있는 자원이 낭비가 발생한다. 예를 들어, 10 대의 중계 서버가 각각 3개의 방송의 등록을 위해 할당될 수 있다고 가정하면, 등록 가능한 방송의 개수는 30개로 고정된다. 이때, 30 개의 방송들이 모두가 방송을 송출하고 있지 않다고 하더라도, 새로운 방송을 등록하기 위해서는 새로운 중계 서버가 요구된다.In such a live broadcast platform of the prior art, each sender transmits its own streaming data to the relay server assigned to the sender, the assigned relay server can encode the received streaming data and send it to the viewers. To this end, in a live relay platform, when a broadcaster registers a broadcast, the broadcast server must allocate a relay server for the broadcaster, and provide the broadcaster with a broadcast address for the assigned relay server. In this case, the relay server must be prepared with resources allocated to process broadcast transmission regardless of transmission. However, since the time at which the broadcasters register the broadcast and occupy the resources of the relay server does not coincide with the broadcast time of the broadcasters, the resources of the relay server to which the broadcast is registered are not displayed even while the broadcast is not being broadcast. The resources allocated for the broadcast are wasted. For example, assuming that 10 relay servers can be allocated for registration of 3 broadcasts, the number of broadcasts that can be registered is fixed to 30. At this time, even if all 30 broadcasts are not transmitting broadcasts, a new relay server is required to register a new broadcast.

또한, 중계 서버들에 할당된 방송들에 대한 정보들을 중앙에서 별도로 계속 관리해줘야만 하기 때문에 시스템 전반을 관리하기 위한 부담이 크다는 문제점이 있다.In addition, since information on broadcasts allocated to the relay servers must be continuously maintained separately from the center, there is a problem in that the burden for managing the entire system is large.

이러한 종래기술의 생중계 플랫폼은 고정된 수의 방송들이 아니라, 임의의 방송들이 생성될 수 있는 오픈형의 생중계 서비스에는 적합하지 않으며, 서비스를 제공한다 하더라도 중계 서버들이 비효율적으로 사용되기 때문에 비용이 많이 들게 되는 문제점이 있다.Such a live broadcast platform of the prior art is not suitable for an open live broadcast service in which arbitrary broadcasts can be generated, not a fixed number of broadcasts, and it is expensive because relay servers are inefficiently used even if a service is provided. There is a problem.

또한, 이러한 종래기술의 생중계 플랫폼은 중계 서버의 장애에 대응하기 어렵다는 문제점이 있다. 예를 들어, 중계 서버 1에 장애가 발생하게 되면, 중계 서버 1에 할당된 모든 방송이 송출되지 않게 된다. 만약, 중계 서버 1이 구현되어 있는 물리적 머신의 장애라면 장애를 해결하기 위한 시간은 더욱 길어지게 될 것이다. 송출자들에게 중계 서버 1의 장애를 알리고, 다시 방송을 등록하여 새로운 중계 서버의 주소를 송출자에게 알려주는 등 복잡한 과정이 요구되며, 이러한 장애 복구를 위한 처리 시간이 길어짐에 따라 송출자들이 원하는 시간에 생중계 방송을 송출하지 못하는 심각한 문제점까지 발생할 가능성이 존재한다.In addition, such a live broadcast platform of the prior art has a problem that it is difficult to cope with the failure of the relay server. For example, when a failure occurs in the relay server 1, all broadcasts allocated to the relay server 1 are not transmitted. If the failure of the physical machine where the relay server 1 is implemented, the time to resolve the failure will be longer. A complicated process is required such as notifying the sender of the failure of relay server 1, registering the broadcast again, and notifying the sender of the address of the new relay server. As the processing time for recovering the fault becomes longer, There is a possibility that a serious problem of not being able to broadcast a live broadcast in time occurs.

논리적 스트리밍 클라우드를 통해 실제로 방송의 송출이 발생하는 시점에 동적으로 리소스를 할당할 수 있는 오픈형 생중계 플랫폼의 시스템 및 상기 오픈형 생중계 플랫폼의 동작 방법을 제공한다.The present invention provides a system of an open live platform that can dynamically allocate resources when a broadcast is actually broadcasted through a logical streaming cloud, and a method of operating the open live platform.

동적이고 자율적인 코디네이션 시스템(코디네이터)을 통해 중앙 집중적인 제어 없이 방송 송출이 발생하는 시점에 송출 요청을 처리하기 위한 퍼블리싱 포인트 서버와 방송의 스트리밍 데이터를 인코딩하기 위한 인코딩 서버를 개별적으로, 그리고 동적으로 할당함에 따라 미리 특정 방송을 위해 서버가 예약된 상태로 대기할 필요 없이 모든 서버들을 효율적으로 활용할 수 있는 오픈형 생중계 플랫폼의 시스템 및 상기 오픈형 생중계 플랫폼의 동작 방법을 제공한다.Dynamic and autonomous coordination systems (coordinators) separately and dynamically, both publishing point servers for processing broadcast requests and encoding servers for encoding streaming data for broadcasts, when central broadcasts occur, without centralized control. According to the present invention, a system of an open live platform and an operating method of the open live platform, which can efficiently utilize all servers without having to wait in a reserved state for a specific broadcast in advance, are provided.

퍼블리싱 포인트 서버나 인코딩 서버의 장애 시 서버들의 풀에서 새로운 퍼블리싱 포인트 서버나 인코딩 서버를 재할당함에 따라 자동적인 장애복구가 가능한 오픈형 생중계 플랫폼의 시스템 및 상기 오픈형 생중계 플랫폼의 동작 방법을 제공한다.In the event of a publishing point server or encoding server failure, a system of an open live broadcast platform capable of automatically failing over by reallocating a new publishing point server or encoding server from a pool of servers and a method of operating the open live platform may be provided.

국가나 지역 단위로 구별되는 구역(region)별로 논리적 스트리밍 클라우드를 구현하고, 국가별 논리적 스트리밍 클라우드의 서버들을 코디네이션 시스템을 통해 관리할 수 있으며, 서로 다른 구역간에 방송의 송출과 시청이 이루어지는 경우, 프록시 가속을 통해 네트워크 속도가 느린 사용자 구간을 최소화할 수 있는 오픈형 생중계 플랫폼의 시스템 및 상기 오픈형 생중계 플랫폼의 동작 방법을 제공한다.Implement logical streaming cloud for each country or region divided by region, manage servers of logical streaming cloud for each country through coordination system, and if broadcasts are transmitted and viewed between different zones, proxy The present invention provides a system of an open live platform that can minimize a user section having a slow network speed through acceleration, and a method of operating the open live platform.

코디네이션 시스템을 통해 물리적 머신의 인코딩 성능에 따라 하나의 물리적 머신에서 동작될 인코딩 서버의 수를 동적으로 조절함으로써 물리적 머신을 안정적이고 효율적으로 사용할 수 있는 오픈형 생중계 플랫폼의 시스템 및 상기 오픈형 생중계 플랫폼의 동작 방법을 제공한다.A system of an open live platform that can stably and efficiently use a physical machine by dynamically adjusting the number of encoding servers to be operated on one physical machine according to the encoding performance of the physical machine through a coordination system, and a method of operating the open live platform. To provide.

스트리밍을 위한 서로 다른 복수의 서비스들 각각에서 제공되는 복수의 방송들에 대해서도 각각의 방송들에 대해 서비스와 상관 없이 독립적으로 채널을 관리함에 따라 서로 다른 서비스에서의 간섭 없이 안정적으로 서로 다른 서비스들 각각에서 제공되는 복수의 방송들 각각을 해당 서비스의 시청자들에게 제공할 수 있는 오픈형 생중계 플랫폼의 시스템 및 상기 오픈형 생중계 플랫폼의 동작 방법을 제공한다.Even for a plurality of broadcasts provided by each of a plurality of different services for streaming, each channel is stably managed without interference from other services by independently managing a channel regardless of the service for each broadcast. The present invention provides a system of an open live broadcast platform capable of providing each of a plurality of broadcasts provided to a viewer of a corresponding service, and a method of operating the open live broadcast platform.

채널별로 우선순위를 부여하고, 부여된 유선순위를 이용하여 중요 채널의 방송 송출을 보장할 수 있는 오픈형 생중계 플랫폼의 시스템 및 상기 오픈형 생중계 플랫폼의 동작 방법을 제공한다.The present invention provides a system of an open live broadcast platform capable of assigning priority to each channel and guaranteeing broadcast transmission of an important channel using the assigned wired priority, and a method of operating the open live broadcast platform.

오픈형 생중계 플랫폼을 위한 시스템에 있어서, 송출자의 단말로부터 송출되는 스트리밍 데이터를 수신하기 위한 적어도 하나의 제1 서버를 관리하는 제1 서버 풀; 상기 제1 서버 풀에서 할당된 제1 서버로부터 상기 스트리밍 데이터를 전달받아 인코딩하기 위한 적어도 하나의 제2 서버를 관리하는 제2 서버풀; 및 상기 제1 서버 풀 및 상기 제2 서버 풀의 서버들의 상태를 관리하고, 상기 제1 서버 풀에서 할당된 제1 서버의 요청에 따라 상기 제2 서버 풀에서 제2 서버를 동적으로 할당하는 코디네이터를 포함하고, 상기 스트리밍 데이터가 상기 송출자의 단말에서 송출됨에 응답하여, 상기 제1 서버 풀에서 임의의 제1 서버를 동적으로 할당하고, 상기 할당된 제1 서버를 통해 상기 송출되는 스트리밍 데이터를 수신하는 것을 특징으로 하는 오픈형 생중계 플랫폼을 위한 시스템을 제공한다.A system for an open live platform, comprising: a first server pool managing at least one first server for receiving streaming data transmitted from a sender's terminal; A second server pool managing at least one second server for receiving and encoding the streaming data from a first server allocated in the first server pool; And a coordinator for managing states of the servers of the first server pool and the second server pool, and dynamically allocating a second server in the second server pool according to a request of the first server allocated in the first server pool. And in response to the streaming data being transmitted from the sender's terminal, dynamically allocating any first server in the first server pool, and receiving the transmitted streaming data through the assigned first server. It provides a system for an open live platform, characterized in that.

오픈형 생중계 플랫폼의 동작 방법에 있어서, 송출자 단말로부터 스트리밍 데이터가 송출됨에 응답하여 제1 서버 풀에서 할당된 임의의 제1 서버로부터 상기 스트리밍 데이터의 인코딩을 위한 제2 서버의 할당 요청을 수신하는 단계; 및 상기 수신된 할당 요청에 따라 제2 서버 풀에서 임의의 제2 서버를 동적으로 할당하는 단계를 포함하고, 상기 동적으로 할당된 제2 서버가 상기 제1 서버로부터 상기 스트리밍 데이터를 전달받아 인코딩하는 것을 특징으로 하는 동작 방법을 제공한다.A method of operating an open live platform, the method comprising: receiving an allocation request of a second server for encoding the streaming data from any first server allocated in the first server pool in response to the streaming data being transmitted from the sender terminal. ; And dynamically allocating an arbitrary second server in a second server pool according to the received allocation request, wherein the dynamically allocated second server receives and encodes the streaming data from the first server. It provides a method of operation characterized in that.

상기 동작 방법을 컴퓨터에 실행시키기 위한 프로그램이 기록되어 있는 것을 특징으로 하는 컴퓨터에서 판독 가능한 기록매체를 제공한다.Provided is a computer-readable recording medium, in which a program for causing the computer to execute the operation method is recorded.

논리적 스트리밍 클라우드를 통해 실제로 방송의 송출이 발생하는 시점에 동적으로 리소스를 할당할 수 있다.Logical streaming clouds allow you to dynamically allocate resources when broadcasts actually occur.

동적이고 자율적인 코디네이션 시스템(코디네이터)을 통해 중앙 집중적인 제어 없이 방송 송출이 발생하는 시점에 송출 요청을 처리하기 위한 퍼블리싱 포인트 서버와 방송의 스트리밍 데이터를 인코딩하기 위한 인코딩 서버를 개별적으로, 그리고 동적으로 할당함에 따라 미리 특정 방송을 위해 서버가 예약된 상태로 대기할 필요 없이 모든 서버들을 효율적으로 활용할 수 있다.Dynamic and autonomous coordination systems (coordinators) separately and dynamically, both publishing point servers for processing broadcast requests and encoding servers for encoding streaming data for broadcasts, when central broadcasts occur, without centralized control. By allocating, all servers can be efficiently utilized without having to wait in advance for a specific broadcast.

퍼블리싱 포인트 서버나 인코딩 서버의 장애 시 서버들의 풀에서 새로운 퍼블리싱 포인트 서버나 인코딩 서버를 재할당함에 따라 장애가 발생한 서버를 자동적으로 복구할 수 있다.In the event of a publishing point server or encoding server failure, the failed server can be recovered automatically by reassigning a new publishing point server or encoding server from the pool of servers.

국가나 지역 단위로 구별되는 구역(region)별로 논리적 스트리밍 클라우드를 구현하고, 국가별 논리적 스트리밍 클라우드의 서버들을 코디네이션 시스템을 통해 관리할 수 있으며, 서로 다른 구역간에 방송의 송출과 시청이 이루어지는 경우, 프록시 가속을 통해 네트워크 속도가 느린 사용자 구간을 최소화할 수 있다.Implement logical streaming cloud for each country or region divided by region, manage servers of logical streaming cloud for each country through coordination system, and if broadcasts are transmitted and viewed between different zones, proxy Acceleration minimizes user segments on slower networks.

코디네이션 시스템을 통해 물리적 머신의 인코딩 성능에 따라 하나의 물리적 머신에서 동작될 인코딩 서버의 수를 동적으로 조절함으로써 물리적 머신을 안정적이고 효율적으로 사용할 수 있다.The coordination system allows the physical machine to be used stably and efficiently by dynamically adjusting the number of encoding servers to be operated on one physical machine according to the encoding performance of the physical machine.

스트리밍을 위한 서로 다른 복수의 서비스들 각각에서 제공되는 복수의 방송들에 대해서도 각각의 방송들에 대해 서비스와 상관 없이 독립적으로 채널을 관리함에 따라 서로 다른 서비스에서의 간섭 없이 안정적으로 서로 다른 서비스들 각각에서 제공되는 복수의 방송들 각각을 해당 서비스의 시청자들에게 제공할 수 있다.Even for a plurality of broadcasts provided by each of a plurality of different services for streaming, each channel is stably managed without interference from other services by independently managing a channel regardless of the service for each broadcast. Each of the plurality of broadcasts provided by may be provided to viewers of the corresponding service.

채널별로 우선순위를 부여하고, 부여된 유선순위를 이용하여 중요 채널의 방송 송출을 보장할 수 있다.Priority can be given for each channel, and the broadcast transmission of important channels can be guaranteed using the assigned wired priority.

도 1은 본 발명의 일실시예에 따른 오픈형 생중계 플랫폼의 전체 구성의 예를 도시한 도면이다.
도 2는 본 발명의 일실시예에 따른 라이브 스트리밍 팜의 구성의 예를 도시한 도면이다.
도 3은 본 발명의 일실시예에 따른 L4 스위치의 로드 밸런싱 예를 도시한 도면이다.
도 4는 본 발명의 일실시예에 따른 인코더 서버 풀의 구성의 예를 도시한 도면이다.
도 5는 본 발명의 일실시예에 따른 VOD 팜의 구성의 예를 도시한 도면이다.
도 6 내지 도 8은 본 발명의 일실시예에 따른 오픈형 생중계 플랫폼의 동작 방법의 예를 도시한 도면들이다.
도 9는 본 발명의 일실시예에 있어서, 생중계를 위한 송출 주소와 시청 주소의 예를 도시한 도면이다.
도 10은 본 발명의 일실시예에 있어서, 방송 송출 요청을 처리하는 과정의 예를 도시한 도면이다.
도 11은 본 발명의 일실시예에 있어서, 인코딩 과정의 예를 도시한 도면이다.
도 12는 본 발명의 일실시예에 있어서, 송출 발생 시 각 서버들이 동적으로 할당되는 과정의 예를 도시한 도면이다.
도 13 및 도 14는 본 발명의 일실시예에 있어서, 퍼블리싱 포인트 서버에 대한 자율적인 장애복구 과정의 예를 도시한 도면들이다.
도 15 및 도 16은 본 발명의 일실시예에 있어서, 인코더 서버에 대한 자율적인 장애복구의 과정의 예를 도시한 도면들이다.
도 17은 본 발명의 일실시예에 있어서, 구역에 따른 오픈형 생중계 플랫폼의 구현 예를 도시한 도면이다.
도 18은 본 발명의 일실시예에 있어서, 프록시 가속의 예를 설명하기 위한 도면이다.
도 19는 본 발명의 일실시예에 있어서, 오픈형 생중계 플랫폼의 멀티-테넌트의 개념을 설명하기 위한 도면이다.
도 20은 본 발명의 일실시예에 따른 오픈형 생중계 플랫폼의 동작 방법의 예를 도시한 흐름도이다.
도 21은 본 발명의 일실시예에 따른 오픈형 생중계 플랫폼의 장애복구 방법의 예를 도시한 흐름도이다.
1 is a view showing an example of the overall configuration of an open live broadcast platform according to an embodiment of the present invention.
2 is a diagram illustrating an example of a configuration of a live streaming farm according to an embodiment of the present invention.
3 is a diagram illustrating an example of load balancing of an L4 switch according to an embodiment of the present invention.
4 is a diagram illustrating an example of a configuration of an encoder server pool according to an embodiment of the present invention.
5 is a diagram illustrating an example of a configuration of a VOD farm according to an embodiment of the present invention.
6 to 8 are diagrams showing an example of a method of operating an open live broadcast platform according to an embodiment of the present invention.
9 is a diagram illustrating an example of a broadcast address and a viewing address for live broadcasting in an embodiment of the present invention.
10 illustrates an example of a process of processing a broadcast transmission request according to an embodiment of the present invention.
11 is a diagram illustrating an example of an encoding process according to an embodiment of the present invention.
12 is a diagram for one example of a process of dynamically allocating each server when a transmission occurs in one embodiment of the present invention.
13 and 14 illustrate examples of an autonomous failover process for a publishing point server according to an exemplary embodiment of the present invention.
15 and 16 illustrate an example of a process of autonomous failover for an encoder server according to an embodiment of the present invention.
FIG. 17 is a diagram for one embodiment of an open live platform according to a zone according to one embodiment of the present invention; FIG.
18 is a diagram for explaining an example of proxy acceleration according to an embodiment of the present invention.
FIG. 19 is a diagram for explaining the concept of a multi-tenant of an open live platform according to an embodiment of the present invention.
20 is a flowchart illustrating an example of a method of operating an open live broadcast platform according to an embodiment of the present invention.
21 is a flowchart illustrating an example of a method for failback of an open live relay platform according to an embodiment of the present invention.

이하, 실시예를 첨부한 도면을 참조하여 상세히 설명한다.Hereinafter, exemplary embodiments will be described in detail with reference to the accompanying drawings.

도 1은 본 발명의 일실시예에 따른 오픈형 생중계 플랫폼의 전체 구성의 예를 도시한 도면이고, 도 2는 본 발명의 일실시예에 따른 라이브 스트리밍 팜의 구성의 예를 도시한 도면이며, 도 3은 본 발명의 일실시예에 따른 L4 스위치의 로드 밸런싱 예를 도시한 도면이고, 도 4는 본 발명의 일실시예에 따른 인코더 서버 풀의 구성의 예를 도시한 도면이다. 또한, 도 5는 본 발명의 일실시예에 따른 VOD 팜의 구성의 예를 도시한 도면이다.1 is a view showing an example of the overall configuration of an open live broadcast platform according to an embodiment of the present invention, Figure 2 is a view showing an example of the configuration of a live streaming farm according to an embodiment of the present invention, Figure 3 is a diagram illustrating an example of load balancing of an L4 switch according to an embodiment of the present invention, and FIG. 4 is a diagram illustrating an example of a configuration of an encoder server pool according to an embodiment of the present invention. 5 is a diagram illustrating an example of a configuration of a VOD farm according to an embodiment of the present invention.

본 실시예에 따른 오픈형 생중계 플랫폼(100)은 도 1에 도시된 바와 같이, 라이브 스트리밍 팜(Live Streaming Farm, 110), 코디네이터(Coordinator, 120) 및 VOD(Video On Demand) 팜(130)을 포함할 수 있다.As shown in FIG. 1, the open live platform 100 according to the present embodiment includes a live streaming farm 110, a coordinator 120, and a video on demand farm 130. can do.

라이브 스트리밍 팜(110)은 송출자(140)로부터 송출되는 스트리밍 데이터를 처리하여 시청자(150)에게 중계하는 역할을 수행할 수 있다. 이를 위해, 라이브 스트리밍 팜(110)은 도 2에 도시된 바와 같이, 제1 L4 스위치(210), 퍼블리싱 포인트 서버 풀(Publishing Point Server Pool, 220), 인코더 서버 풀(Encoder Server Pool, 230), 분산 파일 시스템(Distributed File System, 240), 프록시 서버 풀(Proxy Server Pool, 250) 및 제2 L4 스위치(260)를 포함할 수 있다. 도 1에서는 하나의 송출자(140)와 하나의 시청자(150)를 나타내고 있으나, 이러한 송출자(140)와 시청자(150)는 복수의 송출자들과 복수의 시청자들을 의미할 수 있으며, 실질적으로는 방송을 송출하는 송출자의 단말과 방송을 수신하는 시청자의 단말을 의미할 수 있다. The live streaming farm 110 may serve to relay the streaming data transmitted from the sender 140 to the viewer 150. To this end, as shown in FIG. 2, the live streaming farm 110 includes a first L4 switch 210, a publishing point server pool 220, an encoder server pool 230, The distributed file system 240 may include a distributed file system 240, a proxy server pool 250, and a second L4 switch 260. In FIG. 1, one sender 140 and one viewer 150 are shown. However, the sender 140 and the viewer 150 may mean a plurality of senders and a plurality of viewers. May mean a terminal of a sender for transmitting a broadcast and a terminal of a viewer receiving a broadcast.

제1 L4 스위치(210)는 도 3에 도시된 바와 같이, 퍼블리싱 포인트 서버 풀(220)에 포함되는 복수의 퍼블리싱 포인트 서버들(310)의 로드 밸런싱을 위해 이용될 수 있다. 예를 들어, 제1 L4 스위치(210)는 송출자(140)로부터 송출되는 스트리밍 데이터를 복수의 퍼블리싱 포인트 서버들(310) 중 어느 퍼블리싱 포인트 서버로 전달할 것인가를 결정할 수 있다.As illustrated in FIG. 3, the first L4 switch 210 may be used for load balancing the plurality of publishing point servers 310 included in the publishing point server pool 220. For example, the first L4 switch 210 may determine which publishing point server of the plurality of publishing point servers 310 delivers the streaming data transmitted from the sender 140.

퍼블리싱 포인트 서버 풀(220)은 도 3을 통해 설명한 바와 같이, 복수의 퍼블리싱 포인트 서버들(310)의 풀(pool)로서 퍼블리싱 포인트 서버 각각은 제1 L4 스위치(210)를 통해 전달되는 송출자(140)들의 송출 요청을 처리하고, 인코더 서버 풀(230)이 포함하는 인코더 서버에게 스트리밍 데이터를 전달할 수 있다. 이때, 하나의 퍼블리싱 포인트 서버가 다수의 송출 요청을 처리할 수 있다. 또한, 하나의 퍼블리싱 포인트 서버는 하나의 물리적인 머신으로 구현될 수도 있지만, 하나의 물리적인 머신상에 다수의 퍼블리싱 포인트 서버들이 구현될 수도 있다. 예를 들어, 세 개의 물리적인 머신에 각각 세 개의 퍼블리싱 포인트 서버들이 포함되도록 구현되는 경우, 총 9 개의 퍼블리싱 포인트 서버들이 퍼블리싱 포인트 서버 풀(220)에 포함될 수 있다. 도 3에서는 퍼블리싱 포인트 서버 풀(220)이 세 개의 퍼블리싱 포인트 서버를 포함하는 예를 나타내고 있으나, 퍼블리싱 포인트 서버는 필요에 따라 자유롭게 퍼블리싱 포인트 서버 풀(220)에 추가되거나 또는 퍼블리싱 포인트 서버 풀(220)에서 제외될 수 있다.As described with reference to FIG. 3, the publishing point server pool 220 is a pool of the plurality of publishing point servers 310, and each publishing point server is transmitted through the first L4 switch 210. The transmission request of the 140 may be processed, and streaming data may be delivered to an encoder server included in the encoder server pool 230. At this time, one publishing point server may process a plurality of transmission requests. In addition, one publishing point server may be implemented as one physical machine, but a plurality of publishing point servers may be implemented on one physical machine. For example, if the three physical machines are implemented to include three publishing point servers, a total of nine publishing point servers may be included in the publishing point server pool 220. In FIG. 3, the publishing point server pool 220 includes three publishing point servers. However, the publishing point server may be freely added to the publishing point server pool 220 or the publishing point server pool 220 may be used. May be excluded.

인코더 서버 풀(230)은 도 4에 도시된 바와 같이 복수의 인코더 서버들(410)을 포함하는 풀일 수 있다. 복수의 인코더 서버들(410)은 도 4에 도시된 바와 같이 세 개의 인코더 서버를 포함하는 예를 나타내고 있으나, 인코더 서버는 필요에 따라 자유롭게 인코더 서버 풀(230)에 추가되거나 또는 인코더 서버 풀(230)에서 제외될 수 있다. 또한, 복수의 인코더 서버들(410) 각각은 이미 설명한 바와 같이 하나의 물리적인 머신으로 구현될 수도 있으나, 하나의 물리적인 머신상에 다수의 인코더 서버들이 포함되도록 구현될 수도 있다. 예를 들어, 세 개의 물리적인 머신에 각각 네 개의 인코더 서버들이 포함되도록 구현되는 경우, 총 12 개의 인코더 서버들이 인코더 서버 풀(220)에 포함될 수 있다.Encoder server pool 230 may be a pool including a plurality of encoder servers 410 as shown in FIG. Although the plurality of encoder servers 410 shows an example including three encoder servers as shown in FIG. 4, the encoder server may be freely added to the encoder server pool 230 or the encoder server pool 230 as necessary. ) May be excluded. In addition, each of the plurality of encoder servers 410 may be implemented as one physical machine as described above, but may be implemented to include a plurality of encoder servers on one physical machine. For example, if the three physical machines are implemented to include four encoder servers each, a total of 12 encoder servers may be included in the encoder server pool 220.

또한, 하나의 물리적인 머신은 적어도 하나의 퍼블리싱 포인트 서버와 적어도 하나의 인코더 서버를 포함하도록 구현될 수도 있다. 다시 말해, 퍼블리싱 포인트 서버, 인코더 서버, 그리고 이후 설명될 프록시 서버 등은 각각 개별적인 물리적인 머신의 형태로 구현될 수도 있으나, 하나의 물리적인 머신상에 복수의 서버들이 포함되는 형태로 구현될 수도 있다.In addition, one physical machine may be implemented to include at least one publishing point server and at least one encoder server. In other words, the publishing point server, the encoder server, and the proxy server to be described later may be implemented in the form of individual physical machines, or may be implemented in the form of a plurality of servers included on one physical machine. .

복수의 인코더 서버들(410) 각각은 하나의 인코더 서버와 하나의 업로더의 쌍으로 구현될 수 있다. 예를 들어, 도 4에서는 하나의 인코더 서버가 인코더 서버 1(411)과 업로더 1(412)의 쌍으로 구현된 예를 나타내고 있다.Each of the plurality of encoder servers 410 may be implemented as a pair of one encoder server and one uploader. For example, FIG. 4 illustrates an example in which one encoder server is implemented as a pair of encoder server 1 411 and uploader 1 412.

인코더 서버는 퍼블리싱 포인트 서버로부터 수신되는 스트리밍 데이터를 기 설정된 프로파일로 인코딩할 수 있다. 예를 들어, HLS(HTTP Live Streaming) 알고리즘을 이용하여 시청자(150)에게 생중계 방송을 제공하는 경우, 인코더 서버는 퍼블리싱 포인트 서버로부터 수신되는 스트리밍 데이터를 인코딩하여 TS(Transport Segment) 파일을 생성할 수 있다.The encoder server may encode streaming data received from the publishing point server into a preset profile. For example, when providing a live broadcast to the viewer 150 using an HTTP Live Streaming (HLS) algorithm, the encoder server may generate a TS (Transport Segment) file by encoding streaming data received from the publishing point server. have.

업로더는 인코딩 결과로 생성된 TS 파일들을 라이브 스트리밍 팜(110)이 포함하는 분산 파일 시스템(240), 그리고 도 5에 도시된 VOD 팜(130)이 포함하는 분산 파일 시스템(520)에 각각 업로드할 수 있다. 또한, 업로더는 생성된 TS 파일들로 각 서비스 형태에 따른 재생정보파일(일례로, 어떤 미디어를, 어떻게 재생할 건가에 대한 정보를 저장한 파일로 HLS(HTTP Live Streaming) 알고리즘에서는 m3u8 파일)들을 생성하여 라이브 스트리밍 팜(110)이 포함하는 분산 파일 시스템(240)에 업로드할 수 있다. 이때, 서비스 형태에 따른 재생정보파일은 타임머신 기능을 제공하기 위한 재생정보파일(일례로, 타임머신 용 m3u8 파일), 라이브 방송을 위한 재생정보파일(일례로, 라이브 용 m3u8 파일) 및/또는 VOD 방송을 위한 재생정보파일(일례로, VOD 용 m3u8 파일)을 포함할 수 있다.The uploader uploads the TS files resulting from the encoding to the distributed file system 240 included in the live streaming farm 110 and the distributed file system 520 included in the VOD farm 130 shown in FIG. can do. In addition, the uploader generates playback information files (e.g., m3u8 files in the HTTP Live Streaming (HLS) algorithm) of the playback information files (for example, information on what media and how to play them) according to each service type. It may be generated and uploaded to the distributed file system 240 included in the live streaming farm 110. In this case, the playback information file according to the service type may include a playback information file (for example, an m3u8 file for a time machine) for providing a time machine function, a playback information file (for example, a m3u8 file for a live) and / or a VOD broadcast for live broadcasting. May include a playback information file (for example, an m3u8 file for VOD).

분산 파일 시스템(240)은 시청자(150)에게 스트리밍하기 위해 인코딩된 파일들(일례로, TS 파일들)과 재생정보파일들(일례로, m3u8 파일들)을 저장하고 제공할 수 있다.The distributed file system 240 may store and provide encoded files (eg, TS files) and playback information files (eg, m3u8 files) for streaming to the viewer 150.

프록시 서버 풀(250)는 복수의 프록시 서버들을 포함할 수 있으며, 제2 L4 스위치(260)를 통해 선택되는 프록시 서버가 외부의 스트리밍 요청을 수신하여 분산 파일 시스템(240)에 전달하는 역할을 수행할 수 있다. 이 경우, 분산 파일 시스템(240)은 전달된 외부의 스트리밍 요청에 따라 저장된 파일들(인코딩된 파일들(일례로, TS 파일들)과 재생정보파일들(일례로, m3u8 파일들))을 앞서 선택된 프록시 서버를 통해 제공함으로써, 생중계 서비스가 시청자(150)에게 제공될 수 있다.The proxy server pool 250 may include a plurality of proxy servers, and the proxy server selected through the second L4 switch 260 receives an external streaming request and delivers it to the distributed file system 240. can do. In this case, the distributed file system 240 advances the stored files (encoded files (e.g., TS files) and playback information files (e.g., m3u8 files)) according to the external streaming request delivered. By providing through the selected proxy server, a live broadcast service may be provided to the viewer 150.

코디네이터(120)는 오픈형 생중계 플랫폼(100)이 포함하는 서버들의 상태를 관리하고, 인코더 서버를 할당하며, 현재 송출 중인 채널의 정보 등 오픈형 생중계 플랫폼(100)의 전반적인 상태 및 설정들을 관리할 수 있다. 예를 들어, 오픈형 생중계 플랫폼(100)이 포함하는 서버들은 실행 시 코디네이터(120)에 자신을 등록하는 과정을 거칠 수 있으며, 코디네이터(120)는 등록된 서버들을 관리할 수 있다. 또한, 코디네이터(120)는 퍼블리싱 포인트 서버의 요청에 따라 인코더 서버를 할당할 수 있다. 이러한 코디네이터(120)는 일례로, 분산 환경에서 노드 간의 정보 공유, 락(Lock), 이벤트 등 보조 기능을 제공하는 프레임워크인 주키퍼(Zookeeper) 시스템을 이용하여 구현될 수 있다.The coordinator 120 may manage the state of the servers included in the open live platform 100, allocate an encoder server, and manage the overall state and settings of the open live platform 100, such as information on a channel currently being transmitted. . For example, the servers included in the open live platform 100 may undergo a process of registering themselves with the coordinator 120 when executed, and the coordinator 120 may manage the registered servers. In addition, the coordinator 120 may allocate an encoder server according to a request of the publishing point server. The coordinator 120 may be implemented using, for example, a ZOOkeeper system, which is a framework that provides auxiliary functions such as information sharing, locks, and events among nodes in a distributed environment.

VOD 팜(130)은 생중계 영상의 VOD 파일을 생성 및 저장하고 VOD 서비스를 제공하는 기능을 담당할 수 있으며, 도 5에 도시된 바와 같이, VOD 생성 풀(510), 분산 파일 시스템(520), 프록시 서버 풀(530) 및 제3 L4 스위치(540)를 포함할 수 있다.The VOD farm 130 may be responsible for generating and storing a VOD file of a live broadcast image and providing a VOD service. As shown in FIG. 5, the VOD farm 130, a distributed file system 520, It may include a proxy server pool 530 and a third L4 switch 540.

VOD 생성 풀(510)은 VOD 파일 생성 요청을 받는 경우, 분산 파일 시스템(520)에서 인코딩된 파일들(일례로, TS 파일들)을 다운로드 받아 VOD 파일(일례로, MP4 파일)을 생성할 수 있다. 또한, VOD 생성 풀(510)은 생성된 VOD 파일을 다시 분산 파일 시스템(520)에 업로드할 수 있다. VOD 생성 풀(510)은 복수의 VOD 생성 서버를 포함할 수 있다.When the VOD generation pool 510 receives a VOD file generation request, the VOD generation pool 510 may download encoded files (eg, TS files) from the distributed file system 520 and generate a VOD file (eg, an MP4 file). have. In addition, the VOD generation pool 510 may upload the generated VOD file to the distributed file system 520 again. The VOD generation pool 510 may include a plurality of VOD generation servers.

분산 파일 시스템(520)은 VOD 파일을 위한 인코딩된 파일들과 VOD 생성 풀(510)에 의해 생성된 VOD 파일을 저장 및 제공할 수 있다.The distributed file system 520 may store and provide encoded files for the VOD file and a VOD file generated by the VOD generation pool 510.

프록시 서버 풀(530)은 복수의 프록시 서버들을 포함할 수 있다. 제3 L4 스위치(540)는 외부의 VOD 파일 요청이 수신되면, 프록시 서버 풀(530)이 포함하는 복수의 프록시 서버들 중 하나의 프록시 서버를 선택하여 외부의 VOD 파일 요청을 전달할 수 있으며, 선택된 프록시 서버는 외부의 VOD 파일 요청을 분산 파일 시스템(520)으로 전달할 수 있다. 이 경우, 분산 파일 시스템(520)은 요청된 VOD 파일을 프록시 서버를 통해 외부로 제공할 수 있다.The proxy server pool 530 may include a plurality of proxy servers. When an external VOD file request is received, the third L4 switch 540 may select one proxy server among a plurality of proxy servers included in the proxy server pool 530 and transmit the external VOD file request. The proxy server may forward an external VOD file request to the distributed file system 520. In this case, the distributed file system 520 may provide the requested VOD file to the outside through a proxy server.

도 6 내지 도 8은 본 발명의 일실시예에 따른 오픈형 생중계 플랫폼의 동작 방법의 예를 도시한 도면들이다.6 to 8 are diagrams showing an example of a method of operating an open live broadcast platform according to an embodiment of the present invention.

도 6은 라이브 스트리밍을 위한 전체 과정들(과정(1-1) 내지 과정(1-10)) 중 과정(1-1) 내지 과정(1-6)을 도시하고 있다.6 illustrates steps 1-1 to 1-6 of the entire processes (steps 1-1 to 1-10) for live streaming.

과정(1-1)은 송출자(140)가 제1 L4스위치(210)로 스트리밍 데이터를 송출하는 과정의 예일 수 있다.Process 1-1 may be an example of a process in which the sender 140 transmits streaming data to the first L4 switch 210.

과정(1-2)은 제1 L4 스위치(210)가 퍼블리싱 포인트 서버 풀(220)에 포함된 임의의 퍼블리싱 포인트 서버(610)를 선택하고, 선택된 퍼블리싱 포인트 서버(610)로 송출 요청을 전달하는 과정의 예일 수 있다.Process (1-2) in which the first L4 switch 210 selects any publishing point server 610 included in the publishing point server pool 220, and forwards the transmission request to the selected publishing point server 610 It may be an example of a process.

과정(1-3)은 퍼블리싱 포인트 서버(610)가 코디네이터(120)에게 스트리밍을 위한 인코더 서버 풀(230)에 포함된 인코더 서버들 중 어느 하나의 할당을 요청하는 과정의 예일 수 있다.Process 1-3 may be an example of a process in which the publishing point server 610 requests the coordinator 120 to assign any one of the encoder servers included in the encoder server pool 230 for streaming.

과정(1-4)은 코디네이터(120)가 인코더 서버 풀(230)에서 스트리밍에 사용될 임의의 인코더 서버(620)를 선택하고, 스트리밍 시작 이벤트와 함께 퍼블리싱 포인트 서버(610)에 대한 정보를 선택된 인코더 서버(620)로 전달하는 과정의 예일 수 있다.Processes 1-4 include that the coordinator 120 selects an arbitrary encoder server 620 to be used for streaming in the encoder server pool 230 and selects the encoder information selected for the publishing point server 610 together with the streaming start event. It may be an example of a process of transferring to the server 620.

과정(1-5)은 코디네이터(120)에 의해 선택된 인코더 서버(620)가 퍼블리싱 포인트 서버(610)에 접속하여 스트리밍 데이터를 전달받고, 전달받은 스트리밍 데이터를 기 설정된 프로파일로 인코딩하는 과정의 예일 수 있다.Process (1-5) may be an example of a process in which the encoder server 620 selected by the coordinator 120 accesses the publishing point server 610 to receive streaming data and encode the received streaming data into a preset profile. have.

과정(1-6)은 인코더 서버(620)가 인코딩된 데이터(일례로, 인코딩에 따라 생성된 TS 파일들)를 지정된 경로(일례로, 도 6의 임시저장소(630))에 저장하는 과정의 예일 수 있다.Steps 1-6 are steps in which the encoder server 620 stores the encoded data (eg, TS files generated according to the encoding) in a designated path (eg, temporary storage 630 of FIG. 6). It may be an example.

도 7은 라이브 스트리밍을 위한 전체 과정들(과정(1-1) 내지 과정(1-10)) 중 과정(1-7) 내지 과정(1-10)을 도시하고 있다. 과정(1-6)과 과정(1-7)은 도 6 및 도 7에 도시된 (A)를 통해 연결될 수 있다.7 illustrates steps 1-7 to 1-10 of the entire processes (steps 1-1 to 1-10) for live streaming. Processes 1-6 and 1-7 may be connected via (A) shown in FIGS. 6 and 7.

과정(1-7)은 업로더(710)가 도 6에 도시된 임시저장소(630)로부터 인코딩된 데이터(TS 파일들)를 획득하고, 인코딩된 데이터에 대응하는 재생정보파일(일례로, m3u8 파일들)을 생성하는 과정의 예일 수 있다. 이미 설명한 바와 같이 업로더(710)는 인코더 서버(620)와 하나의 쌍을 이룰 수 있다.In steps 1-7, the uploader 710 obtains encoded data (TS files) from the temporary storage 630 shown in FIG. 6, and reproduces a reproduction information file (for example, m3u8) corresponding to the encoded data. Files). As described above, the uploader 710 may be paired with the encoder server 620.

과정(1-8)은 업로더(710)가 인코딩된 데이터를 라이브 스트리밍 팜(110)의 분산 파일 시스템(240)과 VOD 팜(130)의 분산 파일 시스템(520)에 각각 업로드하고, 생성된 재생정보파일을 라이브 스트리밍 팜(110)의 분산 파일 시스템(240)에 업로드하는 과정의 예일 수 있다. 이때, 인코딩된 데이터를 VOD 팜(130)의 분산 파일 시스템(520)에 업로드하는 과정은 도 7 및 도 8에 도시된 (C)를 통해 연결될 수 있다.Processes 1-8 upload the uploader 710 encoded data to the distributed file system 240 of the live streaming farm 110 and the distributed file system 520 of the VOD farm 130, respectively. The reproduction information file may be an example of a process of uploading to the distributed file system 240 of the live streaming farm 110. In this case, the process of uploading the encoded data to the distributed file system 520 of the VOD farm 130 may be connected through (C) illustrated in FIGS. 7 and 8.

과정(1-9)은 프록시 서버 풀(250)에 포함된 프록시 서버들 중 선택된 하나인 프록시 서버(720)가 라이브 스트리밍 팜(110)의 분산 파일 시스템(240)으로부터 인코딩된 데이터와 재생정보파일을 요청하여 전달받는 과정의 예일 수 있다.Process (1-9) is a data and playback information file encoded by the proxy server 720, one of the proxy servers included in the proxy server pool 250 from the distributed file system 240 of the live streaming farm 110 This may be an example of the process of requesting and receiving.

과정(1-10)은 프록시 서버(720)가 전달받은 인코딩된 데이터와 재생정보파일을 시청자(150)에게 전달하여 라이브 스트리밍을 진행하는 과정의 예일 수 있다.Process 1-10 may be an example of a process of performing live streaming by delivering the encoded data and the reproduction information file received from the proxy server 720 to the viewer 150.

도 8은 VOD 파일의 생성 및 VOD 서비스의 제공을 위한 전체 과정들(과정(2-1) 내지 과정(2-5))을 도시하고 있다. 이러한 도 8은 (B) 및 (C)를 통해 도 6 및 도 7과 연결될 수 있다.8 illustrates the entire processes (processes 2-1 to 2-5) for generating a VOD file and providing a VOD service. Such FIG. 8 may be connected to FIGS. 6 and 7 through (B) and (C).

과정(2-1)은 VOD 생성 풀(510)에 포함된 VOD 생성 서버들 중 하나인 VOD 생성 서버(810)가 코디네이터(120)로부터 VOD 생성 요청을 수신하는 과정의 예일 수 있다.Process 2-1 may be an example of a process in which the VOD generation server 810, which is one of the VOD generation servers included in the VOD generation pool 510, receives a VOD generation request from the coordinator 120.

과정(2-2)은 VOD 생성 서버(810)가 VOD 팜(130)에 포함된 분산 파일 시스템(520)으로부터 VOD 파일을 생성하기 위해 인코딩된 데이터를 다운로드 받는 과정의 예일 수 있다. 여기서 인코딩된 데이터는 도 7의 과정(1-8)을 통해 업로더(710)가 분산 파일 시스템(520)에 저장한 데이터일 수 있다.Process 2-2 may be an example of a process in which the VOD generation server 810 downloads encoded data to generate a VOD file from the distributed file system 520 included in the VOD farm 130. The encoded data may be data stored in the distributed file system 520 by the uploader 710 through steps 1-8 of FIG. 7.

과정(2-3)은 VOD 생성 서버(810)가 다운로드 받은 데이터를 이용하여 VOD 파일을 생성하여 분산 파일 시스템(520)에 업로드하는 과정의 예일 수 있다.Process 2-3 may be an example of a process of generating a VOD file using the downloaded data by the VOD generation server 810 and uploading it to the distributed file system 520.

과정(2-4)는 프록시 서버 풀(530)에 포함된 프록시 서버들 중 하나인 프록시 서버(820)가 VOD 요청자(830)의 요청에 따라 VOD 파일을 분산 파일 시스템(520)으로부터 다운로드하는 과정의 예일 수 있다.Step 2-4 is a process in which the proxy server 820, which is one of the proxy servers included in the proxy server pool 530, downloads the VOD file from the distributed file system 520 at the request of the VOD requester 830. It may be an example of.

과정(2-5)는 프록시 서버(820)가 VOD요청자(830)에게 다운로드 받은 VOD 파일을 제공하는 과정의 예일 수 있다.Process 2-5 may be an example of a process in which the proxy server 820 provides the downloaded VOD file to the VOD requester 830.

이러한 과정(2-1) 내지 과정(2-5)를 통해 라이브 스트리밍된 방송을 위한 VOD 파일이 생성 및 제공될 수 있다.Through these processes 2-1 to 2-5, a VOD file for live streamed broadcast may be generated and provided.

본 발명의 실시예들에 따른 오픈형 생중계 시스템은 아래와 같이 1 내지 6의 특징들을 갖는다.The open live broadcast system according to the embodiments of the present invention has the features of 1 to 6 as follows.

1. 논리적 스트리밍 1. Logical Streaming 클라우드cloud (Logical Streaming Cloud)(Logical Streaming Cloud)

본 발명의 실시예들에 따른 오픈형 생중계 시스템(100)을 이용하여 방송을 송출하기 위해, 송출자(140)는 방송을 등록해야 한다. 이때, 방송을 등록하게 되면, 하나의 채널이 생성될 수 있고, 생성된 채널에는 방송의 송출을 위해 필요한 스트림 키가 제공될 수 있다. 송출자(140)는 이러한 스트림 키를 이용하여 항상 동일한 주소로 방송을 송출할 수 있으며, 오픈형 생중계 시스템(100)은 항상 동일한 주소로 해당 채널의 방송을 시청자(150)에게 제공할 수 있다. 다시 말해, 송출자(140)는 항상 동일한 주소로 방송을 송출할 수 있으며, 시청자(150)는 송출자(140)의 특정 방송을 항상 동일한 주소로 시청할 수 있게 된다.In order to broadcast a broadcast using the open live broadcast system 100 according to embodiments of the present invention, the sender 140 must register a broadcast. In this case, when a broadcast is registered, one channel may be generated, and the generated channel may be provided with a stream key necessary for broadcasting the broadcast. The sender 140 may always broadcast the same address using the stream key, and the open live system 100 may always provide the viewer 150 with the broadcast of the corresponding channel at the same address. In other words, the sender 140 can always broadcast the same address, the viewer 150 can always watch a particular broadcast of the sender 140 at the same address.

도 9는 본 발명의 일실시예에 있어서, 생중계를 위한 송출 주소와 시청 주소의 예를 도시한 도면이다. 도 9는 송출자(140)가 RTMP(Real Time Messaging Protocol)을 이용하여 방송을 송출함에 있어서, 송출자(140)에게 할당된 스트림 키 'xyzc123'을 이용하여 생성되는 송출 주소 'rtmp://tv.bbb.com/xyzc123'로 방송을 송출하는 예를 나타내고 있다. 또한, 도 9는 시청자(150)가 HLS(HTTP Live Streaming) 프로토콜을 이용하여 방송을 시청함에 있어서, 송출자(140)의 이름 'aaa'를 이용하여 생성된 시청 주소 'http://streamfarm.bbb.com/aaa.m3u8'로 해당 방송을 시청하는 예를 나타내고 있다. 따라서, 시청자(150)는 마치 TV의 특정 방송사의 방송을 특정 채널에서 시청할 수 있는 개념과 유사한 개념으로 특정 방송에 접근할 수 있게 된다.9 is a diagram illustrating an example of a broadcast address and a viewing address for live broadcasting in an embodiment of the present invention. 9 shows a sender address' rtmp: // generated using the stream key 'xyzc123' assigned to the sender 140 when the sender 140 transmits the broadcast using the Real Time Messaging Protocol (RTMP). An example of broadcasting a broadcast to tv.bbb.com/xyzc123 'is shown. In addition, FIG. 9 shows a viewer address 'http: // streamfarm.' Generated using the name 'aaa' of the sender 140 when the viewer 150 watches a broadcast using the HLS (HTTP Live Streaming) protocol. An example of watching the broadcast at bbb.com/aaa.m3u8 'is shown. Accordingly, the viewer 150 may access a specific broadcast in a concept similar to the concept of viewing a broadcast of a specific broadcaster of a TV on a specific channel.

방송 등록 시 생성되는 채널은 방송에 대한 정보만을 생성하고, 물리적인 서버와 연결되지 않기 때문에 생성 개수에 제한이 없으며, 생성 개수의 증가가 시스템에 전혀 영향을 주지 않는다. 다시 말해, 채널을 생성하더라도 해당 채널을 위해 오픈형 생중계 플랫폼(100)의 리소스가 할당되지 않는다. 실제로 오픈형 생중계 플랫폼(100)의 리소스가 이용되는 시점은 방송의 송출이 발생하는 시점으로, 이러한 구조는 임의의 송출자들이 다수의 방송을 등록하고, 실제 방송 시간이 짧은 오픈형 라이브 서비스 구조에 매우 적합하다.The channel generated at the time of broadcasting registration generates only the information on the broadcast, and is not limited to the number of generations because it is not connected to a physical server, and the increase in the number of generations does not affect the system at all. In other words, even if a channel is created, resources of the open live platform 100 are not allocated for the channel. In fact, when the resources of the open live broadcast platform 100 are used, the broadcast transmission occurs. Such a structure is suitable for an open live service structure in which arbitrary broadcasters register a plurality of broadcasts and have a short actual broadcast time. Do.

2. 동적이고 자율적인 조정 시스템(Dynamic and Autonomous Coordination System)2. Dynamic and Autonomous Coordination System

오픈형 생중계 플랫폼(100)의 서버들은 송출이 발생하는 시점에 동적으로 할당되며, 송출이 발생하기 전까지는 풀에서 대기상태로 존재하게 된다. 송출의 요청이 발생하게 되면, L4 스위치(제1 L4 스위치(210))에 의해 퍼블리싱 포인트 서버 풀(220)에서 임의의 퍼블리싱 포인트 서버가 선택되며, 코디네이션(120)에 의해 인코딩 서버 풀(230)에서 인코더 서버 선택 알고리즘에 다라 인코더 서버가 선택될 수 있다.The servers of the open live platform 100 are dynamically allocated at the time when the transmission occurs, and remain in the pool in the pool until the transmission occurs. When a request for transmission occurs, an arbitrary publishing point server is selected from the publishing point server pool 220 by the L4 switch (first L4 switch 210), and the encoding server pool 230 is selected by the coordination 120. The encoder server may be selected according to the encoder server selection algorithm in.

인코더 서버 선택 알고리즘은 아래 (a), (b), (c)와 같다.The encoder server selection algorithm is as follows (a), (b), (c).

(a) 퍼블리싱 포인트 서버와 같은 로컬 머신에 있는 인코더 서버 중에 대기 상태인 인코더 서버를 선택.(a) Select an encoder server on standby among encoder servers on the same local machine as the publishing point server.

(b) 상술한 (a)를 만독하는 인코더 서버가 없는 경우, 퍼블리싱 포인트 서버와 같은 구역(region)에 있는 인코더 서버 중 대기 상태인 인코더 서버를 선택.(b) If there is no encoder server that reads (a) above, select an encoder server in standby state among the encoder servers in the same region as the publishing point server.

(c) 상술한 (a)나 (b)를 만족하는 인코더 서버가 없는 경우, 방송 송출을 요청한 채널보다 우선 순위가 낮은 채널의 방송을 송출 중인 인코더 서버를 선택. (이 경우, 선택된 인코더 서버는 현재 처리 중인 채널의 작업을 종류하고, 새로 요청된 방송의 송출 요청을 처리함.)(c) If there is no encoder server that satisfies the above-mentioned (a) or (b), select an encoder server that is broadcasting a channel having a lower priority than a channel that has requested broadcasting. (In this case, the selected encoder server types the job of the channel currently being processed and processes the request for transmission of the newly requested broadcast.)

오픈형 생중계 플랫폼(100)는 중앙 집중적인 제어 없이 각 단계별로 자율적으로 방송 송출 요청을 처리할 수 있다.The open live platform 100 may process a broadcast transmission request autonomously at each step without centralized control.

도 10은 본 발명의 일실시예에 있어서, 방송 송출 요청을 처리하는 과정의 예를 도시한 도면이다. 도 10의 실시예는 송출자(140)로부터의 방송 송출 요청에 따라, 제1 L4 스위치(210)가 퍼블리싱 포인트 서버 1(1010)을 선택하고, 선택된 퍼블리싱 포인트 서버 1(1010)로 방송 송출 요청을 전달하는 예를 나타내고 있다. 또한, 도 10의 실시예에서 선택된 퍼블리싱 포인트 서버 1(1010)은 요청된 방송을 코디네이터(120)에 알리고 요청된 방송이 등록된 정상적인 방송인지 여부를 코디네이터(120)를 통해 확인한 후, 송출자(140)로부터 송출되는 방송의 스트리밍 데이터를 받아주는 역할을 수행할 수 있다. 코디네이터(120)는 도 6을 통해 설명한 바와 같이, 정상적인 방송에 대한 방송 송출 요청에 대해, 퍼블리싱 포인트 서버 1(1010)을 위한 인코더 서버를 할당할 수 있다.10 illustrates an example of a process of processing a broadcast transmission request according to an embodiment of the present invention. In the embodiment of FIG. 10, the first L4 switch 210 selects the publishing point server 1 1010 according to the broadcast transmission request from the sender 140, and transmits the broadcast transmission request to the selected publishing point server 1 1010. An example of passing is shown. In addition, the publishing point server 1 1010 selected in the embodiment of FIG. 10 notifies the coordinator 120 of the requested broadcast and confirms whether the requested broadcast is a registered normal broadcast through the coordinator 120, and then sends a caller ( 140 may play a role of receiving the streaming data of the broadcast from the broadcast. As described with reference to FIG. 6, the coordinator 120 may allocate an encoder server for the publishing point server 1 1010 with respect to a broadcast transmission request for a normal broadcast.

도 11은 본 발명의 일실시예에 있어서, 인코딩 과정의 예를 도시한 도면이다. 도 11의 실시예는 코디네이터(120)가 정상적인 방송에 대한 방송 송출 요청에 따라 인코더 서버를 선택(도 11의 실시예에서는 인코더 서버 1(1110))하고, 선택된 인코더 서버 1(1110)의 작업 목록에 방송 송출 작업을 등록하는 예를 나타내고 있다. 이때, 대기 상태의 인코더 서버들 각각은 자신의 작업 목록을 모니터링할 수 있다. 다시 말해, 인코더 서버 1(1110)은 자신의 작업 목록인 '인코더 서버 1 작업 목록'(1120)을 모니터링하고 있다가, 코디네이터(120)에 의해 방송 송출 작업이 등록됨에 따라, 등록된 정보를 이용하여 스트리밍 데이터를 수신할 수 있으며, 수신된 스트리밍 데이터에 대한 인코딩 작업을 수행할 수 있다. 예를 들어, 인코더 서버 1(1110)은 등록된 정보를 통해 퍼블리싱 포인트 서버 1(1010)을 식별할 수 있으며, 식별된 퍼블리싱 포인트 서버 1(1010)로 스트리밍 데이터를 요청할 수 있다. 퍼블리싱 포인트 서버 1(1010)은 인코더 서버 1(1110)의 요청에 따라 송출자(140)로부터 제1 L4 스위치(210)를 통해 전달받은 스트리밍 데이터를 인코더 서버 1(1110)로 전송할 수 있다. 이때, 인코더 서버 1(1110)은 퍼블리싱 포인트 서버 1(1010)로부터 수신되는 스트리밍 데이터를 인코딩할 수 있다.11 is a diagram illustrating an example of an encoding process according to an embodiment of the present invention. In the embodiment of FIG. 11, the coordinator 120 selects an encoder server according to a broadcast transmission request for a normal broadcast (in the embodiment of FIG. 11, encoder server 1 1110) and a task list of the selected encoder server 1 1110. An example of registering a broadcast transmission job is shown in FIG. At this time, each of the standby encoder server may monitor its own work list. In other words, the encoder server 1 1110 monitors its own task list 'Encoder server 1 task list' 1120 and uses the registered information as a broadcast transmission task is registered by the coordinator 120. The streaming data can be received and an encoding operation can be performed on the received streaming data. For example, the encoder server 1 1110 may identify the publishing point server 1 1010 through the registered information, and may request streaming data from the identified publishing point server 1 1010. The publishing point server 1 1010 may transmit the streaming data received from the sender 140 through the first L4 switch 210 to the encoder server 1 1110 according to a request of the encoder server 1 1110. In this case, the encoder server 1 1110 may encode streaming data received from the publishing point server 1 1010.

도 12는 본 발명의 일실시예에 있어서, 송출 발생 시 각 서버들이 동적으로 할당되는 과정의 예를 도시한 도면이다. 도 12에 도시된 과정 ①, 과정 ②, 과정 ③, 과정 ④ 및 과정 ⑤는 앞서 도 6을 통해 설명한 과정 (1-1) 내지 과정 (1-5)에 대응될 수 있다.12 is a diagram for one example of a process of dynamically allocating each server when a transmission occurs in one embodiment of the present invention. Processes ①, process ②, process ③, process ④ and process ⑤ illustrated in FIG. 12 may correspond to the processes (1-1) to (1-5) described above with reference to FIG. 6.

과정 ①은 송출자(140)가 방송 송출을 시도하는 과정의 예일 수 있다.Process ① may be an example of a process in which the sender 140 attempts to broadcast.

과정 ②는 제1 L4 스위치(210)가 퍼블리싱 포인트 서버 풀(220)에 포함된 퍼블리싱 포인트 서버들 중 하나인 퍼블리싱 포인트 서버(1210)를 선택하여 송출 요청을 전달하는 과정의 예일 수 있다.Process ② may be an example of a process in which the first L4 switch 210 selects a publishing point server 1210 that is one of the publishing point servers included in the publishing point server pool 220, and transmits a transmission request.

과정 ③은 송출 요청을 받은 퍼블리싱 포인트 서버(1210)가 코디네이터(120)에게 방송 송출 요청에 대해 등록을 하면서 인코딩 서버의 할당을 요청하는 과정의 예일 수 있다.Process ③ may be an example of a process in which the publishing point server 1210 receiving the transmission request requests the coordinator 120 to allocate the encoding server while registering the broadcast transmission request.

과정 ④는 코디네이터(120)가 인코더 서버 풀(230)에 포함된 인코더 서버들 중 하나인 인코더 서버(1220)을 선택하고 스트리밍 요청 정보를 등록하는 과정의 예일 수 있다. 여기서 스트리밍 요청 정보를 등록하는 것은 도 11을 통해 설명한 바와 같이, 선택된 인코더 서버(1220)의 작업 목록에 방송 송출 작업을 등록하는 것에 대응될 수 있다.Process ④ may be an example of a process in which the coordinator 120 selects an encoder server 1220 which is one of encoder servers included in the encoder server pool 230 and registers streaming request information. The registration of the streaming request information may correspond to registering a broadcast transmission job in the job list of the selected encoder server 1220 as described with reference to FIG. 11.

과정 ⑤는 인코더 서버(1220)가 퍼블리싱 포인트 서버(1210)에 접속하여 스트리밍 데이터를 요청하고, 요청된 스트리밍 데이터를 퍼블리싱 포인트 서버(1210)로부터 수신하여 설정된 화질 등과 같은 기 설정된 프로파일에 따라 인코딩하는 과정의 예일 수 있다. 이때, 인코더 서버(1220)는 화질 별 TS 파일을 생성할 수 있다.In the process ⑤, the encoder server 1220 accesses the publishing point server 1210 to request streaming data, receives the requested streaming data from the publishing point server 1210, and encodes the data according to a preset profile such as a set image quality. It may be an example of. At this time, the encoder server 1220 may generate a TS file for each picture quality.

방송의 송출이 종료되면, 할당된 퍼블리싱 포인트 서버(1210)와 인코더 서버(1220)는 다시 사용 가능한 상태인 대기 상태로 퍼블리싱 포인트 서버 풀(220)과 인코더 서버 풀(230)에서 대기하게 된다.When transmission of the broadcast ends, the assigned publishing point server 1210 and the encoder server 1220 wait in the publishing point server pool 220 and the encoder server pool 230 in a standby state which is available again.

이처럼, 본 발명의 실시예들에서는 방송의 송출이 실제로 발생하는 경우에만 퍼블리싱 포인트 서버와 인코더 서버가 동적으로 할당되기 때문에 특정 방송을 위한 서버가 미리 예약된 상태(미리 할당된 상태)로 대기할 필요가 없어 모든 서버들이 효율적으로 사용될 수 있다. 또한, 서버를 각 서버 풀에 추가하는 것만으로도 오픈형 생중계 플랫폼(100)의 수용력(capacity)을 높일 수 있기 때문에, 쉽게 오픈형 생중계 플랫폼(100)의 수용력(capacity)을 증가시킬 수 있다.As described above, in the embodiments of the present invention, since the publishing point server and the encoder server are dynamically allocated only when the broadcast is actually transmitted, the server for the specific broadcast needs to wait in a pre-reserved state (pre-allocated state). All servers can be used efficiently. In addition, since the capacity of the open live platform 100 can be increased simply by adding a server to each server pool, the capacity of the open live platform 100 can be easily increased.

3. 자동 장애 복구 메커니즘(Automatic 3. Automatic failover mechanism failoverfailover mechanism) mechanism)

오픈형 생중계 플랫폼(100)에서는 퍼블리싱 포인트 서버와 인코더 서버가 서로 분리되어 있으며, 특정 채널에 서버가 연관되어 있지 않기 때문에 비정상적인 동작에 대해 빠르게 복구가 가능해진다.In the open live platform 100, the publishing point server and the encoder server are separated from each other, and since a server is not associated with a specific channel, it is possible to quickly recover from abnormal operation.

도 13 및 도 14는 본 발명의 일실시예에 있어서, 퍼블리싱 포인트 서버에 대한 자율적인 장애복구 과정의 예를 도시한 도면들이다.13 and 14 illustrate examples of an autonomous failover process for a publishing point server according to an exemplary embodiment of the present invention.

도 13은 도 12을 통해 설명한 퍼블리싱 포인트 서버(1210)가 비정상 종료된 상황의 처리를 나타내고 있다. 퍼블리싱 포인트 서버(1210)가 비정상 종료되는 경우, 코디네이터(120)는 이러한 퍼블리싱 포인트 서버(1210)의 비정상 종료를 감지할 수 있으며, 퍼블리싱 포인트 서버(1210)에 대해 할당된 인코더 서버(1220)로 송출 종료 이벤트를 전달할 수 있다. 이 경우, 인코더 서버(1220)는 다시 다른 방송의 송출(스트리밍)을 위한 대기상태로 전환될 수 있다.FIG. 13 illustrates processing of a situation in which the publishing point server 1210 described above with reference to FIG. 12 is abnormally terminated. If the publishing point server 1210 is abnormally terminated, the coordinator 120 may detect such an abnormal termination of the publishing point server 1210 and send it to the encoder server 1220 assigned to the publishing point server 1210. You can dispatch the shutdown event. In this case, the encoder server 1220 may be switched back to the standby state for the transmission (streaming) of another broadcast.

도 14는 송출자(140)에 의해 송출이 재시도되는 경우, 제1 L4 스위치(210)에 의해 다른 퍼블리싱 포인트 서버(1410)가 선택되고, 다른 퍼블리싱 포인트 서버(1410)의 요청에 따라 코디네이터(120)가 새로운 인코더 서버(1420)를 할당함에 따라 퍼블리싱 포인트 서버(1410)와 인코더 서버(1420)에 의해 스트리밍이 재개되는 과정을 나타내고 있다. 다시 말해, 기존 퍼블리싱 포인트 서버(1210)에 장애가 발생하는 경우, 송출 재시도에 따라 최초 송출 요청과 동일한 과정이 진행되어 장애복구가 이루어질 수 있다.FIG. 14 illustrates that when a transmission is retried by the sender 140, another publishing point server 1410 is selected by the first L4 switch 210, and a coordinator (eg, at the request of another publishing point server 1410) is selected. As 120 allocates a new encoder server 1420, the streaming point is resumed by the publishing point server 1410 and the encoder server 1420. In other words, when a failure occurs in the existing publishing point server 1210, a failure recovery may be performed by performing the same process as the initial transmission request according to the transmission retry.

도 15 및 도 16은 본 발명의 일실시예에 있어서, 인코더 서버에 대한 자율적인 장애복구의 과정의 예를 도시한 도면들이다.15 and 16 illustrate an example of a process of autonomous failover for an encoder server according to an embodiment of the present invention.

도 15는 도 12를 통해 설명한 인코더 서버(1220)가 비정상 종료된 상황의 처리를 나타내고 있다. 인코더 서버(1220)가 비정상 종료되는 경우, 코디네이터(120)는 이러한 인코더 서버(1220)의 비정상 종료를 감지할 수 있으며, 현재 할당 가능한 다른 인코더 서버의 할당을 시도하게 된다.FIG. 15 illustrates processing of a situation in which the encoder server 1220 described above with reference to FIG. 12 is abnormally terminated. When the encoder server 1220 abnormally terminates, the coordinator 120 may detect abnormal termination of the encoder server 1220, and attempts to allocate another encoder server currently assignable.

도 16은 코디네이터(120)가 새로운 인코더 서버(1420)를 퍼블리싱 포인트 서버(1210)에 할당함에 따라 퍼블리싱 포인트 서버(1210)와 새로운 인코더 서버(1420)를 통해 송출이 재개되어 빠르게 방송 송출에 대한 장애가 복구될 수 있음을 나타내고 있다.16 shows that as the coordinator 120 assigns a new encoder server 1420 to the publishing point server 1210, transmission is resumed through the publishing point server 1210 and the new encoder server 1420, so that there is no obstacle to broadcast transmission. It can be recovered.

이러한 실시예들에서 퍼블리싱 포인트 서버와 인코더 서버간의 스트리밍 방식은 할당된 인코더 서버가 해당하는 퍼블리싱 포인트 서버에 접속하여 스트리밍 데이터를 받아오는 방식(PULL 방식)이기 때문에, 퍼블리싱 포인트 서버에서 인코더 서버의 장애 상황에 대응할 필요가 없으며, 송출 재시도와 같은 동작도 요구되지 않는다.In such embodiments, since the streaming method between the publishing point server and the encoder server is a method in which the assigned encoder server accesses the corresponding publishing point server to receive streaming data (PULL method), a failure situation of the encoder server in the publishing point server There is no need to respond to this, and no operation such as retry is required.

다만, 서버의 장애복구 시 플레이어의 재생 처리를 위한 동작이 추가되어야 할 필요성이 있다. 예를 들어, 퍼블리싱 포인트 서버나 인코더 서버의 장애복구 발생 시, 시청자(150)에게 제공되는 스트리밍 데이터가 연속되지 않게 되기 때문에 이에 대한 처리를 통해 플레이어에서 정지 없이 재생이 가능하도록 할 수 있다. 이를 위해, 업로더(일례로, 도 16에서 인코더 서버(1420)와 쌍을 이루게 되는 업로더)는 처음 m3u8 파일을 생성하기 전에 해당 채널을 위한 m3u8 파일의 존재 유무를 먼저 확인한 후, 이미 m3u8 파일이 존재하는 경우 HLS 규약에 따라 '#EXT※DISCONTINUITY'를 추가한 후 이미 존재하는 m3u8 파일에 TS 리스트를 첨부하게 된다. 플레이어는 m3u8 파일에 '#EXT※DISCONTINUITY'가 존재하는 경우, 이전 스트리밍 데이터와 연속되지 않음을 감지하고, 이후 데이터를 처리하게 되어 서버의 장애복구가 발생하더라도 재생에 문제가 발생하지 않게 된다.However, when the server fails over, there is a need to add an operation for processing the player. For example, when failover of the publishing point server or the encoder server occurs, streaming data provided to the viewer 150 is not continuous, so that the player can play without stopping through the processing. For this purpose, the uploader (for example, the uploader paired with the encoder server 1420 in FIG. 16) first checks the existence of the m3u8 file for the channel before generating the m3u8 file, and then has already m3u8 file. If there exists, add '# EXT ※ DISCONTINUITY' according to HLS protocol and attach TS list to already existing m3u8 file. If '# EXT ※ DISCONTINUITY' exists in the m3u8 file, the player detects that it is not continuous with the previous streaming data, and processes the data afterwards so that playback does not occur even if a server failover occurs.

4. 근본적인 글로벌 플랫폼(Basically global platform)4. Basically global platform

오픈형 생중계 플랫폼(100)은 국가나 지역 단위를 구역(region)으로 구별하고, 구역에 따라 라이브 스트리밍 팜들을 구성할 수 있다.The open live platform 100 may divide a country or a region unit into regions and configure live streaming farms according to the regions.

도 17은 본 발명의 일실시예에 있어서, 구역에 따른 오픈형 생중계 플랫폼의 구현 예를 도시한 도면이다. 도 17은 제1 국가의 구역에 구현된 제1 라이브 스트리밍 팜(1710)과 제1 VOD 팜(1720), 그리고 제2 국가의 구역에 구현된 제2 라이브 스트리밍 팜(1730)과 제2 VOD 팜(1720)이 각각 코디네이터(120)와 연결되는 구현 예를 나타내고 있다. 이 경우, 서로 다른 구역에서 방송의 송출 및 시청을 할 수 있다. 이때, 빠른 방송 스트리밍을 위해 프록시 가속의 개념이 사용될 수 있다. 프록시 가속이란 송출과 시청 구역이 서로 다른 경우 네트워크 속도가 느린 사용자 구간을 최소화하고, 속도가 빠른 서버간 전용선 구간을 이용하여 스트리밍 서비스를 제공하는 방식이다.FIG. 17 is a diagram for one embodiment of an open live platform according to a zone according to one embodiment of the present invention; FIG. 17 illustrates a first live streaming farm 1710 and a first VOD farm 1720 implemented in a zone of a first country, and a second live streaming farm 1730 and a second VOD farm implemented in a zone of a second country. 1720 illustrates an example in which the coordinator 120 is connected to each other. In this case, broadcasting and viewing can be performed in different zones. In this case, the concept of proxy acceleration may be used for fast broadcast streaming. Proxy acceleration is a method of minimizing a user section having a slow network speed and providing a streaming service using a fast server-to-server line when different transmission and viewing areas are different.

도 18은 본 발명의 일실시예에 있어서, 프록시 가속의 예를 설명하기 위한 도면이다. 도 18은 제1 국가의 송출자(1810)의 방송을 제1 국가에 구현된 퍼블리싱 포인트 서버 풀(1820), 인코더 서버 풀(1830), 분산 파일 시스템(1840) 및 프록시 서버(1850)를 통해 제1 국가에 위치한 제1 시청자(1860)에게 제공하는 예를 나타내고 있다. 이때, 도 18에 도시된 바와 같이, 흰색 화살표는 사용자 네트워크 구간을, 회색 화살표는 서버간 네트워크 구간을, 검은색 화살표는 구역(region)간 서버 전용 네트워크 구간을 각각 나타내고 있다.18 is a diagram for explaining an example of proxy acceleration according to an embodiment of the present invention. 18 illustrates broadcasting of a sender 1810 of a first country through a publishing point server pool 1820, an encoder server pool 1830, a distributed file system 1840, and a proxy server 1850 implemented in a first country. An example of providing the first viewer 1860 located in the first country is shown. In this case, as illustrated in FIG. 18, a white arrow represents a user network section, a gray arrow represents a network section between servers, and a black arrow represents a server dedicated network section between regions.

제1 시청자(1860)는 제1 국가에 위치하기 때문에 프록시 서버(1850)를 통해서도 빠른 방송 스트리밍을 제공받을 수 있다. 한편, 제2 국가에 위치하는 제2 시청자(1870)가 프록시 서버(1850)를 통해 방송 스트리밍을 제공받는 경우, 네트워크 속도가 느린 사용자 구간이 매우 길어지기 때문에 빠른 방송 스트리밍을 제공받기가 어렵다. 따라서, 본 실시예에서는 제1 국가에 구현된 프록시 서버(1850)가 방송 스트리밍을 검은색 화살표로 표시된 프록시 가속을 위한 전용선 구간을 통해 제2 국가에 구현된 프록시 서버(1880)로 빠르게 전송하고, 제2 국가에 위치하는 제2 시청자(1870)가 제2 국가에 구현된 프록시 서버(1880)를 통해 바송 스트리밍을 제공받을 수 있다. 이 경우, 네트워크 속도가 느린 사용자 구간이 최소화되기 때문에 제2 국가에 위치하는 제2 시청자(1870)에게도 제1 국가의 송출자(1810)의 방송 스트리밍을 빠르게 서비스할 수 있게 된다.Since the first viewer 1860 is located in the first country, fast broadcast streaming may also be provided through the proxy server 1850. On the other hand, when the second viewer 1870 located in the second country is provided with broadcast streaming through the proxy server 1850, it is difficult to receive fast broadcast streaming because a user section having a slow network speed becomes very long. Therefore, in the present embodiment, the proxy server 1850 implemented in the first country quickly transmits the broadcast streaming to the proxy server 1880 implemented in the second country through a dedicated line section for proxy acceleration indicated by a black arrow. The second viewer 1870 located in the second country may be provided with bounce streaming through the proxy server 1880 implemented in the second country. In this case, since a user section having a slow network speed is minimized, broadcast streaming of the sender 1810 of the first country can be quickly provided to the second viewer 1870 located in the second country.

5. 효과적인 5. Effective 머신machine 활용(Efficient machine utilization) Effective machine utilization

오픈형 생중계 플랫폼(100)에서는 인코딩을 담당하는 물리적 머신의 인코딩 성능에 따라 하나의 물리적인 머신에서 동작할 수 있는 인코더 서버의 수를 설정할 수 있다. 예를 들어, 하나의 물리적 머신이 720p 해상도를 갖는 5개의 스트리밍 데이터를 동시에 인코딩할 수 있으며, 1080p 해상도를 갖는 스트리밍 데이터는 동시에 하나만 인코딩할 수 있다고 가정하자. 이 경우, 오픈형 생중계 플랫폼(100)에서는 해당 물리적 머신에 5개의 인코더 서버를 설치하고, 720p 해상도를 갖는 스트리밍 데이터를 인코딩하는 경우에는, 설치된 5 개의 인코더 서버가 모두 동작하도록 인코더 서버들을 할당할 수 있다. 만약, 1080p 해상도를 갖는 스트리밍 데이터를 하나의 인코더 서버가 인코딩하고 있는 경우, 나머지 4 개의 인코더 서버는 코디네이터(120)에 의해 할당되지 않도록 제어할 수 있다.In the open live platform 100, the number of encoder servers capable of operating in one physical machine may be set according to the encoding performance of the physical machine in charge of encoding. For example, suppose that one physical machine can simultaneously encode five streaming data with 720p resolution, and only one streaming data with 1080p resolution can be encoded at the same time. In this case, in the open live platform 100, five encoder servers are installed in a corresponding physical machine, and when encoding streaming data having 720p resolution, the encoder servers may be allocated to operate all five installed encoder servers. . If one encoder server encodes streaming data having a 1080p resolution, the other four encoder servers may control not to be allocated by the coordinator 120.

6. 멀티-6. Multi- 테넌트Tenant (Multi-tenant)(Multi-tenant)

오픈형 생중계 플랫폼(100)은 서로 다른 여러 서비스에서 동시에 사용이 가능하며, 각 채널들은 생성 시점에 특정 서비스 카테고리에 속할 수 있다. 그러나, 오픈형 생중계 플랫폼(100)은 채널에 소속된 서비스와 상관없이 스트리밍 데이터를 독립적으로 관리하기 때문에, 동시에 서로 다른 서비스에서 서로 간섭 없이 안정적으로 오픈형 생중계 플랫폼(100)을 이용할 수 있게 된다.The open live platform 100 may be used simultaneously in several different services, and each channel may belong to a specific service category at the time of creation. However, since the open live platform 100 independently manages streaming data regardless of a service belonging to a channel, the open live platform 100 can use the open live platform 100 stably without interference from each other.

도 19는 본 발명의 일실시예에 있어서, 오픈형 생중계 플랫폼의 멀티-테넌트의 개념을 설명하기 위한 도면이다. 도 19는 동일한 서비스를 이용하는 서로 다른 송출자들이 아니라, 제1 서비스(1910), 제2 서비스(1920) 및 제3 서비스(1930)와 같이, 서비스 제공자가 서로 다른 서비스들의 송출자들이 방송을 송출하는 경우를 나타내고 있다. 이 경우, 본 발명의 실시예들에 따른 라이브 스트리밍 팜(1940)은 각 채널을 서비스와는 무관하게 독립적으로 관리(앞서 설명한 바와 같이 송출자가 하나의 방송에 대해 할당되는 스트림 키를 이용하여 생성되는 동일한 주소를 통해 방송을 송출하고, 해당 방송을 시청하기 위해 할당되는 동일한 주소를 통해 시청자들이 방송을 시청)하기 때문에 서비스간의 간섭 없이 방송을 중계할 수 있다. 따라서, 제1 서비스 시청자(1950), 제2 서비스 시청자(1960) 및 제3 서비스 시청자(1970)가 각각의 서로 다른 서비스의 방송 스트림을 제공받을 수 있게 된다.FIG. 19 is a diagram for explaining the concept of a multi-tenant of an open live platform according to an embodiment of the present invention. 19 is not a different sender using the same service, but a broadcaster broadcasts broadcasters whose services are different from each other, such as the first service 1910, the second service 1920, and the third service 1930. The case is shown. In this case, the live streaming farm 1940 according to the embodiments of the present invention manages each channel independently of a service (as described above, a transmitter is generated using a stream key assigned to one broadcast). Broadcasts are transmitted through the same address, and viewers watch the broadcast through the same address assigned to view the broadcast.), So that the broadcast can be relayed without interference between services. Accordingly, the first service viewer 1950, the second service viewer 1960, and the third service viewer 1970 may be provided with broadcast streams of respective different services.

7. 우선순위 기반 스트리밍 스케줄링(Priority based Streaming scheduling)7. Priority based Streaming Scheduling

오픈형 생중계 플랫폼(100)은 서버들을 효율적으로 사용하면서도, 언제든지 중요 방송의 송출이 가능하도록 하기 위해 채널에 '우선순위'를 부여할 수 있다. 채널의 우선순위는 채널 생성 시 설정될 수 있으며, 일반적인 상황에서는 방송 송출에 전혀 영향을 주지 않는다. 그러나, 더 이상 방송 송출을 위해 사용될 수 있는 리소스(서버들)가 없는 경우에는 채널에 부여된 '우선순위'를 이용하여 중요 방송의 송출을 보장할 수 있다.The open live platform 100 may give the channel a priority in order to enable the use of servers efficiently and to transmit important broadcasts at any time. The priority of a channel may be set at the time of channel generation, and under normal circumstances does not affect broadcast transmission. However, when there are no more resources (servers) that can be used for broadcast transmission, it is possible to guarantee the transmission of important broadcasts using the 'priority' assigned to the channel.

예를 들어, 현재 오픈형 생중계 플랫폼(100)의 모든 리소스(서버들)가 사용 중인 상태에서 새로운 방송 송출이 요구되는 경우, 오픈형 생중계 플랫폼(100)은 새로운 방송 송출을 요청한 채널보다 우선 순위가 낮은 채널들 중에서 임의의 채널을 선택하여 송출을 종료시키고, 새로 요청한 채널의 방송 송출을 서비스할 수 있다. 이러한 동작은 현재 시스템의 모든 리소스(서버들)이 사용중인 경우에도 중요 방송들의 방송 송출을 보장해줄 수 있다.For example, if a new broadcast transmission is required while all resources (servers) of the open live platform 100 are currently in use, the open live platform 100 is a channel having a lower priority than the channel that requested the new broadcast transmission. Any channel can be selected to terminate the transmission, and the broadcast transmission of the newly requested channel can be serviced. This operation can ensure the broadcast transmission of important broadcasts even when all resources (servers) of the system are currently in use.

우선순위는 순위가 높은 순서로 'Super', 'High', 'Low', 'Zero' 등과 같이 복수의 레벨로 분류되어 채널마다 할당될 수 있다.The priority may be divided into a plurality of levels such as 'Super', 'High', 'Low', and 'Zero' in order of high priority, and may be allocated to each channel.

일실시예에 따른 오픈형 생중계 플랫폼(100)은 송출자의 단말로부터 송출되는 스트리밍 데이터를 수신하기 위한 적어도 하나의 제1 서버를 관리하는 제1 서버 풀, 상기 제1 서버 풀에서 할당된 제1 서버로부터 상기 스트리밍 데이터를 전달받아 인코딩하기 위한 적어도 하나의 제2 서버를 관리하는 제2 서버풀 및 상기 제1 서버 풀 및 상기 제2 서버 풀의 서버들의 상태를 관리하고, 상기 제1 서버 풀에서 할당된 제1 서버의 요청에 따라 상기 제2 서버 풀에서 제2 서버를 동적으로 할당하는 코디네이터를 포함할 수 있다. 여기서, 송출자의 단말은 송출자(140)에, 제1 서버 풀은 퍼블리싱 포인트 서버 풀(220)에, 제2 서버 풀은 인코더 서버 풀(230)에, 코디네이터는 코디네이터(120)에 각각 대응할 수 있다. 이때, 오픈형 생중계 플랫폼(100)은 스트리밍 데이터가 상기 송출자의 단말에서 송출됨에 응답하여, 상기 제1 서버 풀에서 임의의 제1 서버를 동적으로 할당하고, 상기 할당된 제1 서버를 통해 상기 송출되는 스트리밍 데이터를 수신할 수 있다. 이러한, 오픈형 생중계 플랫폼(100)은 송출자의 방송 송출이 발생하는 시점에 동적으로 서버들을 할당할 수 있게 되어 효율적으로 리소스를 활용할 수 있게 된다.The open live platform 100 according to an embodiment may include a first server pool managing at least one first server for receiving streaming data transmitted from a sender's terminal, and a first server pool allocated from the first server pool. A second server pool that manages at least one second server for receiving and encoding the streaming data, and manages states of the first server pool and servers of the second server pool and is allocated in the first server pool. According to the request of the first server may include a coordinator for dynamically allocating the second server in the second server pool. Here, the sender's terminal may correspond to the sender 140, the first server pool to the publishing point server pool 220, the second server pool to the encoder server pool 230, and the coordinator to the coordinator 120, respectively. have. In this case, the open live platform 100 dynamically allocates any first server from the first server pool in response to the streaming data being transmitted from the sender's terminal, and transmits the first server from the first server pool. Streaming data can be received. The open live platform 100 can allocate servers dynamically at the time of the broadcast transmission of the sender, thereby efficiently utilizing resources.

다른 실시예에서, 코디네이터는 상기 송출자의 방송이 등록되는 경우, 상기 방송을 위한 채널을 생성하고, 상기 채널에 대해 할당되는 고유 키를 이용하여 상기 방송의 스트리밍 데이터의 송출을 위한 송출 주소를 생성할 수 있으며, 오픈형 생중계 플랫폼(100)은 상기 송출 주소를 통해 상기 방송의 스트리밍 데이터가 송출됨에 응답하여 상기 제1 서버 풀에서 임의의 제1 서버를 동적으로 할당할 수 있다. 이 경우, 특정 방송에 대해 항상 동일한 송출 주소로 스트리밍 데이터를 송출할 수 있게 된다. 이와 유사하게 송출자에 대한 정보를 이용하여 생성되는 시청 주소를 이용하여 시청자들이 특정 방송을 항상 동일한 시청 주소를 통해 시청할 수 있도록 서비스를 제공할 수도 있다.In another embodiment, when the broadcaster of the sender is registered, the coordinator may generate a channel for the broadcast, and generate a broadcast address for transmitting the streaming data of the broadcast by using a unique key assigned to the channel. The open live platform 100 may dynamically allocate an arbitrary first server in the first server pool in response to the streaming data of the broadcast being transmitted through the transmission address. In this case, streaming data can always be transmitted to the same transmission address for a specific broadcast. Similarly, a service may be provided so that viewers can always watch a specific broadcast through the same viewing address by using a viewing address generated by using information about the sender.

또 다른 실시예에서 상기 코디네이터는, 상기 할당된 제2 서버의 작업 목록에 방송 송출 작업을 등록할 수 있다. 이때, 상기 제2 서버 풀에서 관리되는 적어도 하나의 제2 서버 각각은 자신의 작업 목록을 모니터링할 수 있으며, 자신의 작업 목록에 방송 송출 작업이 등록된 제2 서버는 상기 작업 목록에 등록된 정보를 이용하여 상기 제1 서버 풀에서 할당된 제1 서버를 식별하여 상기 할당된 제1 서버로부터 상기 스트리밍 데이터를 수신 및 인코딩할 수 있게 된다.In another embodiment, the coordinator may register a broadcast transmission job in a job list of the allocated second server. In this case, each of the at least one second server managed in the second server pool may monitor its own work list, and the second server whose broadcast transmission work is registered in its work list may include information registered in the work list. By using to identify the first server assigned in the first server pool it is possible to receive and encode the streaming data from the assigned first server.

또 다른 실시예에서, 오픈형 생중계 플랫폼(100)은 상기 스트리밍 데이터가 상기 송출자의 단말에서 송출됨에 응답하여, 상기 제1 서버 풀에서 임의의 제1 서버를 동적으로 선택하여 상기 송출자의 단말로부터 송출되는 스트리밍 데이터를 상기 선택된 제1 서버로 전달하는 스위치를 더 포함할 수 있다. 이러한 스위치는 앞서 설명한 제1 L4 스위치(210)에 대응할 수 있다.In another embodiment, the open live platform 100 dynamically selects any first server from the first server pool and is sent from the sender's terminal in response to the streaming data being sent from the sender's terminal. The apparatus may further include a switch configured to transfer streaming data to the selected first server. Such a switch may correspond to the first L4 switch 210 described above.

또 다른 실시예에서, 상기 제1 서버 풀에서 관리되는 적어도 하나의 제1 서버와 상기 제2 서버 풀에서 관리되는 적어도 하나의 제2 서버 각각은 실행 시 상기 코디네이터에 등록될 수 있다. 이 경우, 상기 코디네이터는, 상기 등록된 적어도 하나의 제1 서버 및 적어도 하나의 제2 서버의 상태를 모니터링할 수 있다. 이러한 모니터링은 할당된 제1 서버나 할당된 제2 서버의 장애를 감지하는데 이용될 수 있다.In another embodiment, each of at least one first server managed in the first server pool and at least one second server managed in the second server pool may be registered with the coordinator when executed. In this case, the coordinator may monitor the state of the registered at least one first server and at least one second server. Such monitoring may be used to detect a failure of an assigned first server or an assigned second server.

또 다른 실시예에서, 상기 코디네이터는, 상기 할당된 제1 서버의 장애를 감지하는 경우, 상기 할당된 제2 서버로 스트리밍 종료 이벤트를 전달하여 상기 할당된 제2 서버를 대기 상태로 전환시키고, 상기 송출자의 단말로부터 상기 스트리밍 데이터가 재송출됨에 따라 상기 제1 서버 풀에서 할당되는 다른 제1 서버의 요청에 따라 상기 제2 서버 풀에서 새로운 제2 서버를 할당할 수 있다. 이 경우, 다른 제1 서버와 새로운 제2 서버를 통해 스트리밍 데이터의 수신 및 인코딩이 이루어지기 때문에 기존 제1 서버의 장애에 대응할 수 있게 된다.In another embodiment, when the coordinator detects a failure of the allocated first server, the coordinator sends a streaming end event to the allocated second server to put the allocated second server into a standby state, and As the streaming data is retransmitted from the sender's terminal, a new second server may be allocated in the second server pool according to a request of another first server allocated in the first server pool. In this case, since the streaming data is received and encoded through another first server and a new second server, it is possible to cope with a failure of the existing first server.

또 다른 실시예에서, 상기 코디네이터는, 상기 할당된 제2 서버의 장애를 감지하는 경우, 상기 제2 서버 풀에서 새로운 제2 서버를 할당할 수 있다. 이때, 상기 할당된 새로운 제2 서버는 상기 할당된 제1 서버에 접속하여 상기 할당된 제1 서버로부터 상기 스트리밍 데이터를 수신하고, 상기 수신되는 스트리밍 데이터를 인코딩할 수 있다. 이 경우, 기존의 제1 서버와 할당된 새로운 제2 서버를 통해 스트리밍 데이터의 수신 및 인코딩이 이루어지기 때문에 기존 제1 서버의 장애에 대응할 수 있게 된다. 이미 설명한 바와 같이, 할당된 새로운 서버가 제1 서버로 풀(PULL) 방식으로 스트리밍 데이터를 요청하기 때문에 제1 서버로서의 퍼블리싱 포인트 서버는 제2 서버로서의 인코더 서버의 장애나 장애복구를 고려할 필요가 없게 된다.In another embodiment, when the coordinator detects a failure of the allocated second server, the coordinator may allocate a new second server from the second server pool. In this case, the allocated new second server may access the allocated first server, receive the streaming data from the allocated first server, and encode the received streaming data. In this case, since the streaming data is received and encoded through the existing first server and the new assigned second server, it is possible to cope with a failure of the existing first server. As already explained, the publishing point server as the first server does not need to consider the failure or failover of the encoder server as the second server because the new server allocated requests streaming data to the first server in a PULL manner. do.

또 다른 실시예에서, 오픈형 생중계 플랫폼(100)은 상기 동적으로 할당된 제2 서버에 의해 인코딩된 스트리밍 데이터를 저장하는 분산 파일 시스템 및 시청자 단말의 방송 시청 요청을 수신하고 상기 분산 파일 시스템에서 상기 인코딩된 스트리밍 데이터를 상기 시청자 단말로 제공하기 위한 적어도 하나의 제3 서버를 관리하는 제3 서버 풀을 더 포함할 수 있다. 여기서, 분산 파일 시스템은 도 2를 통해 설명한 분산 파일 시스템(240)에 제3 서버 풀은 도 2를 통해 설명한 프록시 서버 풀(250)에, 시청자 단말은 도 1을 통해 설명한 시청자(150)에 각각 대응할 수 있다. 이 경우, 상기 시청자 단말의 방송 시청 요청에 응답하여 상기 제3 서버 풀에서 임의의 제3 서버를 동적으로 할당하고, 상기 할당된 제3 서버를 통해 상기 분산 파일 시스템에서 상기 인코딩된 스트리밍 데이터를 상기 시청자 단말로 제공할 수 있다.In another embodiment, the open live platform 100 receives a broadcast viewing request of a viewer terminal and a distributed file system storing streaming data encoded by the dynamically allocated second server and encodes the broadcast file in the distributed file system. The apparatus may further include a third server pool managing at least one third server for providing the streamed data to the viewer terminal. In this case, the distributed file system includes the distributed file system 240 described with reference to FIG. 2, the third server pool with the proxy server pool 250 described with reference to FIG. 2, and the viewer terminal with the viewer 150 described with reference to FIG. 1. It can respond. In this case, in response to the broadcast viewing request of the viewer terminal, an arbitrary third server is dynamically allocated from the third server pool, and the encoded streaming data is transmitted from the distributed file system through the allocated third server. It can be provided to the viewer terminal.

또 다른 실시예에서, 오픈형 생중계 플랫폼(100)은 상기 시청자 단말의 방송 시청 요청에 응답하여 상기 제3 서버 풀에서 임의의 제3 서버를 동적으로 선택하여 상기 방송 시청 요청을 상기 선택된 제3 서버로 전달하는 스위치를 더 포함할 수 있다. 여기서 스위치는 도 2를 통해 설명한 제2 L4 스위치(260)에 대응할 수 있다.In another embodiment, the open live platform 100 dynamically selects any third server from the third server pool in response to the broadcast viewing request of the viewer terminal to direct the broadcast viewing request to the selected third server. The switch may further include. In this case, the switch may correspond to the second L4 switch 260 described with reference to FIG. 2.

또 다른 실시예에서, 국가 및 지역 중 적어도 하나에 따라 구분되는 구역(region)마다, 상기 제1 서버 풀, 상기 제2 서버 풀, 상기 분산 파일 시스템 및 상기 제3 서버 풀이 구성될 수 있다. 이러한 구성은 각각의 구역별로 네트워크 속도가 느린 사용자 구간을 줄일 수 있게 해준다.In another embodiment, the first server pool, the second server pool, the distributed file system, and the third server pool may be configured for each region divided according to at least one of a country and a region. This configuration makes it possible to reduce the slow network user intervals for each zone.

또 다른 실시예에서, 서로 다른 구역의 제3 서버들간에 전용선이 연결될 수 있다. 이 경우, 제1 구역에서 송출되는 스트리밍 데이터는 제1 구역의 제1 서버로 전달되어 제1 구역의 제2 서버에 의해 인코딩되고, 제1 구역의 제3 서버를 통해 제1 구역에 위치하는 시청자에게 제공될 수 있다. 또한, 제1 구역에서 송출되는 스트리밍 데이터는 제1 구역의 제3 서버와 전용선으로 연결된 제2 구역의 제3 서버를 통해 제2 구역에 위치하는 시청자에게 더 제공될 수 있다. 따라서, 제2 구역에 위치하는 시청자가 제1 구역에서 송출되는 방송을 시청하는 경우에도 네트워크 속도가 느린 사용자 구간을 최소화할 수 있게 된다.In another embodiment, a dedicated line may be connected between third servers in different zones. In this case, the streaming data transmitted from the first zone is delivered to the first server of the first zone and encoded by the second server of the first zone, and the viewer is located in the first zone via the third server of the first zone. It may be provided to. In addition, the streaming data transmitted from the first zone may be further provided to the viewer located in the second zone through the third server of the second zone connected to the third server of the first zone by a dedicated line. Therefore, even when the viewer located in the second zone watches the broadcast transmitted from the first zone, the user section having a slow network speed can be minimized.

또 다른 실시예에서, 오픈형 생중계 플랫폼(100)은 상기 코디네이터로부터의 VOD 파일 생성 요청에 따라 상기 할당된 제2 서버를 통해 인코딩된 스트리밍 데이터를 이용하여 VOD 파일을 생성하기 위한 적어도 하나의 제4 서버를 관리하는 제4 서버 풀 및 요청자 단말로부터 상기 VOD 파일에 대한 요청을 수신하고 상기 요청에 따라 상기 생성된 VOD 파일을 상기 요청자 단말로 제공하기 위한 적어도 하나의 제5 서버를 관리하는 제5 서버 풀을 더 포함할 수 있다. 여기서 제4 서버 풀은 앞서 설명한 VOD 생성 서버 풀(510)에, 제5 서버 풀은 프록시 서버 풀(540)에 각각 대응할 수 있다.In another embodiment, the open live platform 100 may include at least one fourth server for generating a VOD file using streaming data encoded through the allocated second server according to a VOD file generation request from the coordinator. A fifth server pool that manages at least one fifth server for receiving the request for the VOD file from the requester terminal and providing the generated VOD file to the requester terminal according to the request; It may further include. The fourth server pool may correspond to the VOD generation server pool 510 described above, and the fifth server pool may correspond to the proxy server pool 540, respectively.

도 20은 본 발명의 일실시예에 따른 오픈형 생중계 플랫폼의 동작 방법의 예를 도시한 흐름도이다. 본 실시예에 따른 동작 방법은 실질적으로 오픈형 생중계 플랫폼(100)이 포함하는 코디네이터(120)에 의해 수행될 수 있다. 코디네이터(120)는 적어도 하나의 프로세서와 적어도 하나의 메모리를 포함하는 물리적 머신에 의해 구현될 수 있다.20 is a flowchart illustrating an example of a method of operating an open live broadcast platform according to an embodiment of the present invention. The operation method according to the present embodiment may be performed by the coordinator 120 included in the open live broadcast platform 100. The coordinator 120 may be implemented by a physical machine including at least one processor and at least one memory.

단계(2010)에서 코디네이터(120)는 송출자의 방송이 등록되는 경우, 방송을 위한 채널을 생성하고, 채널에 대해 할당되는 고유 키를 이용하여 방송의 스트리밍 데이터의 송출을 위한 송출 주소를 생성할 수 있다.In step 2010, when the broadcaster's broadcast is registered, the coordinator 120 may generate a channel for broadcasting and generate a broadcast address for broadcasting streaming data by using a unique key assigned to the channel. have.

단계(2020)에서 코디네이터(120)는 송출 주소를 통해 송출자 단말로부터 스트리밍 데이터가 송출됨에 응답하여 제1 서버 풀에서 할당된 임의의 제1 서버로부터 스트리밍 데이터의 인코딩을 위한 제2 서버의 할당 요청을 수신할 수 있다.In step 2020, the coordinator 120 requests the allocation of the second server for encoding the streaming data from any first server allocated in the first server pool in response to the streaming data being sent from the sender terminal through the sending address. Can be received.

단계(2030)에서 코디네이터(120)는 수신된 할당 요청에 따라 제2 서버 풀에서 임의의 제2 서버를 동적으로 할당할 수 있다. 이때, 동적으로 할당된 제2 서버가 제1 서버로부터 스트리밍 데이터를 전달받아 인코딩할 수 있다. 이를 위해, 코디네이터(120)는 단계(2030)에서 임의의 제2 서버의 작업 목록에 스트리밍 데이터에 대한 방송 송출 작업을 등록할 수 있다. 제2 서버 풀에서 관리되는 적어도 하나의 제2 서버 각각은 자신의 작업 목록을 모니터링할 수 있으며, 이때 자신의 작업 목록에 방송 송출 작업이 등록된 제2 서버가 자신의 작업 목록에 등록된 정보를 이용하여 제1 서버 풀에서 할당된 제1 서버를 식별하여 할당된 제1 서버로부터 스트리밍 데이터를 수신 및 인코딩할 수 있다.In step 2030, the coordinator 120 may dynamically allocate any second server in the second server pool according to the received allocation request. In this case, the dynamically allocated second server may receive and encode streaming data from the first server. To this end, the coordinator 120 may register a broadcast transmission job for streaming data in the job list of any second server in step 2030. Each of the at least one second server managed in the second server pool may monitor its own work list, wherein the second server registered in the work list has information registered in its work list. The first server may be allocated from the first server pool to receive and encode streaming data from the first server.

인코딩된 스트리밍 데이터는 분산 파일 시스템에 저장될 수 있으며, 시청자 단말의 요청에 따라 제3 서버 풀에서 동적으로 할당된 제3 서버에서 분산 파일 시스템에 저장된 인코딩된 스트리밍 데이터를 다운로드하여 시청자 단말로 제공할 수 있다.The encoded streaming data may be stored in the distributed file system, and the encoded streaming data stored in the distributed file system may be downloaded and provided to the viewer terminal from a third server dynamically allocated from the third server pool according to the request of the viewer terminal. Can be.

단계(2040)에서 코디네이터(120)는 제4 서버 풀에서 VOD 파일의 생성을 위한 임의의 제4 서버를 할당할 수 있다. 이때, 할당된 제4 서버에서 상기 인코딩된 스트리밍 데이터를 이용하여 VOD 파일을 생성할 수 있다.In operation 2040, the coordinator 120 may allocate an arbitrary fourth server for generating a VOD file in the fourth server pool. In this case, the allocated fourth server may generate a VOD file using the encoded streaming data.

도 21은 본 발명의 일실시예에 따른 오픈형 생중계 플랫폼의 장애복구 방법의 예를 도시한 흐름도이다. 도 21의 장애복구 방법은 도 20의 동작 방법에 포함될 수 있으며, 도 20의 동작 방법과는 병렬적으로 실행될 수 있다.21 is a flowchart illustrating an example of a method for failback of an open live relay platform according to an embodiment of the present invention. The failure recovery method of FIG. 21 may be included in the operation method of FIG. 20, and may be executed in parallel with the operation method of FIG. 20.

단계(2110)에서 코디네이터(120)는 제1 서버 풀에서 관리되는 적어도 하나의 제1 서버와 제2 서버 풀에서 관리되는 적어도 하나의 제2 서버의 상태를 모니터링할 수 있다. 이미 설명한 바와 같이 코디네이터(120)는 오픈형 생중계 플랫폼(100)의 모든 서버들의 상태를 관리할 수 있다.In operation 2110, the coordinator 120 may monitor a state of at least one first server managed in the first server pool and at least one second server managed in the second server pool. As described above, the coordinator 120 may manage the states of all servers of the open live platform 100.

단계(2120)에서 코디네이터(120)는 제1 서버의 장애를 감지할 수 있으며, 제1 서버의 장애가 감지되는 경우 단계(2130)를 제1 서버의 장애가 감지되지 않는 경우 단계(2150)를 수행할 수 있다.In operation 2120, the coordinator 120 may detect a failure of the first server. If the failure of the first server is detected, the coordinator 120 may perform step 2130 if the failure of the first server is not detected. Can be.

단계(2130)에서 코디네이터(120)는 할당된 제2 서버로 스트리밍 종료 이벤트를 전달하여 할당된 제2 서버를 대기 상태로 전환시킬 수 있다. 대기 상태의 제2 서버는 다른 방송의 인코딩을 위해 대기할 수 있다.In operation 2130, the coordinator 120 may transfer the streaming end event to the allocated second server to switch the allocated second server to the standby state. The second server in the standby state may wait for encoding of another broadcast.

단계(2140)에서 코디네이터(120)는 송출자의 단말로부터 스트리밍 데이터가 재송출됨에 따라 제1 서버 풀에서 할당되는 다른 제1 서버의 요청에 따라 제2 서버 풀에서 새로운 제2 서버를 할당할 수 있다. 선택에 따라 새로운 제2 서버는 앞서 대기 상태로 전환된 기존의 제2 서버가 될 수도 있고, 기존의 제2 서버와는 다른 제2 서버가 될 수도 있다. 단계(2140) 이후 코디네이터(120)는 다시 단계(2110)을 수행하여 서버들의 상태를 모니터링할 수 있다.In operation 2140, the coordinator 120 may allocate a new second server from the second server pool according to a request of another first server allocated from the first server pool as streaming data is retransmitted from the sender's terminal. . Optionally, the new second server may be an existing second server previously switched to the standby state, or may be a second server different from the existing second server. After step 2140, the coordinator 120 may perform step 2110 again to monitor the status of the servers.

단계(2150)에서 코디네이터(120)는 제2 서버의 장애를 감지할 수 있다. 이때, 제2 서버의 장애가 감지되는 경우 코디네이터(120)는 단계(2160)를 수행할 수 있으며, 제2 서버의 장애가 감지되지 않는 경우 다시 단계(2110)을 수행하여 서버들의 상태를 모니터링할 수 있다.In operation 2150, the coordinator 120 may detect a failure of the second server. In this case, when the failure of the second server is detected, the coordinator 120 may perform step 2160, and if the failure of the second server is not detected, the coordinator 120 may perform step 2110 again to monitor the status of the servers. .

단계(2160)에서 코디네이터(120)는 제2 서버 풀에서 새로운 제2 서버를 할당할 수 있다. 이 경우, 할당된 새로운 제2 서버가 상기 할당된 제1 서버에 접속하여 상기 할당된 제1 서버로부터 상기 스트리밍 데이터를 수신하고, 상기 수신되는 스트리밍 데이터를 인코딩할 수 있다. 단계(2160) 이후 코디네이터(120)는 다시 단계(2110)을 수행하여 서버들의 상태를 모니터링할 수 있다.In operation 2160, the coordinator 120 may allocate a new second server from the second server pool. In this case, the allocated new second server may access the allocated first server to receive the streaming data from the allocated first server and to encode the received streaming data. After step 2160, the coordinator 120 may perform step 2110 again to monitor the status of the servers.

이처럼 본 발명의 실시예들에 따르면, 논리적 스트리밍 클라우드를 통해 실제로 방송의 송출이 발생하는 시점에 동적으로 리소스를 할당할 수 있다. 또한, 동적이고 자율적인 코디네이션 시스템(코디네이터)을 통해 중앙 집중적인 제어 없이 방송 송출이 발생하는 시점에 송출 요청을 처리하기 위한 퍼블리싱 포인트 서버와 방송의 스트리밍 데이터를 인코딩하기 위한 인코딩 서버를 개별적으로, 그리고 동적으로 할당함에 따라 미리 특정 방송을 위해 서버가 예약된 상태로 대기할 필요 없이 모든 서버들을 효율적으로 활용할 수 있다. 또한, 퍼블리싱 포인트 서버나 인코딩 서버의 장애 시 서버들의 풀에서 새로운 퍼블리싱 포인트 서버나 인코딩 서버를 재할당함에 따라 장애가 발생한 서버를 자동적으로 복구할 수 있다. 또한, 국가나 지역 단위로 구별되는 구역(region)별로 논리적 스트리밍 클라우드를 구현하고, 국가별 논리적 스트리밍 클라우드의 서버들을 코디네이션 시스템을 통해 관리할 수 있으며, 서로 다른 구역간에 방송의 송출과 시청이 이루어지는 경우, 프록시 가속을 통해 네트워크 속도가 느린 사용자 구간을 최소화할 수 있다. 또한, 코디네이션 시스템을 통해 물리적 머신의 인코딩 성능에 따라 하나의 물리적 머신에서 동작될 인코딩 서버의 수를 동적으로 조절함으로써 물리적 머신을 안정적이고 효율적으로 사용할 수 있다. 또한, 스트리밍을 위한 서로 다른 복수의 서비스들 각각에서 제공되는 복수의 방송들에 대해서도 각각의 방송들에 대해 서비스와 상관 없이 독립적으로 채널을 관리함에 따라 서로 다른 서비스에서의 간섭 없이 안정적으로 서로 다른 서비스들 각각에서 제공되는 복수의 방송들 각각을 해당 서비스의 시청자들에게 제공할 수 있다. 또한, 채널별로 우선순위를 부여하고, 부여된 유선순위를 이용하여 중요 채널의 방송 송출을 보장할 수 있다.As described above, according to embodiments of the present invention, a resource may be dynamically allocated at the time when a broadcast is actually transmitted through a logical streaming cloud. In addition, through a dynamic and autonomous coordination system (coordinator), a publishing point server for processing the broadcast request and a encoding server for encoding the streaming data of the broadcast separately when a broadcast transmission occurs without centralized control, and Dynamic allocation allows for efficient use of all servers without the need for servers to be reserved for specific broadcasts in advance. In addition, when a publishing point server or encoding server fails, the failed server can be automatically recovered by reassigning a new publishing point server or encoding server from the pool of servers. In addition, a logical streaming cloud can be implemented for each region (region) divided by country or region, and the servers of the logical streaming cloud for each country can be managed through a coordination system. In addition, proxy acceleration can be used to minimize the duration of slow network users. In addition, through the coordination system, the physical machine can be used stably and efficiently by dynamically adjusting the number of encoding servers to be operated on one physical machine according to the encoding performance of the physical machine. In addition, since a plurality of broadcasts provided in each of a plurality of different services for streaming are independently managed regardless of the service for each broadcast, the services are stably different without interference from the different services. Each of the plurality of broadcasts provided in each of the services may be provided to viewers of the corresponding service. In addition, priority can be given to each channel, and the broadcast transmission of important channels can be guaranteed using the assigned wired priority.

이상에서 설명된 시스템 또는 장치는 하드웨어 구성요소, 또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 어플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.The system or apparatus described above may be implemented as a hardware component or a combination of hardware components and software components. For example, the devices and components described in the embodiments are, for example, processors, controllers, arithmetic logic units (ALUs), digital signal processors, microcomputers, field programmable gate arrays (FPGAs). Can be implemented using one or more general purpose or special purpose computers, such as a programmable logic unit (PLU), a microprocessor, or any other device capable of executing and responding to instructions. The processing device may execute an operating system (OS) and one or more software applications running on the operating system. The processing device may also access, store, manipulate, process, and generate data in response to the execution of the software. For convenience of explanation, one processing device may be described as being used, but one of ordinary skill in the art will appreciate that the processing device includes a plurality of processing elements and / or a plurality of types of processing elements. It can be seen that it may include. For example, the processing device may include a plurality of processors or one processor and one controller. In addition, other processing configurations are possible, such as parallel processors.

소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치에 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록매체에 저장될 수 있다.The software may include a computer program, code, instructions, or a combination of one or more of the above, and configure the processing device to operate as desired, or process it independently or collectively. You can command the device. Software and / or data may be any type of machine, component, physical device, virtual equipment, computer storage medium or device in order to be interpreted by or to provide instructions or data to the processing device. It can be embodied in. The software may be distributed over networked computer systems so that they may be stored or executed in a distributed manner. Software and data may be stored on one or more computer readable media.

실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 매체는 컴퓨터로 실행 가능한 프로그램을 계속 저장하거나, 실행 또는 다운로드를 위해 임시 저장하는 것일 수도 있다. 또한, 매체는 단일 또는 수개 하드웨어가 결합된 형태의 다양한 기록수단 또는 저장수단일 수 있는데, 어떤 컴퓨터 시스템에 직접 접속되는 매체에 한정되지 않고, 네트워크 상에 분산 존재하는 것일 수도 있다. 매체의 예시로는, 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM 및 DVD와 같은 광기록 매체, 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical medium), 및 ROM, RAM, 플래시 메모리 등을 포함하여 프로그램 명령어가 저장되도록 구성된 것이 있을 수 있다. 또한, 다른 매체의 예시로, 애플리케이션을 유통하는 앱 스토어나 기타 다양한 소프트웨어를 공급 내지 유통하는 사이트, 서버 등에서 관리하는 기록매체 내지 저장매체도 들 수 있다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.The method according to the embodiment may be embodied in the form of program instructions that can be executed by various computer means and recorded in a computer readable medium. The computer readable medium may include program instructions, data files, data structures, etc. alone or in combination. The medium may be to continue to store a computer executable program, or to temporarily store for execution or download. In addition, the medium may be a variety of recording means or storage means in the form of a single or several hardware combined, not limited to a medium directly connected to any computer system, it may be distributed on the network. Examples of the medium include magnetic media such as hard disks, floppy disks and magnetic tape, optical recording media such as CD-ROMs and DVDs, magneto-optical media such as floptical disks, And ROM, RAM, flash memory, and the like, configured to store program instructions. In addition, examples of another medium may include a recording medium or a storage medium managed by an app store that distributes an application, a site that supplies or distributes various software, a server, or the like. Examples of program instructions include not only machine code generated by a compiler, but also high-level language code that can be executed by a computer using an interpreter or the like.

이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.Although the embodiments have been described by the limited embodiments and the drawings as described above, various modifications and variations are possible to those skilled in the art from the above description. For example, the described techniques may be performed in a different order than the described method, and / or components of the described systems, structures, devices, circuits, etc. may be combined or combined in a different form than the described method, or other components Or even if replaced or substituted by equivalents, an appropriate result can be achieved.

그러므로, 다른 구현들, 다른 실시예들 및 청구범위와 균등한 것들도 후술하는 청구범위의 범위에 속한다.Therefore, other implementations, other embodiments, and equivalents to the claims are within the scope of the following claims.

Claims (21)

오픈형 생중계 플랫폼을 위한 시스템에 있어서,
송출자의 단말로부터 송출되는 스트리밍 데이터를 수신하기 위한 적어도 하나의 제1 서버를 관리하는 제1 서버 풀;
상기 제1 서버 풀에서 할당된 제1 서버로부터 상기 스트리밍 데이터를 전달받아 인코딩하기 위한 적어도 하나의 제2 서버를 관리하는 제2 서버풀; 및
상기 제1 서버 풀 및 상기 제2 서버 풀의 서버들의 상태를 관리하고, 상기 제1 서버 풀에서 할당된 제1 서버의 요청에 따라 상기 제2 서버 풀에서 제2 서버를 동적으로 할당하는 코디네이터
를 포함하고,
상기 스트리밍 데이터가 상기 송출자의 단말에서 송출됨에 응답하여, 상기 제1 서버 풀에서 임의의 제1 서버를 동적으로 할당하고, 상기 할당된 제1 서버를 통해 상기 송출되는 스트리밍 데이터를 수신하고,
상기 코디네이터는,
상기 송출자의 방송이 등록되는 경우, 상기 방송을 위한 채널을 생성하고, 상기 채널에 대해 할당되는 고유 키를 이용하여 상기 방송의 스트리밍 데이터의 송출을 위한 송출 주소를 생성하고,
상기 송출 주소를 통해 상기 방송의 스트리밍 데이터가 송출됨에 응답하여 상기 제1 서버 풀에서 임의의 제1 서버를 동적으로 할당하는 것을 특징으로 하는 오픈형 생중계 플랫폼을 위한 시스템.
In the system for open live platform,
A first server pool managing at least one first server for receiving streaming data transmitted from a sender's terminal;
A second server pool managing at least one second server for receiving and encoding the streaming data from a first server allocated in the first server pool; And
Coordinator for managing the state of the servers of the first server pool and the second server pool, and dynamically allocates a second server in the second server pool in response to a request of the first server assigned in the first server pool
Including,
In response to the streaming data being sent from the sender's terminal, dynamically assigning any first server in the first server pool, receiving the transmitted streaming data through the assigned first server,
The coordinator,
When a broadcaster of the sender is registered, a channel for the broadcast is generated, and a broadcast address for transmitting streaming data of the broadcast is generated using a unique key assigned to the channel,
And dynamically assigning any first server in the first server pool in response to the streaming data of the broadcast being transmitted through the transmission address.
삭제delete 제1항에 있어서,
상기 코디네이터는,
상기 할당된 제2 서버의 작업 목록에 방송 송출 작업을 등록하고,
상기 제2 서버 풀에서 관리되는 적어도 하나의 제2 서버 각각은 자신의 작업 목록을 모니터링하고,
자신의 작업 목록에 방송 송출 작업이 등록된 제2 서버가 상기 작업 목록에 등록된 정보를 이용하여 상기 제1 서버 풀에서 할당된 제1 서버를 식별하여 상기 할당된 제1 서버로부터 상기 스트리밍 데이터를 수신 및 인코딩하는 것을 특징으로 하는 오픈형 생중계 플랫폼을 위한 시스템.
The method of claim 1,
The coordinator,
Register a broadcast transmission job in the assigned job list of the second server,
Each of the at least one second server managed in the second server pool monitors its own work list,
A second server having a broadcast transmission task registered in its task list identifies the first server allocated in the first server pool by using the information registered in the task list, and transmits the streaming data from the allocated first server. System for open live platform, characterized in that receiving and encoding.
제1항에 있어서,
상기 스트리밍 데이터가 상기 송출자의 단말에서 송출됨에 응답하여, 상기 제1 서버 풀에서 임의의 제1 서버를 동적으로 선택하여 상기 송출자의 단말로부터 송출되는 스트리밍 데이터를 상기 선택된 제1 서버로 전달하는 스위치
를 더 포함하는 것을 특징으로 하는 오픈형 생중계 플랫폼을 위한 시스템.
The method of claim 1,
In response to the streaming data being sent from the sender's terminal, a switch for dynamically selecting an arbitrary first server from the first server pool to deliver streaming data transmitted from the sender's terminal to the selected first server.
System for an open live platform, characterized in that it further comprises.
제1항에 있어서,
상기 제1 서버 풀에서 관리되는 적어도 하나의 제1 서버와 상기 제2 서버 풀에서 관리되는 적어도 하나의 제2 서버 각각은 실행 시 상기 코디네이터에 등록되고,
상기 코디네이터는,
상기 등록된 적어도 하나의 제1 서버 및 적어도 하나의 제2 서버의 상태를 모니터링하는 것을 특징으로 하는 오픈형 생중계 플랫폼을 위한 시스템.
The method of claim 1,
Each of at least one first server managed in the first server pool and at least one second server managed in the second server pool is registered with the coordinator when executed,
The coordinator,
And monitoring the status of the registered at least one first server and at least one second server.
제1항에 있어서,
상기 코디네이터는,
상기 할당된 제1 서버의 장애를 감지하는 경우, 상기 할당된 제2 서버로 스트리밍 종료 이벤트를 전달하여 상기 할당된 제2 서버를 대기 상태로 전환시키고, 상기 송출자의 단말로부터 상기 스트리밍 데이터가 재송출됨에 따라 상기 제1 서버 풀에서 할당되는 다른 제1 서버의 요청에 따라 상기 제2 서버 풀에서 새로운 제2 서버를 할당하는 것을 특징으로 하는 오픈형 생중계 플랫폼을 위한 시스템.
The method of claim 1,
The coordinator,
When detecting a failure of the allocated first server, the streaming end event is transmitted to the allocated second server to switch the allocated second server to a standby state, and the streaming data is resent from the sender's terminal. And allocating a new second server from the second server pool according to a request of another first server allocated from the first server pool.
제1항에 있어서,
상기 코디네이터는,
상기 할당된 제2 서버의 장애를 감지하는 경우, 상기 제2 서버 풀에서 새로운 제2 서버를 할당하고,
상기 할당된 새로운 제2 서버는 상기 할당된 제1 서버에 접속하여 상기 할당된 제1 서버로부터 상기 스트리밍 데이터를 수신하고, 상기 수신되는 스트리밍 데이터를 인코딩하는 것을 특징으로 하는 오픈형 생중계 플랫폼을 위한 시스템.
The method of claim 1,
The coordinator,
When detecting a failure of the allocated second server, allocate a new second server in the second server pool,
And said new assigned second server connects to said assigned first server to receive said streaming data from said assigned first server and encodes said received streaming data.
제1항에 있어서,
상기 동적으로 할당된 제2 서버에 의해 인코딩된 스트리밍 데이터를 저장하는 분산 파일 시스템; 및
시청자 단말의 방송 시청 요청을 수신하고 상기 분산 파일 시스템에서 상기 인코딩된 스트리밍 데이터를 상기 시청자 단말로 제공하기 위한 적어도 하나의 제3 서버를 관리하는 제3 서버 풀
을 더 포함하고,
상기 시청자 단말의 방송 시청 요청에 응답하여 상기 제3 서버 풀에서 임의의 제3 서버를 동적으로 할당하고, 상기 할당된 제3 서버를 통해 상기 분산 파일 시스템에서 상기 인코딩된 스트리밍 데이터를 상기 시청자 단말로 제공하는 것을 특징으로 하는 오픈형 생중계 플랫폼을 위한 시스템.
The method of claim 1,
A distributed file system for storing streaming data encoded by the dynamically allocated second server; And
A third server pool for receiving a broadcast viewing request of a viewer terminal and managing at least one third server for providing the encoded streaming data to the viewer terminal in the distributed file system;
More,
Dynamically assigns an arbitrary third server in the third server pool in response to a broadcast viewing request of the viewer terminal, and transmits the encoded streaming data from the distributed file system to the viewer terminal through the assigned third server System for open live platform, characterized in that for providing.
제8항에 있어서,
상기 시청자 단말의 방송 시청 요청에 응답하여 상기 제3 서버 풀에서 임의의 제3 서버를 동적으로 선택하여 상기 방송 시청 요청을 상기 선택된 제3 서버로 전달하는 스위치
를 더 포함하는 것을 특징으로 하는 오픈형 생중계 플랫폼을 위한 시스템.
The method of claim 8,
A switch that dynamically selects an arbitrary third server from the third server pool in response to the broadcast viewing request of the viewer terminal to transmit the broadcast viewing request to the selected third server
System for an open live platform, characterized in that it further comprises.
제8항에 있어서,
국가 및 지역 중 적어도 하나에 따라 구분되는 구역(region)마다, 상기 제1 서버 풀, 상기 제2 서버 풀, 상기 분산 파일 시스템 및 상기 제3 서버 풀이 구성되는 것을 특징으로 하는 오픈형 생중계 플랫폼을 위한 시스템.
The method of claim 8,
A system for an open live platform, characterized in that the first server pool, the second server pool, the distributed file system, and the third server pool are configured for each region divided according to at least one of a country and a region. .
제10항에 있어서,
서로 다른 구역의 제3 서버들간에 전용선이 연결되고,
제1 구역에서 송출되는 스트리밍 데이터는 제1 구역의 제1 서버로 전달되어 제1 구역의 제2 서버에 의해 인코딩되고, 제1 구역의 제3 서버를 통해 제1 구역에 위치하는 시청자 단말로 제공되고, 제1 구역의 제3 서버와 전용선으로 연결된 제2 구역의 제3 서버를 통해 제2 구역에 위치하는 시청자 단말로 더 제공되는 것을 특징으로 하는 오픈형 생중계 플랫폼을 위한 시스템.
The method of claim 10,
Dedicated lines are connected between third servers in different zones,
Streaming data transmitted from the first zone is transmitted to the first server of the first zone, encoded by the second server of the first zone, and provided to the viewer terminal located in the first zone via the third server of the first zone. And a viewer terminal located in the second zone through the third server of the second zone connected to the third server of the first zone by a dedicated line.
제1항에 있어서,
상기 코디네이터로부터의 VOD 파일 생성 요청에 따라 상기 할당된 제2 서버를 통해 인코딩된 스트리밍 데이터를 이용하여 VOD 파일을 생성하기 위한 적어도 하나의 제4 서버를 관리하는 제4 서버 풀; 및
요청자 단말로부터 상기 VOD 파일에 대한 요청을 수신하고 상기 요청에 따라 상기 생성된 VOD 파일을 상기 요청자 단말로 제공하기 위한 적어도 하나의 제5 서버를 관리하는 제5 서버 풀
을 더 포함하는 것을 특징으로 하는 오픈형 생중계 플랫폼을 위한 시스템.
The method of claim 1,
A fourth server pool managing at least one fourth server for generating a VOD file using streaming data encoded through the allocated second server according to a VOD file generation request from the coordinator; And
A fifth server pool that receives a request for the VOD file from a requester terminal and manages at least one fifth server for providing the generated VOD file to the requester terminal according to the request
System for an open live platform, characterized in that it further comprises.
오픈형 생중계 플랫폼의 동작 방법에 있어서,
송출자 단말로부터 스트리밍 데이터가 송출됨에 응답하여 제1 서버 풀에서 할당된 임의의 제1 서버로부터 상기 스트리밍 데이터의 인코딩을 위한 제2 서버의 할당 요청을 수신하는 단계; 및
상기 수신된 할당 요청에 따라 제2 서버 풀에서 임의의 제2 서버를 동적으로 할당하는 단계
를 포함하고,
상기 동적으로 할당된 제2 서버가 상기 제1 서버로부터 상기 스트리밍 데이터를 전달받아 인코딩하고,
상기 송출자의 방송이 등록되는 경우, 상기 방송을 위한 채널을 생성하고, 상기 채널에 대해 할당되는 고유 키를 이용하여 상기 방송의 스트리밍 데이터의 송출을 위한 송출 주소를 생성하는 단계
를 더 포함하고,
상기 송출 주소를 통해 상기 방송의 스트리밍 데이터가 송출됨에 응답하여 상기 제1 서버 풀에서 임의의 제1 서버가 동적으로 할당되는 것을 특징으로 하는 동작 방법.
In the operation method of the open live platform,
Receiving an allocation request of a second server for encoding the streaming data from any first server allocated in the first server pool in response to the streaming data being sent from the sender terminal; And
Dynamically allocating any second server in a second server pool according to the received allocation request
Including,
The dynamically allocated second server receives and encodes the streaming data from the first server,
When the broadcaster of the sender is registered, generating a channel for the broadcast, and generating a broadcast address for transmitting the streaming data of the broadcast by using a unique key assigned to the channel;
More,
And an arbitrary first server is dynamically allocated from the first server pool in response to the streaming data of the broadcast being transmitted through the transmission address.
제13항에 있어서,
상기 임의의 제2 서버를 동적으로 할당하는 단계는,
상기 임의의 제2 서버의 작업 목록에 상기 스트리밍 데이터에 대한 방송 송출 작업을 등록하고,
상기 제2 서버 풀에서 관리되는 적어도 하나의 제2 서버 각각은 자신의 작업 목록을 모니터링하고,
자신의 작업 목록에 방송 송출 작업이 등록된 제2 서버가 자신의 작업 목록에 등록된 정보를 이용하여 상기 제1 서버 풀에서 할당된 제1 서버를 식별하여 상기 할당된 제1 서버로부터 상기 스트리밍 데이터를 수신 및 인코딩하는 것을 특징으로 하는 동작 방법.
The method of claim 13,
Dynamically allocating the second random server includes:
Register a broadcast transmission job for the streaming data in the job list of the second random server;
Each of the at least one second server managed in the second server pool monitors its own work list,
The second server whose broadcast transmission task is registered in its task list identifies the first server allocated in the first server pool by using the information registered in its task list and the streaming data from the allocated first server. And receiving and encoding.
제13항에 있어서,
상기 인코딩된 스트리밍 데이터는 분산 파일 시스템에 저장되고,
시청자 단말의 요청에 따라 제3 서버 풀에서 동적으로 할당된 제3 서버에서 상기 분산 파일 시스템에 저장된 상기 인코딩된 스트리밍 데이터를 다운로드하여 상기 시청자 단말로 제공하는 것을 특징으로 하는 동작 방법.
The method of claim 13,
The encoded streaming data is stored in a distributed file system,
And encoding the encoded streaming data stored in the distributed file system from the third server dynamically allocated in the third server pool according to the request of the viewer terminal and providing the encoded streaming data to the viewer terminal.
삭제delete 제13항에 있어서,
상기 제1 서버 풀에서 관리되는 적어도 하나의 제1 서버와 상기 제2 서버 풀에서 관리되는 적어도 하나의 제2 서버의 상태를 모니터링하는 단계
를 더 포함하는 것을 특징으로 하는 동작 방법.
The method of claim 13,
Monitoring status of at least one first server managed in the first server pool and at least one second server managed in the second server pool
Operation method characterized in that it further comprises.
제17항에 있어서,
상기 할당된 제1 서버의 장애를 감지하는 경우, 상기 할당된 제2 서버로 스트리밍 종료 이벤트를 전달하여 상기 할당된 제2 서버를 대기 상태로 전환시키는 단계; 및
상기 송출자의 단말로부터 상기 스트리밍 데이터가 재송출됨에 따라 상기 제1 서버 풀에서 할당되는 다른 제1 서버의 요청에 따라 상기 제2 서버 풀에서 새로운 제2 서버를 할당하는 단계
를 더 포함하는 것을 특징으로 하는 동작 방법.
The method of claim 17,
In case of detecting a failure of the allocated first server, transferring the streaming end event to the allocated second server to switch the allocated second server to a standby state; And
Allocating a new second server in the second server pool according to a request of another first server allocated in the first server pool as the streaming data is resent from the sender's terminal;
Operation method characterized in that it further comprises.
제17항에 있어서,
상기 할당된 제2 서버의 장애를 감지하는 경우, 상기 제2 서버 풀에서 새로운 제2 서버를 할당하는 단계
를 더 포함하고,
상기 할당된 새로운 제2 서버는 상기 할당된 제1 서버에 접속하여 상기 할당된 제1 서버로부터 상기 스트리밍 데이터를 수신하고, 상기 수신되는 스트리밍 데이터를 인코딩하는 것을 특징으로 하는 동작 방법.
The method of claim 17,
If a failure of the allocated second server is detected, allocating a new second server from the second server pool
More,
And the allocated new second server connects to the assigned first server to receive the streaming data from the assigned first server and to encode the received streaming data.
제13항에 있어서,
제4 서버 풀에서 VOD 파일의 생성을 위한 임의의 제4 서버를 할당하는 단계
를 더 포함하고,
상기 할당된 제4 서버에서 상기 인코딩된 스트리밍 데이터를 이용하여 VOD 파일을 생성하는 것을 특징으로 하는 동작 방법.
The method of claim 13,
Allocating any fourth server for generation of a VOD file in a fourth server pool
More,
And generating a VOD file using the encoded streaming data in the allocated fourth server.
제13항 내지 제15항 또는 제17항 내지 제20항 중 어느 한 항의 방법을 컴퓨터에 실행시키기 위한 프로그램이 기록되어 있는 것을 특징으로 하는 컴퓨터에서 판독 가능한 기록매체.A computer-readable recording medium having recorded thereon a program for causing a computer to execute the method of any one of claims 13 to 15 or 17 to 20.
KR1020170145200A 2017-11-02 2017-11-02 Open platform for live broadcast KR102024637B1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020170145200A KR102024637B1 (en) 2017-11-02 2017-11-02 Open platform for live broadcast
PCT/KR2018/013152 WO2019088721A1 (en) 2017-11-02 2018-11-01 Open live broadcasting platform

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170145200A KR102024637B1 (en) 2017-11-02 2017-11-02 Open platform for live broadcast

Publications (2)

Publication Number Publication Date
KR20190050068A KR20190050068A (en) 2019-05-10
KR102024637B1 true KR102024637B1 (en) 2019-09-24

Family

ID=66332418

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170145200A KR102024637B1 (en) 2017-11-02 2017-11-02 Open platform for live broadcast

Country Status (2)

Country Link
KR (1) KR102024637B1 (en)
WO (1) WO2019088721A1 (en)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111277908B (en) * 2020-01-16 2021-04-06 北京达佳互联信息技术有限公司 Data processing method, device, server, live broadcast system and storage medium
CN112752115B (en) * 2020-12-29 2023-09-08 广州博冠信息科技有限公司 Live broadcast data transmission method, device, equipment and medium
CN113315981B (en) * 2021-04-27 2023-09-05 北京达佳互联信息技术有限公司 Task data updating method, device and system, electronic equipment and storage medium

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100873788B1 (en) * 2002-06-27 2008-12-15 주식회사 케이티 Method of configuring a multimedia content distribution network and a method of multimedia content service using the same
JP2004054448A (en) * 2002-07-18 2004-02-19 Nippon Telegr & Teleph Corp <Ntt> Stream server using portal server, method of selecting content, portal server for stream distribution, and its program
KR20090059244A (en) * 2007-12-06 2009-06-11 주식회사 프리먼트 Method and apparatus for automatic classification for dispersion control of live multi-channel image contents
KR20110076831A (en) * 2009-12-28 2011-07-06 (주)주인네트 Dispersive network personal video recorder system and service method thereof
KR101521257B1 (en) * 2012-11-22 2015-05-19 주식회사 미리내소프트 Broadcasting service system with media server load balancing management
KR20140078507A (en) * 2012-12-17 2014-06-25 주식회사 캐스트이즈 Demand Adaptive Streaming

Also Published As

Publication number Publication date
WO2019088721A1 (en) 2019-05-09
KR20190050068A (en) 2019-05-10

Similar Documents

Publication Publication Date Title
US10631024B2 (en) Intelligent video streaming system
US10412464B2 (en) Adaptive multicast delivery of media streams
US9344751B1 (en) Coordination of fault-tolerant video stream processing in cloud-based video streaming system
US9516103B2 (en) Managing linear multimedia content delivery
US8589992B2 (en) Video workflow automation platform for publishing a video feed in multiple formats
KR102024637B1 (en) Open platform for live broadcast
US9686576B2 (en) Coordination of video stream timing in cloud-based video streaming system
US11425178B1 (en) Streaming playlist including future encoded segments
US10630746B1 (en) Streaming playlist including future encoded segments
CA2927890A1 (en) Software-defined media platform
US20200145722A1 (en) Bandwidth limited dynamic frame rate video trick play
US10327040B1 (en) Forward error correction for low latency streaming
US11470041B2 (en) Software defined network orchestration to manage media flows for broadcast with public cloud networks
US20130276040A1 (en) Streaming video using erasure encoding
Cheng Mediapaas: A cloud-based media processing platform for elastic live broadcasting
EP2890081B1 (en) Aggregated adaptive bit rate streaming
KR101883671B1 (en) Method and management server for dtitributing node
EP2892225B1 (en) Recording method, device and system
CN114143569B (en) Webpage recording and live broadcasting method and system
US9832527B2 (en) System and a method for distributing content via static channel assignment in a mobile content gateway
US11212562B1 (en) Targeted video streaming post-production effects
CN113115065A (en) Live broadcast-based data processing method and device
JP7472502B2 (en) Switching instruction device, switching system, switching instruction method, and switching instruction program
US20140215021A1 (en) Video server and method for ingesting video file
KR102092292B1 (en) Broadcasting service apparatus and control method thereof

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant