KR20220078244A - 콘텐츠 조각 캐싱을 위한 캐시 파일 관리 방법 및 이를 수행하는 엣지 서버 - Google Patents

콘텐츠 조각 캐싱을 위한 캐시 파일 관리 방법 및 이를 수행하는 엣지 서버 Download PDF

Info

Publication number
KR20220078244A
KR20220078244A KR1020200167576A KR20200167576A KR20220078244A KR 20220078244 A KR20220078244 A KR 20220078244A KR 1020200167576 A KR1020200167576 A KR 1020200167576A KR 20200167576 A KR20200167576 A KR 20200167576A KR 20220078244 A KR20220078244 A KR 20220078244A
Authority
KR
South Korea
Prior art keywords
cache
files
file
media file
media
Prior art date
Application number
KR1020200167576A
Other languages
English (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 KR1020200167576A priority Critical patent/KR20220078244A/ko
Publication of KR20220078244A publication Critical patent/KR20220078244A/ko

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/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/231Content storage operation, e.g. caching movies for short term storage, replicating data over plural servers, prioritizing data for deletion
    • H04N21/23106Content storage operation, e.g. caching movies for short term storage, replicating data over plural servers, prioritizing data for deletion involving caching operations
    • 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/2183Cache memory
    • 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/231Content storage operation, e.g. caching movies for short term storage, replicating data over plural servers, prioritizing data for deletion
    • H04N21/23109Content storage operation, e.g. caching movies for short term storage, replicating data over plural servers, prioritizing data for deletion by placing content in organized collections, e.g. EPG data repository
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/41Structure of client; Structure of client peripherals
    • H04N21/414Specialised client platforms, e.g. receiver in car or embedded in a mobile appliance
    • H04N21/41407Specialised client platforms, e.g. receiver in car or embedded in a mobile appliance embedded in a portable device, e.g. video client on a mobile phone, PDA, laptop
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/433Content storage operation, e.g. storage operation in response to a pause request, caching operations
    • H04N21/4331Caching operations, e.g. of an advertisement for later insertion during playback
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/433Content storage operation, e.g. storage operation in response to a pause request, caching operations
    • H04N21/4332Content storage operation, e.g. storage operation in response to a pause request, caching operations by placing content in organized collections, e.g. local EPG data repository

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Information Transfer Between Computers (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

콘텐츠 조각 캐싱을 위한 캐시 파일 관리 방법 및 엣지 서버가 개시된다. 이 방법은 엣지 서버의 캐시 파일 관리 방법으로서, 캐시 스토리지에 저장된 청크 단위의 캐시 파일들을 미디어 파일 단위로 그룹핑하는 단계, 미디어 파일의 글로벌 순위에 기초하여, 상기 그룹핑된 캐시 파일들 중에서 킥-아웃(Kick-Out) 후보를 결정하는 단계, 상기 킥 아웃 후보로 결정된 캐시 파일들에 대하여 LRU(least recent used) 정보에 기초하여 최종 킥아웃 대상을 결정하는 단계, 그리고 상기 최종 킥아웃 대상으로 결정된 캐시 파일들을 상기 캐시 스토리지에서 삭제하는 단계를 포함한다.

Description

콘텐츠 조각 캐싱을 위한 캐시 파일 관리 방법 및 이를 수행하는 엣지 서버{METHOD AND EDGE SERVER FOR MANAGING CACHE FILE FOR CONTENT FRAGMENTS CACHING}
본 발명은 콘텐츠 조각 캐싱을 위한 캐시 파일 관리 방법 및 이를 수행하는 엣지 서버에 관한 것이다.
최근의 동영상 스트리밍 플랫폼은 주문형 비디오(video on demand, VOD) 서비스 가입자의 규모가 커지면서 서비스 세션 처리에 따른 네트워크 병목 현상을 줄이기 위해 계층적인 분산 노드 구조로 동영상 스트리밍 서비스를 제공하고 있다. 이러한 계층적인 분산 노드 구조의 대표적인 예시로서, 동영상 스트리밍 플랫폼은 오리진 노드(Origin node)와 엣지 노드들(Edge nodes)로 구성될 수 있다. 이 구조에서, STB(Set-Top Box) 등과 같은 유저(User) 단말은 엣지 노드와 연결되고, 엣지 노드는 오리진 노드와 연결된다. 오리진 노드는 콘텐츠 프로바이더로부터 콘텐츠 스트림을 입수하여 엣지 노드로 전송한다. 엣지 노드는 오리진 노드로부터 수신한 콘텐츠 스트림을 캐싱하고, 유저 단말의 요청이 있을 때 캐싱한 콘텐츠 스트림을 유저 단말에게 전송한다.
이때, 오리진 노드와 엣지 노드는 HTTP(Hypertext Transfer Protocol) 방식을 사용하므로, 오리진 노드와 엣지 노드는 청크(Chunk) 단위로 전송한다. 하지만, 유저 단말과 엣지 노드 간에 스트리밍 전송 프로토콜로 사용되는 실시간 스트리밍 프로토콜(Real Time Streaming Protocol, RTSP) 프로토콜의 경우 미디어 파일 사이즈 단위만 지원한다.
그런데 엣지 노드가 미디어 파일을 프리페칭할 때, 대용량 전송에 따른 지연시간이 커지는 문제가 있다. 따라서, 이를 해결하기 위해 엣지 노드에서는 오리진 노드로 부터 콘텐츠 스트림을 청크 단위로 프리페칭하고, 프리페칭된 청크들을 RTSP 전송 단위, 즉, 미디어 파일 사이즈 단위로 스트리밍 버퍼에 채워 전송한다. 이렇게 프리페칭된 청크들은 LRU(least recent used)를 기준으로 캐시 대체(cache replacement)가 실행된다.
그런데, 청크 단위 자체는 인기도와 같은 사용자 접근이 많은 데이터인지 담겨있지 않다. 그러나 이러한 청크 단위의 LRU 정보로 순위화/집계를 하므로 이로 인한 계산량 증가에 따른 지연 문제가 발생하고 이는 실시간 스트리밍에 장애로 작용한다.
또한, 엣지 노드의 캐시 스토리지 용량이 제한적인 상태에서 VOD 파일의 경우, 계산 시점의 순위로만 집계하면 사실상 인기도가 높음에도 반복된 LRU 계산에 따른 동일한 청크 데이터의 빈번한 교체(삭제/저장)가 발생할 수 있고 이는 엣지 노드의 캐시 스토리지 수명을 단축할 수 있다.
해결하고자 하는 과제는 RTSP 스트리밍에서 실시간 조각캐싱 청크 단위의 LRU(least recent used)를 기준으로 킥아웃(Kickout) 대상을 선정하기 전에 그 청크들을 미디어 파일 단위로 그룹핑하고 미디어 파일의 글로벌 순위와 동작 한계점을 기초로 필터링된 청크들을 대상으로 LRU에 기초한 캐시 대체(cache replacement)를 실행하는 방법 및 엣지 서버를 제공하는 것이다.
한 특징에 따르면, 엣지 서버의 캐시 파일 관리 방법으로서, 캐시 스토리지에 저장된 청크 단위의 캐시 파일들을 미디어 파일 단위로 그룹핑하는 단계, 미디어 파일의 글로벌 순위에 기초하여, 상기 그룹핑된 캐시 파일들 중에서 킥-아웃(Kick-Out) 후보를 결정하는 단계, 상기 킥 아웃 후보로 결정된 캐시 파일들에 대하여 LRU(least recent used) 정보에 기초하여 최종 킥아웃 대상을 결정하는 단계, 그리고 상기 최종 킥아웃 대상으로 결정된 캐시 파일들을 상기 캐시 스토리지에서 삭제하는 단계를 포함한다.
상기 그룹핑하는 단계 이전에, 상기 캐시 스토리지의 동작 한계 용량을 설정하는 단계를 더 포함하고, 상기 킥아웃 후보를 결정하는 단계는, 상기 그룹핑된 캐시 파일들을 미디어 파일의 글로벌 순위에 기초하여 우선순위 정렬하고, 우선순위 정렬된 캐시 파일들 중에서 상기 동작 한계 용량을 초과하는 캐시 파일들을 상기 킥아웃 후보로 결정할 수 있다.
상기 최종 킥아웃 대상을 결정하는 단계는, 상기 킥아웃 후보로 결정된 캐시 파일들을 대상으로, 각각의 캐시 파일이 속하는 미디어 파일의 글로벌 순위를 이용하여 계산한 제1 스코어, 그리고 상기 각각의 캐시 파일에 대한 LRU 순위를 기초로 계산한 제2 스코어를 이용하여 최종 스코어를 결정하고, 상기 최종 스코어의 순위를 토대로 최종 킥아웃 대상을 결정할 수 있다.
상기 그룹핑하는 단계 이전에, 오리진 서버와 연동하여 상기 미디어 파일의 글로벌 순위를 동기화하는 단계를 더 포함할 수 있다.
상기 그룹핑하는 단계 이전에, 유저 단말로부터 미디어 파일 요청을 수신하는 단계를 더 포함하고, 상기 요청된 미디어 파일이 상기 캐시 스토리지에 없을 경우, 상기 캐시 스토리지의 용량이 풀(Full) 상태인지 판단하는 단계를 더 포함하고, 상기 그룹핑하는 단계, 상기 킥-아웃 후보를 결정하는 단계, 상기 최종 킥아웃 대상을 결정하는 단계 및 상기 삭제하는 단계는, 상기 캐시 스토리지의 용량이 풀 상태인 경우, 수행될 수 있다.
상기 풀 상태인지 판단하는 단계 이후, 상기 캐시 스토리지의 용량이 풀 상태인 경우, 상기 요청된 미디어 파일의 글로벌 순위를 상기 캐시 스토리지에 저장된 캐시 파일들이 속하는 미디어 파일의 글로벌 순위와 비교하는 단계를 더 포함하고, 상기 그룹핑하는 단계, 상기 킥-아웃 후보를 결정하는 단계, 상기 최종 킥아웃 대상을 결정하는 단계 및 상기 삭제하는 단계는, 상기 요청된 미디어 파일의 글로벌 순위가 더 높은 경우, 수행될 수 있다.
상기 비교하는 단계 이후, 상기 요청된 미디어 파일의 글로벌 순위가 더 낮은 경우, 상기 요청된 미디어 파일을 보유한 다른 노드로 상기 미디어 파일 요청을 우회시키는 단계를 더 포함할 수 있다.
상기 그룹핑하는 단계 이전에, 유저 단말로부터 미디어 파일 요청을 수신하는 단계를 더 포함하고, 상기 삭제하는 단계 이후, 상기 유저 단말로부터 요청받은 미디어 파일을 오리진 서버에 요청하여 수신하고, 상기 캐시 파일의 삭제에 따라 발생한 캐시 스토리지의 메모리 공간에 상기 오리진 서버로부터 수신한 청크 단위의 미디어 파일을 캐싱하는 단계를 더 포함할 수 있다.
다른 특징에 따르면, 엣지 서버는 통신 장치, 청크 단위의 캐시 파일을 저장하는 캐시 스토리지, 상기 캐시 파일의 관리 프로그램을 저장하는 메모리, 그리고 상기 관리 프로그램을 실행하는 프로세서를 포함하고, 상기 관리 프로그램은, 유저 단말로부터 미디어 파일 요청을 수신하는 단계, 상기 미디어 파일이 상기 캐시 스토리지에 저장되어 있는지 판단하는 단계, 저장되어 있지 않으면, 상기 캐시 스토리지의 용량이 풀 상태인지 판단하는 단계, 상기 풀 상태로 판단되면, 상기 캐시 스토리지에 저장된 청크 단위의 캐시 파일들을 미디어 파일 단위로 그룹핑하는 단계, 미디어 파일의 글로벌 순위에 기초하여, 상기 그룹핑된 캐시 파일들 중에서 킥 아웃 대상을 결정하는 단계, 그리고 상기 킥 아웃 대상으로 결정된 캐시 파일들을 상기 미디어 파일을 구성하는 청크 단위 용량만큼 삭제하고 삭제된 공간에 오리진 노드로부터 수신한 상기 미디어 파일을 구성하는 청크 파일들을 캐싱하는 단계를 포함한다.
상기 수신하는 단계 이전에, 상기 캐시 스토리지의 동작 한계점을 설정하는 단계를 더 포함하고, 상기 동작 한계점은, 상기 캐시 스토리지의 전체 용량을 고려하여 설정되고, 상기 킥 아웃 대상은, 상기 동작 한계점을 초과하는 캐시 파일들 중에서 상기 미디어 파일의 글로벌 순위가 상대적으로 낮은 캐시 파일들로 선정될 수 있다.
실시예에 따르면, 세그먼트 캐싱을 지원함으로써, 엣지 서버의 스트리밍 효율을 향상할 수 있다.
또한, 엣지 서버의 세그먼트 캐시 계산의 복잡성을 단순화해서 실시간 캐싱 프로세스가 가능하게 한다.
또한, 순차적으로 리드(read)가 발생하는 파일 내 청크(Chunk) 단위의 빈번한 캐시(cache) 인(in)/아웃(out)을 방지해서 디스크 IO 성능 및 수명 단축을 방지할 수 있다.
도 1은 한 실시예에 따른 미디어 스트리밍 시스템의 구성도이다.
도 2는 도 1의 오리진 서버 및 엣지 서버의 세부 구성을 도시한 블록도이다.
도 3은 한 실시예에 따른 캐시 파일 관리 방법을 나타낸 흐름도이다.
도 4a 및 도 4b는 도 3의 S125의 동작을 설명하는 예시도이다.
도 5는 다른 실시예에 따른 캐시 파일 관리 방법을 나타낸 순서도이다.
도 6은 한 실시예에 따른 캐시 킥아웃 동작을 설명하는 예시도이다.
아래에서는 첨부한 도면을 참고로 하여 본 발명의 실시예에 대하여 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
명세서 전체에서, 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
또한, 명세서에 기재된 "…부", "…기", "…모듈" 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어나 소프트웨어 또는 하드웨어 및 소프트웨어의 결합으로 구현될 수 있다.
본 발명에서 설명하는 장치들은 적어도 하나의 프로세서, 메모리 장치, 통신 장치 등을 포함하는 하드웨어로 구성되고, 지정된 장소에 하드웨어와 결합되어 실행되는 프로그램이 저장된다. 하드웨어는 본 발명의 방법을 실행할 수 있는 구성과 성능을 가진다. 프로그램은 도면들을 참고로 설명한 본 발명의 동작 방법을 구현한 명령어(instructions)를 포함하고, 프로세서와 메모리 장치 등의 하드웨어와 결합하여 본 발명을 실행한다.
본 명세서에서 "전송 또는 제공"은 직접적인 전송 또는 제공하는 것 뿐만 아니라 다른 장치를 통해 또는 우회 경로를 이용하여 간접적으로 전송 또는 제공도 포함할 수 있다.
본 명세서에서 단수로 기재된 표현은 "하나" 또는 "단일" 등의 명시적인 표현을 사용하지 않은 이상, 단수 또는 복수로 해석될 수 있다.
본 명세서에서 도면에 관계없이 동일한 도면번호는 동일한 구성요소를 지칭하며, "및/또는" 은 언급된 구성 요소들의 각각 및 하나 이상의 모든 조합을 포함한다.
본 명세서에서, 제1, 제2 등과 같이 서수를 포함하는 용어들은 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되지는 않는다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를들어, 본 개시의 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다.
본 명세서에서 도면을 참고하여 설명한 흐름도에서, 동작 순서는 변경될 수 있고, 여러 동작들이 병합되거나, 어느 동작이 분할될 수 있고, 특정 동작은 수행되지 않을 수 있다.
도 1은 한 실시예에 따른 미디어 스트리밍 시스템의 구성도이다.
도 1을 참조하면, 미디어 스트리밍 시스템은 오리진 서버(100), 복수의 엣지 서버(201, 202, 203, 204, 501, 502) 및 복수의 유저 단말(301, 302, 303, 304)을 포함할 수 있다.
오리진 서버(100)는 중앙 국사에 위치하고, 복수의 엣지 서버(201, 202, 203, 204, 501, 502)는 전국에 분산 배치된 복수의 지사들에 위치할 수 있다.
적어도 하나의 엣지 서버(201, 202, 203, 204, 501, 502)는 오리진 서버(100)로부터 수신한 콘텐츠 스트림을 캐싱하고 캐싱된 콘텐츠 스트림을 스트리밍 전송한다. 적어도 하나의 엣지 서버(201, 202, 203, 204, 501, 502)는 스트리밍 서비스 트래픽 부하 등의 이유로 콘텐츠 스트림의 부하 분산 처리를 할 수 있다.
여기서, 복수의 엣지 서버(201, 202, 203, 204, 501, 502)는 계층적인 구조를 가질 수 있다. 즉, 복수의 엣지 서버(201, 202, 203, 204, 501, 502)는 유저 단말들(301, 302, 303, 304)과 가장 최근접에 위치하여 인기 캐싱 파일들을 보유한 엣지 서버(201, 202, 203, 204), 그리고 상대적으로 비인기 캐싱 파일들을 보유한 콜드 노드(Cold Node)(501, 502)로 구분될 수 있다. 이때, 콜드 노드(501, 502)는 특정 지역을 통합하는 국사 또는 오리진 서버(100)와 가까운 중앙 국사 등에 위치할 수 있다. 이때, 콜드 노드(501, 502)는 오리진 서버(100)가 그 기능을 대신할 수도 있다.
오리진 서버(100)는 콘테츠 제공자로부터 콘텐츠를 입수하여 스트리밍하는 장치로서, 실시간 콘텐츠 스트림 뿐만 아니라 VOD(Video On Demand) 콘텐츠 스트림을 스트리밍할 수 있다.
이하, 본 명세서에서 실시간 콘텐츠 스트림 및 VOD 콘텐츠 스트림을 '미디어 파일'로 통칭한다.
복수의 유저 단말(301, 302, 303, 304)은 각각의 지역 단위로 구축된 엣지 서버들(201, 202, 203, 204)와 연결되어, 미디어 파일을 수신하여 재생할 수 있다. 이러한 유저 단말들(301, 302, 303, 304)은 엣지 서버들(201, 202, 203, 204)이 설치된 지역의 가입자 단말들일 수 있다.
복수의 유저 단말(301, 302, 303, 304)은 미디어 파일의 수신 및 재생이 가능한 미디어 디바이스에 해당하며, 예를들어, 셋톱박스, TV, 스마트폰 등을 포함할 수 있다.
도 2는 도 1의 오리진 서버 및 엣지 서버의 세부 구성을 도시한 블록도이다.
이때, 각각의 지역 단위로 구축된 엣지 서버들(201, 202, 203, 204)을 엣지 서버(200)로 통칭하고, 유저 단말들(301, 302, 303, 304)을 유저 단말(300)로 통칭한다.
도 2를 참조하면, 오리진 서버(100)는 스트리밍 서버(110), 대용량의 오리진 스토리지(120) 및 순위 집계 서버(130)를 포함할 수 있다.
오리진 서버(100)의 스트리밍 서버(110)는 오리진 스토리지(120)에 보관된 미디어 파일들을 적어도 하나의 엣지 서버(200)에게 제공할 수 있다. 스트리밍 서버(110)는 엣지 서버(200)에서 요청하는 미디어 파일을 실시간 조각 캐싱 방식으로 제공할 수 있다. 여기서, 실시간 조각 캐싱은 부분적인 캐싱(Partial caching) 방식으로서, 미디어 파일을 복수의 청크(Chunk)가 모인 세그먼트(Segment) 단위로 캐싱하는 방식을 말한다.
세그먼트는 대략 2초 ~ 6초 분량의 미디어 파일이고 청크는 대략 0.5초 분량의 미디어 파일로 정의될 수 있다.
또한, 청크 사이즈는 약 2MByte이고, 전체 미디어 파일 사이즈는 약 2GByte일 수 있다.
실시예에 따른 실시간 조각 캐싱은 전체 파일의 프리-페치(pre-fetch) 방식의 캐싱과 구분된다. 전체 파일의 프리-페치 캐싱 방식은 미디어 파일의 크기가 상대적으로 대용량이기 때문에 인기가 상승해서 엣지 서버(200)에서 배포를 결정하여 오리진 서버(100)로부터 수신하여 전송을 결정하고 실제 전송하기까지 시간이 소요된다. 즉, 전송 시간에 지연이 발생한다. 따라서, 수시로 변화하는 콘텐츠의 인기도를 엣지 서버(200)에서 빨리 반영하기 어려운 구조이다. 또한, 파일 사이즈는 예를들어, 1.5GB 정도로 크기 때문에, 전체 파일을 프리-페치 캐싱하는 방식은 스토리지 효율에 영향을 미친다. 반면, 본 발명의 실시예에 따른 조각 캐싱 방식은 파일의 인기도를 반영한 배포된 배포된 콘텐츠의 히트(Hit)를 높일 수 있다.
오리진 서버(100)의 오리진 스토리지(120)는 동영상 스트리밍 서비스에서 제공 가능한 모든 미디어 파일들을 저장하고, 저장된 미디어 파일들을 관리할 수 있다.
적어도 하나의 엣지 서버(200)는 부하 분산 서버(210), 스트림 캐시 스토리지(220), 스트림 캐시 장치(230), 로컬 스토리지(240) 및 파일 정보 관리 서버(250)를 포함한다. 통상, 엣지 서버(200)는 오리진 서버(100)에 비해 스토리지 용량과 네트워크에서 수용 가능한 대역폭(bandwidth) 용량이 작은 서버인 것이 일반적이다.
대용량 VoD 파일을 RTSP(Real Time Streaming Protocol) 방식을 스트리밍할 때 엣지 서버(200)는 제한된 스토리지들(220, 240)를 최대한 활용해서 인접 지역의 사용자 트래픽을 최대한 수용할 수 있도록 구성될 수 있다.
부하 분산 서버(210)는 사전에 정의된 분산 알고리즘에 기초하여 복수의 스트림 캐시 장치(230) 중에서 하나의 스트림 캐시 장치(230)를 선택한다. 사전에 정의된 분산 알고리즘은 Consistent Hash 기반 캐싱 분산 알고리즘이 사용될 수 있다. 이는 HashMap(content_key : Streamer_ID)을 사용할 수 있다.
부하 분산 서버(210)는 유저 단말(300)로부터 미디어 파일 요청이 수신되면, 그 미디어 파일을 제공할 스트림 캐시 장치(230)를 할당할 수 있다.
스트림 캐시 스토리지(220)는 오리진 서버(100)로부터 수신된 미디어 파일들을 일정 기간 동안 저장하고 이를 관리할 수 있다. 스트림 캐시 스토리지(220)는 각각의 미디어 파일을 캐싱 단위, 즉, 청크 단위로 관리할 수 있다.
스트림 캐시 장치(230)는 유저 단말(300)이 요청하는 미디어 파일들 중에서 스트림 캐시 스토리지(220)에 존재하지 않는 미디어 파일을 오리진 서버(100)에 요청하여 수신할 수 있다. 이때, 스트림 캐시 장치(220)는 실시간 조각 캐싱 기법을 이용하여 미디어 파일을 오리진 서버(100)로부터 수신할 수 있다.
파일 정보 관리 서버(250)와 순위 집계 서버(130)는 스트림 캐시 스토리지(220)에 저장된 청크 파일들에 대한 글로벌 순위 정보를 동기화한다. 파일 정보 관리 서버(250)는 스트림 캐시 스토리지(220)별로 저장하고 있는 청크 파일들에 대한 각각의 글로벌 순위 정보를 관리한다. 글로벌 순위 정보는 순위 집계 서버(130)가 관리하며, 순위 집계 서버(130)는 특정 기간 파일 재생 요청 수, 파일 콘텐츠 메타 데이터 정보(예시: 장르) 등과 같은 복합 변수로 순위를 정할 수 있다.
여기서, 메타 데이터 정보는 미디어 파일 정보, 그리고 그 미디어 파일에 속하는 청크 정보로 구성된다. 미디어 파일 정보는 파일명, 파일 사이즈, 미디어 정보 등을 포함할 수 있다. 청크 정보는 생성 시간, 최근 히트(hit) 시간, 사이즈 등을 포함할 수 있다.
파일 정보 관리 서버(250)는 주기적으로 통신을 통해 순위 집계 서버(130)와 글로벌 순위 정보를 교환하여 동기화한다.
로컬 스토리지(240)는 미디어 스트리밍 서비스에서 제공 가능한 일부 미디어 파일을 보관할 수 있다. 로컬 스토리지(240)에 보관된 미디어 파일들은, 해당 지역의 가입자들 또는 전국의 가입자들이 일정 기간 동안 요청하는 미디어 스트리밍 서비스의 빈도가 높은(즉, 인기 있는) 미디어 파일들일 수 있으며, 이는 사전 배포된 미디어 파일들일 수 있다.
이와 같이, 스트림 캐시 스토리지(220)는 조각 캐싱 방법으로 실시간 캐싱되는 청크 파일들이 저장되고, 로컬 스토리지(240)는 사전 배포된 청크 단위의 미디어 파일들이 저장된다. 이때, 스트림 캐시 스토리지(220)에 캐싱된 청크 파일들은 캐시 파일이라 할 수도 있다.
스트림 캐시 장치(230)는, RTSP(Real Time Streaming Protocol) 프로토콜 기반의 미디어 스트리밍 서비스를 해당 가입자의 유저 단말(300)로 제공할 수 있다.
해당 지역의 가입자가 요청하는 미디어 파일이 스트림 캐시 스토리지(220) 또는 로컬 스토리지(240)에 존재하는 경우, 스트림 캐시 장치(230)는 스트림 캐시 스토리지(220) 또는 로컬 스토리지(240)에 저장된 미디어 파일을 해당 가입자의 유저 단말(300)로 제공할 수 있다.
해당 지역의 유저 단말(300)이 요청하는 미디어 파일이 스트림 캐시 스토리지(220) 또는 로컬 스토리지(240)에 모두 존재하지 않는 경우, 스트림 캐시 장치(230)는 오리진 서버(100)로부터 미디어 파일을 실시간으로 수신하여 스트림 캐시 스토리지(220)에 캐싱하면서, 해당 가입자의 유저 단말(300)로 제공할 수 있다.
이때, 스트림 캐시 장치(230)는 단위 파일, 즉, 미디어 파일과 그에 속하는 청크 파일 목록의 계층적인 구조로 캐싱 데이터를 관리할 수 있다.
스트림 캐시 장치(230)는 킥아웃 대상 결정을 위해 계산을 할 때, 킥아웃할 기준점으로서 스트림 캐시 스토리지(220)의 용량 기준의 동작 한계점을 설정할 수 있다. 스트림 캐시 장치(230)는 오리진 서버(100) ~ 엣지 서버(200) 간 실시간 캐싱 트래픽을 제어하기 위해 서버 쓰기(write) 성능 제약과, 오리진 서버(100) ~엣지 서버(200) 간 트래픽 부하 제한에 따른 RTSP 스트리밍 중 재생 지연을 방지할 목적으로 적정한 스토리지 캐시 킥아웃 대상 용량을 정의할 수 있다. 즉, 스트림 캐시 스토리지(220)의 가용량 기준 일정수준에 대해 캐시 킥아웃 대상을 결정할 수 있다.
스트림 캐시 장치(230)는 실시간 캐싱시, 동작 한계 용량을 초과하는 캐싱된 청크 파일들을 삭제한 후, 요청받은 미디어 파일들을 청크 단위로 실시간 캐싱할 수 있다.
스트림 캐시 장치(230)는 RTSP 프로토콜 기반의 미디어 스트리밍 서비스를 유저 단말(300)로 제공할 수 있다. 이러한 스트리밍 서비스 제공 방법은 엣지 서버(200)에서 가상으로 오리진 서버(100)에 존재하는 오리진 스토리지(120)를 실시간으로 사용하는 것과 같은 효과를 제공할 수 있다.
또한, 이러한 스트리밍 서비스 제공 방법은 사전 파일배포 방식으로 보관 중인 파일을 이용한 미디어 스트리밍 서비스와, 실시간 조각 캐싱 방식으로 보관 중인 파일을 이용한 미디어 스트리밍 서비스를 지원할 수 있다.
유저 단말(300)은 RTSP 요청 메시지를 엣지 서버(200)로 전송하여 해당 유저 단말(300의 가입자가 시청하고자 하는 미디어 스트리밍 서비스를 요청할 수 있다.
유저 단말(300)은 엣지 서버(200)로부터 수신된 RTSP 응답 메시지를 기반으로 미디어 스트리밍 서비스를 재생할 수 있다.
예컨대, VOD 서비스 가입자가 VOD 스트리밍 서비스에서 제공하는 특정 VOD 파일을 선택한 후 해당 VOD 파일의 재생(play)을 요청하는 경우, 유저 단말(300)은 RTSP DESCRIBE 요청 메시지를 엣지 서버(200)로 전송한다. 엣지 서버(200)는 유저 단말(300)에게 VOD 서비스를 제공할 스트림 캐시 장치(230)를 할당하고, 할당된 스트림 캐시 장치(230)로 RTSP DESCRIBE 요청 메시지를 전송한다. 스트림 캐시 장치(230)는 요청된 VOD 파일의 메타 데이터 정보를 기반으로 VOD 재생을 위한 초기화 작업을 수행할 수 있다. 이후, 유저 단말(300)은 RTSP PLAY 요청 메시지를 엣지 서버(200)의 스트림 캐시 장치(230)로 전송하여 해당 VOD 파일의 페이로드(payload) 데이터를 요청하고, 스트림 캐시 장치(230)로부터 수신된 페이로드 데이터를 기반으로 VOD 파일을 재생할 수 있다.
실시예에 따르면, VOD 파일 전체를 엣지 서버(200)에 사전 배포하지 않고, VOD 서비스 가입자가 엣지 서버(200)에 VOD 스트리밍 서비스를 요청하는 시점에 오리진 서버(100)로부터 해당 VOD 파일을 청크 단위로 실시간 캐싱하면서 RTSP 프로토콜 기반의 스트리밍 서비스를 제공할 수 있다. 따라서, 복잡한 사전 파일배포 과정을 요구하지 않으므로 계층적인 분산 노드 서비스의 운영 구조를 단순하게 유지할 수 있다.
도 3은 한 실시예에 따른 캐시 파일 관리 방법을 나타낸 흐름도이다.
도 3을 참조하면, 파일 정보 관리 서버(250)와 오리진 서버(100)의 순위 집계 서버(도 2의 130)는 스트림 캐시 스토리지(220)에 저장된 청크 파일들에 대한 글로벌 순위 정보를 동기화한다(S101).
스트림 캐시 장치(20)는 스트림 캐시 스토리지(220)의 디스크 용량에 기초하여 스트림 캐시 스토리지(200)의 동작 한계점을 설정한다(S103).
여기서, 동작 한계점은 스트림 캐시 스토리지(220)의 디스크 용량이 부족할 경우, 킥아웃(Kickout) 대상을 집계하기 위한 기준 용량을 의미한다.
킥아웃 대상 결정을 위해서, 스트림 캐시 스토리지(200)의 저장 가능한 가용량을 기준으로 킥아웃 집계 동작의 기준점을 설정하는데, 예를들어, 가용량의 90%가 되는 지점을 동작 한계점으로 설정할 수 있다.
유저 단말(300)은, 미디어 파일 요청을 엣지 서버(200)의 스트림 캐시 장치(230)로 전송할 수 있다(S105). 이때, 엣지 서버(200)가 초기 접속시 복수의 스트림 캐시 장치(230) 중에서 유저 단말(300)에게 서비스할 하나의 스트림 캐시 장치(230)는 부하 분산 서버(210)에 의해 할당되어 있을 수 있다.
S105의 미디어 파일 요청은 RTSP PLAY 요청 메시지일 수 있다. 이는 유저 단말(300)에서 재생할 미디어 스트리밍 데이터의 전송을 요청하는 메시지이다. RTSP PLAY 요청 메시지에는 서비스 가입자가 요청하는 미디어 파일에 관한 정보와, 해당 가입자가 요청하는 재생 시점에 관한 정보 등이 포함될 수 있다.
RTSP PLAY 요청 메시지의 수신에 대응하여, 스트림 캐시 장치(230)는 유저 단말(300)에 주기적으로 전송할 미디어 데이터 패킷의 양을 결정하기 위한 스트리밍 버퍼(streaming buffer)를 생성할 수 있다(S107).
유저 단말(300)에서 데이터 패킷을 수신할 수 있는 네트워크 대역폭의 용량이 제한되기 때문에, 스트리밍 서버(230)는 전송 콘텐츠의 비트레이트(bitrate)에 맞춰 흐름 제어(flow control)를 수행하면서 데이터 패킷을 주기적으로 전송한다.
스트림 캐시 장치(230)에서 주기적으로 전송하는 미디어 데이터 패킷의 양은 S107에서 생성한 스트리밍 버퍼를 통해 조절 가능하다.
스트림 캐시 장치(230)는, 스트리밍 버퍼 생성 완료시, 요청받은 미디어 파일을 구성하는 청크 파일을 로컬 스토리지(240) 및 스트림 캐시 스토리지(220)에서 검색할 수 있다(S109).
이때, 스트림 캐시 장치(230)는 로컬 스토리지(240)에 보관된 미디어 파일들을 먼저 검색할 수 있다. 여기서, 미디어 파일은 영상 데이터 및 오디오 데이터를 포함한다. 이때, 로컬 스토리지(240)는 청크 단위로 저장될 수도 있지만, 사전 배포된 파일이므로, RTSP 전송 단위인 미디어 데이터 형태로 저장되어 있을 수 있다.
로컬 스토리지(240)에서 미디어 파일이 검색되지 않는 경우, 스트림 캐시 장치(230)는 스트림 캐시 스토리지(220)에 보관된 미디어 파일들을 청크(chunk) 단위로 검색할 수 있다.
스트림 캐시 장치(230)는 S109에서 검색되는지 판단(S111) 하고, 검색되면, 스트림 캐시 스토리지(220)에서 검색된 청크들을 미디어 전송 단위의 미디어 데이터로 생성(S113)하거나 또는 로컬 캐시 스토리지(240)에서 검색된 미디어 데이터를 유저 단말(300)로 전송할 수 있다(S115).
S111에서 검색되지 않으면, 스트림 캐시 스토리지(220)의 용량이 풀(Full) 상태인지 판단한다(S117).
S117에서 풀 상태로 판단되면, 파일 정보 관리 서버(250)로부터 확인(S119)한 글로벌 순위 정보에 기초하여, 유저 단말(300)로부터 요청된 미디어 파일의 글로벌 순위와 스트림 캐시 스토리지(220)에 저장된 미디어 파일의 글로벌 순위를 비교(S121)하여 요청된 미디어 파일의 글로벌 순위가 더 우선하는지 판단한다(S123).
더 우선하지 않으면, 스트림 캐시 장치(230)는 유저 단말(300)에게 미디어 데이터 전송 실패 메시지를 전송한다(S125). 이때, 미디어 데이터 전송 실패 메시지는 두가지 타입일 수 있다.
한가지 타입의 미디어 데이터 전송 실패 메시지는 404 file not found 메시지일 수 있다. 404 file not found는 유저 단말(300)이 요청한 미디어 파일을 찾을 수 없다는 의미를 가진다.
다른 타입의 미디어 데이터 전송 실패 메시지는 302 redirect 메시지일 수 있다. 302 redirect 메시지에는 콜드 노드로 리다이렉션을 유도하는 정보를 포함할 수 있으며, 콜드 노드는 도 1에서 설명한 엣지 서버들의 상위 계층에 위치하는 노드(501, 502) 또는 오리진 서버(100)일 수 있다.
S123에서 더 우선하는 것으로 판단되면, 스트림 캐시 장치(230)의 동작 한계점 이하의 청크 파일들 중에서 미디어 파일의 글로벌 순위 및 LRU(Least Recently Used) 에 기초하여 킥아웃을 실행한다(S127). 즉, 스트림 캐시 장치(230)는 미디어 파일 사이즈 단위로 패키징하고, 패키징된 청크들을 대상으로 동작 한계점 이하에 속하면서 LRU에 기초하여 킥아웃 대상을 선별할 수 있다.
S127에서 킥아웃 실행시, 스트림 캐시 장치(230)는 킥아웃 대상들중에서 S105에서 요청된 미디어 파일의 용량에 해당하는 사이즈의 청크 파일들을 삭제할 수 있다.
스트림 캐시 장치(230)는 S105에서 요청된 미디어 파일을 오리진 서버(100)로 요청(S129)하여 청크 단위로 수신한다(S131).
스트림 캐시 장치(230)는 S131에서 수신한 청크 파일들을 S107에서 생성한 스트리밍 버퍼에 채우고(S133), 동시에 스트림 캐시 스토리지(220)에 캐싱한다(S135).
스트림 캐시 장치(230)는 S131에서 수신한 청크 파일을 킥 아웃으로 인해 발생한 스트림 캐시 스토리지(220)의 잔여 공간에 캐싱한다(S135).
한편, 스트림 캐시 장치(230)는 S131에서 수신한 청크 파일들을 S107에서 생성한 스트리밍 버퍼에 채운다(S133). 그리고 스트리밍 버퍼에 채워진 청크 파일들로 구성된 미디어 데이터를 RTSP 파일 단위로 유저 단말(300)로 스트리밍 전송한다(S137).
이때, 엣지 서버(200)의 RTSP 파일 단위의 스트리밍 전송은 RTP(Real-time Transport Protocol) 패킷으로 전송하는데, 예를들어, 188Bytes×N개=약 1200B 크기를 가진 청크 파일 묶음을 단위시간마다 전송할 수 있다.
도 4(a) 및 도 4(b)는 도 3의 S125의 동작을 설명하는 예시도이다.
도 4(a)를 참조하면, 청크 파일 단위의 LRU(least recent used) 정보로 캐시 대체(cache replacement)를 결정하는 경우로서, 스트림 캐시 스토리지(220)에 저장된 전체(Full) 캐시 파일이 킥 아웃 검토 대상이다. 이때, 개별 청크 파일에 대한 LRU 정보를 지속적으로 집계 및 순위화해서 킥아웃, 즉, 캐시 대체를 실행한다. 여기서, 캐시 대체는 킥아웃한 후, 그로 인해 생긴 용량을 새로운 청크 파일을 저장하는 것을 말한다.
그런데, 도 4(a)와 같이 개별 청크 파일 단위로 LRU 정보를 순위화하면, 저장/집계해야 하는 계산량이 많아진다. 엣지 서버(200)의 스토리지가 풀(full) 되었을때 실시간 스트리밍을 지원하려면 빠른 캐시 대체 또는 킥아웃 대상을 결정해야 할 필요가 있지만, 시간이 소요되는 문제가 있다.
또한, 스토리지 용량이 제한적인 상태에서, 원본 파일 자체가 인기가 상대적으로 높은데 LRU 정보, 즉, 단순히 액세스(access) 패턴으로 계산하면 순차로 리드 액세스(read access)가 발생하는 청크 파일이 빈번하게 삭제되고 다른 청크 파일로 다시 쓰여진다. 이러면, 스토리지(예, SSD(solid-state drive))의 쓰기(read) IO 성능이 느려지고 수명이 단축될 수 있다.
이와 달리, 도 4(b)를 참조하면, 본 발명의 실시예는 전체 파일 중에서 동작 한계 용량을 초과하거나 또는 동작 한계점 미만의 일부 캐시 파일이 킥 아웃 대상이 된다. 따라서, LRU 계산이 전체 캐시 파일이었던 종래와 달리 본 발명의 실시예에서는 동작 한계 용량을 초과하는 일부 캐시 파일에 한해 LRU 계산을 하므로, LRU 계산에 따른 연산량이 줄어들고 그만큼 지연 문제를 해결할 수 있다.
이와 같이, 스토리지가 풀인 경우에 신규 캐시 저장을 위한 스토리지 확보를 위하여, 미디어 파일의 글로벌 순위 정보를 토대로 제한된 스토리지 용량 범위 내에서 킥아웃 대상 파일 범위를 제한하여 설정할 수 있다.
따라서, 본 발명의 실시예에 따르면, 청크 파일에 대해 LRU 방식으로 캐시 대체 처리를 위해 캐시 킥아웃할 청크를 선택할 때, 대상 개체가 많아서 실시간 처리할 때 부하가 발생하는 것을 피할 수 있다. 특히, 엣지 서버(200)로 사용자 스트리밍 세션이 요청하는 청크 액세스 히스토리(chunk access history) 데이터에 더불어 스트리밍 시스템 전체 혹은 엣지 서버(200)의 레벨에서 관리하는 미디어 파일 단위, 즉, 청크 단위가 아닌 미디어 파일의 글로벌 인기 순위 정보를 엣지 서버(200)에서 집계에 활용하는 협력 캐시 교체 전략(cooperative cache replacement strategy)을 사용할 수 있다.
도 5는 다른 실시예에 따른 캐시 파일 관리 방법을 나타낸 순서도이다.
이때, 도 5는 도 3에서 S125를 자세히 설명한 순서도로서, 캐시 킥아웃 대상 결정을 위해 계산 과정은 도 5와 같이 구현될 수 있다.
도 5를 참조하면, 스트림 캐시 장치(230)는 스트림 캐시 스토리지(220)에 캐싱된 청크 파일들을 미디어 파일 단위로 그룹핑한다(S201).
스트림 캐시 장치(230)는 201에서 미디어 파일 단위로 그룹핑 또는 패키징된 청크 파일들의 글로벌 순위에 기초하여 우선순위 정렬한다(S203). 글로벌 순위는 오리진 서버(100)의 집계 관리 서버(130)에 의해 미디어 파일 별로 메타 정보를 토대로 파일 레벨의 인기도 집계 결과를 기초로 생성될 수 있다.
스트림 캐시 장치(230)는 S203에서 우선순위 정렬된 청크 파일들중에서 동작 한계점 이하의 청크들을 킥아웃 후보로 결정한다(S205).
스트림 캐시 장치(230)는 미디어 파일의 글로벌 순위에 기초하여 킥아웃 후보들에 대한 각각의 스코어 1을 계산한다(S207).
스트림 캐시 장치(230)는 킥아웃 후보들에 대하여 LRU 방식으로 스코어2를 계산한다(S209). LRU는 가장 오래전에 참조된 개체를 가장 먼저 삭제하는 방식이다.
스트림 캐시 장치(230)는 스코어 1과 스코어 2를 산술적으로 연산하여 최종 스코어(Grade, G)를 계산한다(S2011). 이때, 최종 스코어(G)는 아래 수학식 1과 같이 정의할 수 있다.
Figure pat00001
여기서, a와 b는 가중치 변수로서, 사전에 운용자에 의해 설정되는 값일 수 있다.
스트림 캐시 장치(230)는 S211의 최종 스코어에 기초하여 킥아웃 후보인 청크 파일들을 우선순위 정렬한다(S213).
스트림 캐시 장치(230)는 S213에서 우선순위 정렬된 청크 파일들 중에서 유저 단말(300)에서 요청된 미디어 파일의 사이즈에 해당하는 청크 파일들을 삭제하되, 최종 스코어가 낮은 순서대로 청크들을 삭제한다(S215). 스트림 캐시 장치(230)는 최하위 청크 파일 N개의 사이즈 합(즉 삭제되는 용량)이 신규 재생을 위해 저장이 필요한 미디어 파일의 합 보다 크도록 삭제할 청크 타겟을 결정 또는 삭제할 수 있다.
이와 같이, 스트림 캐시 장치(230)는 빠른 캐시 킥아웃 대상 청크들을 선택하기 위해서, 우선, 파일별 보관 용량을 기준으로 미디어 파일의 글로벌 순위가 높은 청크 파일을 정렬하고 동작점 한계 용량을 초과하는 청크 파일 목록을 선택한다. 동작 한계점 이하에 있는 파일의 청크 목록을 대상으로 LRU를 정렬하고 이 중에서 최하위 순위 우선으로 캐시 킥아웃을 실행한다.
도 6은 한 실시예에 따른 캐시 킥아웃 동작을 설명하는 예시도이다.
도 6을 참조하면, 스트림 캐시 장치(230)는 스트림 캐시 스토리지(220)에 저장된 청크 파일 목록(P1)을 미디어 파일 단위로 그룹핑하고 미디어 파일의 글로벌 우선순위에 기초하여 우선순위 정렬(P2)한다. 이때, 청크 파일명은 미디어 파일의 식별자인 'M#1'과 청크 파일 식별자인 'C#1'로 구분하였고, 미디어 파일의 식별자가 같으면 같은 미디어 파일로 그룹핑된다. 즉, M#1_C#1, M#1_C#2, M#1_C#3은 미디어 파일 M#1에 소속된 청크 파일들을 의미한다.
이때, 미디어 파일의 글로벌 순위는 M#3>M#1>M#4>M#2의 순으로 높다고 가정한다. 그러면, 스트림 캐시 스토리지(220)에 저장된 청크 파일 목록(P1)이 M#3-->M#1->M#4->M#2의 순서대로 우선순위 정렬된 목록(P3)이 생성될 수 있다.
이때, 우선순위 정렬 목록(P3)에서 동작 한계점 이하 또는 동작 한계 용량을 초과하는 파일들이 전체 10개 중에서 5개라고 가정하면, 킥아웃 후보 대상(P3)은 M#4_C#9, M#4_C#10, M#2_C#4, M#2_C#5, M#2_C#6일 수 있다.
여기서, 설명의 편의를 위하여 스코어는 상대적인 순위를 숫자로 환산하고 최종 스코어는 스코어1과 스코어2를 단순히 합산하는 것으로 설명하였지만, 이에 국한되는 것은 아니며, 본 발명의 기술적 사상을 사용한 다양한 실시예가 가능하다.
스트림 캐시 장치(230)는 킥아웃 후보 대상(P3)에 대하여 미디어 파일의 글로벌 순위를 기초로 스코어1을 계산한다. 이때, 글로벌 순위는 M#4>M#2이므로, 스코어1은 M#4_C#9, M#4_C#10는 각각 2점, M#2_C#4, M#2_C#5, M#2_C#6은 각각 1점으로 계산될 수 있다.
LRU는 가장 오랫동안 참조되지 않은 청크 파일들을 우선 킥아웃하는 원리이므로, LRU 스코어는 가장 오랫동안 참조되지 않은 청크 파일들에 대해 상대적으로 높은 스코어를 할당한다. 예를들어, 오랫동안 참조되지 않은 순위가 M#4_C#9, M#2_C#4, M#2_C#5, M#2_C#6, M#4_C#10의 순으로 높다면, 이들 순서대로 스코어 2는 상대적으로 높게 할당된다. 즉, LRU 순위가 높으면 스코어2도 높게 할당된다.
스트림 캐시 장치(230)는 스코어1과 스코어2를 합산하여 통합 스코어를 계산하고, 통합 스코어가 높은 순서대로 청크 파일들을 나열한 목록(P5)을 생성할 수 있다. 이때, 통합 스코어가 낮은 순서대로, 즉, M#2_C#6, M#4_C#10, M#2_C#5, M#2_C#4, M#4_C#9의 순서대로 우선적으로 삭제하는데, 필요한 용량만큼 삭제한다.
이상에서 설명한 본 발명의 실시예는 장치 및 방법을 통해서만 구현이 되는 것은 아니며, 본 발명의 실시예의 구성에 대응하는 기능을 실현하는 프로그램 또는 그 프로그램이 기록된 기록 매체를 통해 구현될 수도 있다.
이상에서 본 발명의 실시예에 대하여 상세하게 설명하였지만 본 발명의 권리범위는 이에 한정되는 것은 아니고 다음의 청구범위에서 정의하고 있는 본 발명의 기본 개념을 이용한 당업자의 여러 변형 및 개량 형태 또한 본 발명의 권리범위에 속하는 것이다.

Claims (10)

  1. 엣지 서버의 캐시 파일 관리 방법으로서,
    캐시 스토리지에 저장된 청크 단위의 캐시 파일들을 미디어 파일 단위로 그룹핑하는 단계,
    미디어 파일의 글로벌 순위에 기초하여, 상기 그룹핑된 캐시 파일들 중에서 킥-아웃(Kick-Out) 후보를 결정하는 단계,
    상기 킥 아웃 후보로 결정된 캐시 파일들에 대하여 LRU(least recent used) 정보에 기초하여 최종 킥아웃 대상을 결정하는 단계, 그리고
    상기 최종 킥아웃 대상으로 결정된 캐시 파일들을 상기 캐시 스토리지에서 삭제하는 단계
    를 포함하는, 캐시 파일 관리 방법.
  2. 제1항에서,
    상기 그룹핑하는 단계 이전에,
    상기 캐시 스토리지의 동작 한계 용량을 설정하는 단계를 더 포함하고,
    상기 킥아웃 후보를 결정하는 단계는,
    상기 그룹핑된 캐시 파일들을 미디어 파일의 글로벌 순위에 기초하여 우선순위 정렬하고, 우선순위 정렬된 캐시 파일들 중에서 상기 동작 한계 용량을 초과하는 캐시 파일들을 상기 킥아웃 후보로 결정하는, 캐시 파일 관리 방법.
  3. 제2항에서,
    상기 최종 킥아웃 대상을 결정하는 단계는,
    상기 킥아웃 후보로 결정된 캐시 파일들을 대상으로, 각각의 캐시 파일이 속하는 미디어 파일의 글로벌 순위를 이용하여 계산한 제1 스코어, 그리고 상기 각각의 캐시 파일에 대한 LRU 순위를 기초로 계산한 제2 스코어를 이용하여 최종 스코어를 결정하고, 상기 최종 스코어의 순위를 토대로 최종 킥아웃 대상을 결정하는, 캐시 파일 관리 방법.
  4. 제2항에서,
    상기 그룹핑하는 단계 이전에,
    오리진 서버와 연동하여 상기 미디어 파일의 글로벌 순위를 동기화하는 단계
    를 더 포함하는, 캐시 파일 관리 방법.
  5. 제2항에서,
    상기 그룹핑하는 단계 이전에,
    유저 단말로부터 미디어 파일 요청을 수신하는 단계를 더 포함하고,
    상기 요청된 미디어 파일이 상기 캐시 스토리지에 없을 경우, 상기 캐시 스토리지의 용량이 풀(Full) 상태인지 판단하는 단계를 더 포함하고,
    상기 그룹핑하는 단계, 상기 킥-아웃 후보를 결정하는 단계, 상기 최종 킥아웃 대상을 결정하는 단계 및 상기 삭제하는 단계는,
    상기 캐시 스토리지의 용량이 풀 상태인 경우, 수행되는, 캐시 파일 관리 방법.
  6. 제5항에서,
    상기 풀 상태인지 판단하는 단계 이후,
    상기 캐시 스토리지의 용량이 풀 상태인 경우, 상기 요청된 미디어 파일의 글로벌 순위를 상기 캐시 스토리지에 저장된 캐시 파일들이 속하는 미디어 파일의 글로벌 순위와 비교하는 단계를 더 포함하고,
    상기 그룹핑하는 단계, 상기 킥-아웃 후보를 결정하는 단계, 상기 최종 킥아웃 대상을 결정하는 단계 및 상기 삭제하는 단계는,
    상기 요청된 미디어 파일의 글로벌 순위가 더 높은 경우, 수행되는, 캐시 파일 관리 방법.
  7. 제6항에서,
    상기 비교하는 단계 이후,
    상기 요청된 미디어 파일의 글로벌 순위가 더 낮은 경우, 상기 요청된 미디어 파일을 보유한 다른 노드로 상기 미디어 파일 요청을 우회시키는 단계
    를 더 포함하는, 캐시 파일 관리 방법.
  8. 제1항에서,
    상기 그룹핑하는 단계 이전에,
    유저 단말로부터 미디어 파일 요청을 수신하는 단계를 더 포함하고,
    상기 삭제하는 단계 이후,
    상기 유저 단말로부터 요청받은 미디어 파일을 오리진 서버에 요청하여 수신하고, 상기 캐시 파일의 삭제에 따라 발생한 캐시 스토리지의 메모리 공간에 상기 오리진 서버로부터 수신한 청크 단위의 미디어 파일을 캐싱하는 단계
    를 더 포함하는, 캐시 파일 관리 방법.
  9. 통신 장치,
    청크 단위의 캐시 파일을 저장하는 캐시 스토리지,
    상기 캐시 파일의 관리 프로그램을 저장하는 메모리, 그리고
    상기 관리 프로그램을 실행하는 프로세서를 포함하고,
    상기 관리 프로그램은,
    유저 단말로부터 미디어 파일 요청을 수신하는 단계,
    상기 미디어 파일이 상기 캐시 스토리지에 저장되어 있는지 판단하는 단계,
    저장되어 있지 않으면, 상기 캐시 스토리지의 용량이 풀 상태인지 판단하는 단계,
    상기 풀 상태로 판단되면, 상기 캐시 스토리지에 저장된 청크 단위의 캐시 파일들을 미디어 파일 단위로 그룹핑하는 단계,
    미디어 파일의 글로벌 순위에 기초하여, 상기 그룹핑된 캐시 파일들 중에서 킥 아웃 대상을 결정하는 단계, 그리고
    상기 킥 아웃 대상으로 결정된 캐시 파일들을 상기 미디어 파일을 구성하는 청크 단위 용량만큼 삭제하고 삭제된 공간에 오리진 노드로부터 수신한 상기 미디어 파일을 구성하는 청크 파일들을 캐싱하는 단계
    를 수행하도록 지시하는 명령어들을 포함하는, 엣지 서버.
  10. 제9항에서,
    상기 수신하는 단계 이전에,
    상기 캐시 스토리지의 동작 한계점을 설정하는 단계를 더 포함하고,
    상기 동작 한계점은,
    상기 캐시 스토리지의 전체 용량을 고려하여 설정되고,
    상기 킥 아웃 대상은,
    상기 동작 한계점을 초과하는 캐시 파일들 중에서 상기 미디어 파일의 글로벌 순위가 상대적으로 낮은 캐시 파일들로 선정되는, 엣지 서버.
KR1020200167576A 2020-12-03 2020-12-03 콘텐츠 조각 캐싱을 위한 캐시 파일 관리 방법 및 이를 수행하는 엣지 서버 KR20220078244A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020200167576A KR20220078244A (ko) 2020-12-03 2020-12-03 콘텐츠 조각 캐싱을 위한 캐시 파일 관리 방법 및 이를 수행하는 엣지 서버

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200167576A KR20220078244A (ko) 2020-12-03 2020-12-03 콘텐츠 조각 캐싱을 위한 캐시 파일 관리 방법 및 이를 수행하는 엣지 서버

Publications (1)

Publication Number Publication Date
KR20220078244A true KR20220078244A (ko) 2022-06-10

Family

ID=81986438

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200167576A KR20220078244A (ko) 2020-12-03 2020-12-03 콘텐츠 조각 캐싱을 위한 캐시 파일 관리 방법 및 이를 수행하는 엣지 서버

Country Status (1)

Country Link
KR (1) KR20220078244A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116866995A (zh) * 2023-09-05 2023-10-10 江西师范大学 一种基于移动车辆的内容分层边缘缓存策略

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116866995A (zh) * 2023-09-05 2023-10-10 江西师范大学 一种基于移动车辆的内容分层边缘缓存策略
CN116866995B (zh) * 2023-09-05 2023-12-01 江西师范大学 一种基于移动车辆的内容分层边缘缓存策略

Similar Documents

Publication Publication Date Title
US8612668B2 (en) Storage optimization system based on object size
EP2359536B1 (en) Adaptive network content delivery system
US20100131671A1 (en) Adaptive network content delivery system
US8966097B1 (en) Fractional redundant distribution of media content
US7272613B2 (en) Method and system for managing distributed content and related metadata
US8392615B2 (en) Dynamic variable rate media delivery system
CA2841216C (en) Modular storage server architecture with dynamic data management
US8250211B2 (en) Automatic migration of data via a distributed computer network
JP5408257B2 (ja) コンテンツ配信システム、コンテンツ配信方法、コンテンツ配信プログラム
EP1892921B1 (en) Method and system for managing distributed content and related metadata
US9380323B2 (en) Cache eviction
CN107181734B (zh) 一种cdn-p2p网络架构的流媒体缓存替换方法
US20080141321A1 (en) Content storage and delivery systems and associated methods
KR20220078244A (ko) 콘텐츠 조각 캐싱을 위한 캐시 파일 관리 방법 및 이를 수행하는 엣지 서버
Wu et al. Reuse time based caching policy for video streaming
KR20220064391A (ko) 클라우드 저장소의 액세스 패턴 주도식 데이터 배치
Ling et al. An adaptive caching algorithm suitable for time-varying user accesses in VOD systems
CN113992653B (zh) 一种基于边缘缓存的cdn-p2p网络的内容下载、预存和替换方法