KR20170139671A - 계층화된 캐시 채우기 - Google Patents

계층화된 캐시 채우기 Download PDF

Info

Publication number
KR20170139671A
KR20170139671A KR1020177034257A KR20177034257A KR20170139671A KR 20170139671 A KR20170139671 A KR 20170139671A KR 1020177034257 A KR1020177034257 A KR 1020177034257A KR 20177034257 A KR20177034257 A KR 20177034257A KR 20170139671 A KR20170139671 A KR 20170139671A
Authority
KR
South Korea
Prior art keywords
servers
local
server
master
file
Prior art date
Application number
KR1020177034257A
Other languages
English (en)
Other versions
KR102031476B1 (ko
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 넷플릭스, 인크.
Publication of KR20170139671A publication Critical patent/KR20170139671A/ko
Application granted granted Critical
Publication of KR102031476B1 publication Critical patent/KR102031476B1/ko

Links

Images

Classifications

    • G06F17/30132
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • G06F16/1824Distributed file systems implemented using Network-attached Storage [NAS] architecture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • G06F16/137Hash-based
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/172Caching, prefetching or hoarding of files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • G06F16/1824Distributed file systems implemented using Network-attached Storage [NAS] architecture
    • G06F16/183Provision of network file services by network file servers, e.g. by using NFS, CIFS
    • G06F17/30097
    • G06F17/30203
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1023Server selection for load balancing based on a hash applied to IP addresses or costs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/06Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

본 발명의 일 실시예는 서버들의 네트워크 내에서 파일을 복제하는 기법을 설명한다. 이 기법은 서버들의 지역 클러스터에 포함된 하나 이상의 지역 마스터 서버를 결정하는 단계, 및 각 지역 마스터 서버로 하여금 채우기 소스로부터 파일을 검색하게 하는 단계를 포함한다. 이 기법은 서버들의 지역 클러스터에 포함된 서버들의 적어도 하나의 로컬 클러스터에 대해, 서버들의 적어도 하나의 로컬 클러스터에 포함된 하나 이상의 로컬 마스터 서버를 결정하는 단계, 및 각 로컬 마스터 서버로 하여금 하나 이상의 지역 마스터 서버 중 하나로부터 파일을 검색하게 하는 단계를 더 포함한다.

Description

계층화된 캐시 채우기
관련 출원들에 대한 상호 참조
본 출원은 2015년 4월 30일에 출원된, 일련 번호가 62/155,430이고 대리인 문서 번호가 NETF/0094USL인 미국 특허 가출원, 및 2016년 3월 10일에 출원된, 일련 번호가 15/067,099이고 대리인 문서 번호가 NETF/0094US인 미국 특허 출원의 우선권을 주장한다. 이들 관련 출원의 내용은 이로써 본 명세서에 참조로 포함된다.
발명의 분야
본 발명의 실시예들은 일반적으로 컴퓨터 네트워크를 통한 데이터 전송에 관한 것으로, 더 상세하게는, 계층화된 캐시 채우기에 관한 것이다.
많은 웹 기반 애플리케이션들은 스트리밍 오디오 및/또는 스트리밍 비디오와 같은 서비스들을 인터넷을 통해 분산된 방식으로 제공한다. 일반적으로, 그러한 애플리케이션들은 하나 이상의 네트워크 위치에 있는 다수의 서버들에 걸쳐, 오디오 파일이나 비디오 파일과 같은 각 콘텐츠 타이틀의 다수의 복사본을 분산시킴으로써 동작한다. 다수의 서버들에 걸쳐 콘텐츠를 미러링함으로써, 많은 사용자들이 상당한 대기 시간을 초래하는 일 없이 많은 사용자들이 해당 콘텐츠에 액세스할 수 있다. 또한, 특정 콘텐츠 타이틀의 다수의 복사본들을 유지하는 것은 특정 서버와 관련하여 하드웨어 또는 소프트웨어 장애가 발생하는 경우 웹 기반 애플리케이션이 신속하게 끊김 없이 복구하는 것을 가능하게 한다.
콘텐츠 타이틀들을 사용자들에게 제공하는 것과 연관된 대기 시간들 및 전체 네트워크 요건들을 더 줄이기 위해, 콘텐츠 타이틀들이 저장되는 서버들은 전형적으로 웹 애플리케이션에 의해 서비스되는 하나 이상의 지역에 걸쳐 지리적으로 분산되어 있다. 그러면 웹 애플리케이션은 사용자에게 더 효과적으로 콘텐츠 타이틀을 제공하기 위해 사용자 가까이에 위치하는 특정 서버로 각 사용자를 안내하도록 구성된다.
큰 지리적 영역 내에 또는 상이한 지리적 영역들에 걸쳐 분산된 서버들에 저장된 콘텐츠 타이틀들을 관리하는 것은 몇 가지 문제를 제기할 수 있다. 특히, 주어진 콘텐츠 타이틀을 큰 지리적 영역에 걸쳐 위치하는 다수의 서버들에 복사하는 것은 대역폭과 같은, 상당한 네트워크 리소스들을 소비할 수 있다. 네트워크 리소스들의 소비는, 특히 네트워크 인프라 구조의 전부 또는 일부가 제3자들에 의해 제공되는 경우, 웹 기반 애플리케이션에 대한 비용을 증가시킨다. 또한, 주어진 콘텐츠 타이틀을 다수의 서버들에 복사하는 종래의 기법들은 종종 콘텐츠 타이틀을 초기에 수신하는 서버들로 하여금 대역폭 사용 및 처리 부하에서 상당한 변동을 겪게 할 수 있다 - 예를 들어, 다른 네트워크 서버들이 콘텐츠 타이틀의 복사본에 대한 요청들로 콘텐츠 타이틀을 초기에 수신하는 서버들을 "플러딩(flood)"하는 경우. 그러한 변동은 그 "초기" 서버들의 성능에 부정적인 영향을 미칠 수 있고, 이는 초기 서버들을 통해 웹 기반 애플리케이션에 액세스하는 사용자들에게 제공되는 서비스의 품질을 저하시키고/저하시키거나 초기 서버들로 하여금 소프트웨어 및/또는 하드웨어 장애를 겪게 한다.
상기 내용이 설명하는 바와 같이, 서버들의 네트워크에 걸쳐 콘텐츠를 분산시키는 개선된 기법들이 유용할 것이다.
본 발명의 일 실시예는 서버들의 네트워크 내에서 파일을 복제하는 방법을 설명한다. 이 방법은 서버들의 지역 클러스터에 포함된 하나 이상의 지역 마스터 서버를 결정하고 각 지역 마스터 서버로 하여금 채우기 소스로부터 파일을 검색하게 하는 단계를 포함한다. 이 방법은 서버들의 지역 클러스터에 포함된 서버들의 적어도 하나의 로컬 클러스터에 대해, 적어도 하나의 로컬 클러스터 서버에 포함된 하나 이상의 로컬 마스터 서버를 결정하고, 각 로컬 마스터 서버로 하여금 하나 이상의 지역 마스터 서버 중 하나로부터 파일을 검색하게 하는 단계를 더 포함한다.
또 다른 실시예들은, 무엇보다도, 전술한 방법을 구현하도록 구성된 제어 서버 및 비일시적 컴퓨터 판독 가능 매체를 제공한다.
개시된 기법들의 적어도 하나의 이점은 엔티티가 마스터 인덱스를 유지할 것을 요구하지 않고, 콘텐츠 서버들의 특정 계층들을 통해 예측 가능한, 분산된, 높은 결함 허용 방식으로 각 파일이 네트워크에 걸쳐 복제될 수 있다는 점이다. 또한, 하위 계층들이 상위 계층들에 포함된 콘텐츠 서버들을 플러딩하는 것을 방지하기 위해 각 계층에 미리 결정된 지연을 할당하여, 네트워크 인프라 구조에 걸쳐 새로운 또는 기존 파일들을 복제할 때 서버 부하 변동의 심각성을 줄일 수 있다. 더욱이, 각 계층에 포함된 콘텐츠 서버들은 파일과 연관된 식별자에 기초하여 결정되기 때문에, 각 파일은 상이한 일련의 콘텐츠 서버들을 통해 네트워크 인프라 구조를 통해 전파될 수 있다. 결과적으로, 네트워크 및 처리 부하들이 콘텐츠 서버들 간에 더 고르게 분산되어, 콘텐츠 서버들을 통해 웹 기반 애플리케이션에 액세스하는 사용자들에게 제공되는 전반적인 서비스 품질이 향상된다.
위에 언급한 본 발명의 특징들이 상세하게 이해될 수 있는 방식으로, 위에서 간략히 요약된 본 발명의 더 구체적인 설명이 실시예들을 참조하여 이루어질 수 있으며, 실시예들 중 일부가 첨부된 도면들에 도시되어 있다. 그러나, 본 발명은 다른 동등하게 효과적인 실시예들을 인정할 수 있기 때문에, 첨부된 도면들은 단지 본 발명의 전형적인 실시예들을 도시하는 것이며 따라서 그 범위를 제한하는 것으로 간주되어서는 안 된다는 점에 유의해야 한다.
도 1은 본 발명의 다양한 실시예들에 따른, 콘텐츠 서버들 및 종점 디바이스들에 콘텐츠를 배포하는 데 사용되는 네트워크 인프라 구조를 도시한다.
도 2는 본 발명의 다양한 실시예들에 따른, 도 1의 네트워크 인프라 구조와 관련하여 구현될 수 있는 콘텐츠 서버의 블록도이다.
도 3은 본 발명의 다양한 실시예들에 따른, 도 1의 네트워크 인프라 구조와 관련하여 구현될 수 있는 제어 서버의 블록도이다.
도 4는 본 발명의 다양한 실시예들에 따른, 도 1의 콘텐츠 서버들이 어떻게 지리적으로 분산되는지를 도시한다.
도 5a 내지 도 5c는 본 발명의 다양한 실시예들에 따른, 도 1의 지리적으로 분산된 콘텐츠 서버들의 상이한 계층들에 걸쳐 파일을 복제하는 기법을 도시한다.
도 6a 및 도 6b는 본 발명의 다양한 실시예들에 따른, 지리적으로 분산된 콘텐츠 서버들에 걸쳐 파일을 복제하는 방법 단계들의 흐름도를 도시한다.
이하의 설명에서는, 본 발명의 실시예들에 대한 더 철저한 이해를 제공하기 위해 다수의 특정 세부 사항들이 제시된다. 그러나, 본 발명의 실시예들은 이 특정 세부 사항들 중 하나 이상 없이도 실시될 수 있음이 본 기술분야의 기술자에게 명백할 것이다.
도 1은 본 발명의 다양한 실시예들에 따른, 콘텐츠 서버들(110) 및 종점 디바이스들(115)에 콘텐츠를 배포하는 데 사용되는 네트워크 인프라 구조(100)를 도시한다. 도시된 바와 같이, 네트워크 인프라 구조(100)는 콘텐츠 서버들(110), 제어 서버(120), 및 종점 디바이스들(115)을 포함하고, 그 각각은 통신 네트워크(105)를 통해 연결되어 있다.
각 종점 디바이스(115)는 텍스트 데이터, 그래픽 데이터, 오디오 데이터, 비디오 데이터, 및 다른 데이터 유형들과 같은 콘텐츠를 다운로드하기 위해 네트워크(105)를 통해 하나 이상의 콘텐츠 서버(110)("캐시들" 또는 "노드들"이라고도 지칭됨)와 통신한다. 그러면 본 명세서에서 "파일"이라고도 지칭되는 다운로드 가능한 콘텐츠가 하나 이상의 종점 디바이스(115)의 사용자에게 제공된다. 다양한 실시예들에서, 종점 디바이스(115)는 컴퓨터 시스템들, 셋톱 박스들, 모바일 컴퓨터, 스마트폰들, 태블릿들, 콘솔 및 핸드헬드 비디오 게임 시스템들, 디지털 비디오 레코더들(DVR들), DVD 플레이어들, 연결된 디지털 TV들, 전용 미디어 스트리밍 디바이스들(예를 들어, Roku® 셋톱 박스), 및/또는 네트워크 연결성을 갖고 텍스트, 이미지, 비디오, 및/또는 오디오 콘텐츠와 같은 콘텐츠를 사용자에게 제공할 수 있는 임의의 다른 기술적으로 실현 가능한 컴퓨팅 플랫폼을 포함할 수 있다.
각 콘텐츠 서버(110)는 웹 서버, 데이터베이스, 및 제어 서버(120)와 통신하여 제어 서버(120)에 의해 추적되고 관리되는 다양한 파일들의 위치 및 가용성을 결정하도록 구성된 서버 애플리케이션(217)을 포함할 수 있다. 각 콘텐츠 서버(110)는 각 콘텐츠 서버(110)를 다양한 파일들의 복사본들로 "채우기" 위해 채우기 소스(130) 및 하나 이상의 다른 콘텐츠 서버(110)와 더 통신할 수 있다. 또한, 콘텐츠 서버들(110)은 종점 디바이스들(115)로부터 수신된 파일들에 대한 요청들에 응답할 수 있다. 그 후 파일들은 콘텐츠 서버(110)로부터 또는 더 넓은 콘텐츠 배포 네트워크를 통해 배포될 수 있다. 일부 실시예들에서, 콘텐츠 서버들(110)은 콘텐츠 서버들(110)에 저장된 파일들에 액세스하기 위해 사용자들이 (예를 들어, 사용자 이름 및 패스워드를 사용하여) 인증할 수 있게 한다. 도 1에는 단일 제어 서버(120)만이 도시되어 있지만, 다양한 실시예들에서 다수의 제어 서버들(120)이 파일들을 추적하고 관리하도록 구현될 수 있다.
다양한 실시예에서, 채우기 소스(130)는 콘텐츠 서버들(110)을 채우기 위해 수천 또는 수백만 개의 파일들을 포함하는 파일들의 카탈로그가 저장되고 액세스되는 온라인 저장 서비스(예를 들어, Amazon® Simple Storage Service, Google® Cloud Storage 등)를 포함할 수 있다. 도 1에는 단일 채우기 소스(130)만이 도시되어 있지만, 다양한 실시예들에서 다수의 채우기 소스들(130)이 파일들에 대한 요청들을 서비스하도록 구현될 수 있다.
도 2는 본 발명의 다양한 실시예들에 따른, 도 1의 네트워크 인프라 구조(100)와 관련하여 구현될 수 있는 콘텐츠 서버(110)의 블록도이다. 도시된 바와 같이, 콘텐츠 서버(110)는 중앙 처리 유닛(CPU)(204), 시스템 디스크(206), 입/출력(I/O) 디바이스들의 인터페이스(208), 네트워크 인터페이스(210), 인터커넥트(212), 및 시스템 메모리(214)를 포함하지만, 이들로 제한되지 않는다.
CPU(204)는 시스템 메모리(214)에 저장된 서버 애플리케이션(217)과 같은 프로그래밍 명령들을 검색하고 실행하도록 구성된다. 유사하게, CPU(204)는 시스템 메모리(214)에 애플리케이션 데이터를 저장하고 그로부터 애플리케이션 데이터를 검색하도록 구성된다. 인터커넥트(212)는 CPU(204), 시스템 디스크(206), I/O 디바이스들의 인터페이스(208), 네트워크 인터페이스(210), 및 시스템 메모리(214) 사이의, 프로그래밍 명령들 및 애플리케이션 데이터와 같은 데이터의 전송을 용이하게 하도록 구성된다. I/O 디바이스들의 인터페이스(208)는 I/O 디바이스들(216)로부터 입력 데이터를 수신하고 입력 데이터를 인터커넥트(212)를 통해 CPU(204)로 전송하도록 구성된다. 예를 들어, I/O 디바이스들(216)은 하나 이상의 버튼, 키보드, 마우스, 및/또는 다른 입력 디바이스들을 포함할 수 있다. I/O 디바이스들의 인터페이스(208)는 인터커넥트(212)를 통해 CPU(204)로부터 출력 데이터를 수신하고 출력 데이터를 I/O 디바이스들(216)로 전송하도록 더 구성된다.
시스템 디스크(206)는 하나 이상의 하드 디스크 드라이브, 솔리드 스테이트 저장 디바이스, 또는 유사한 저장 디바이스를 포함할 수 있다. 시스템 디스크(206)는 콘텐츠 카탈로그와 연관된 파일들(218)(예를 들어, 오디오 파일들, 비디오 파일들 및/또는 자막들)과 같은 비휘발성 데이터를 저장하도록 구성된다. 그 후 파일들(218)은 네트워크(105)를 통해 하나 이상의 종점 디바이스(115)에 의해 검색될 수 있다. 일부 실시예들에서, 네트워크 인터페이스(210)는 이더넷 표준에 따라 동작하도록 구성된다.
시스템 메모리(214)는 종점 디바이스(115) 및 다른 콘텐츠 서버들(110)로부터 수신된 파일들(218)에 대한 요청들을 서비스하도록 구성된 서버 애플리케이션(217)을 포함한다. 서버 애플리케이션(217)이 파일(218)에 대한 요청을 수신할 경우, 서버 애플리케이션(217)은 시스템 디스크(206)로부터 대응 파일(218)을 검색하고 파일(218)을 네트워크(105)를 통해 종점 디바이스(115) 또는 콘텐츠 서버(110)로 전송한다. 서버 애플리케이션(217)은 채우기 소스(130), 특정 콘텐츠 서버(110) 등으로부터 특정 파일이 요청될 수 있는 위치(들) 및/또는 시간(들)과 같은 명령들을 제어 서버(120)에 요청하도록 더 구성된다.
도 3은 본 발명의 다양한 실시예들에 따른, 도 1의 네트워크 인프라 구조(100)와 관련하여 구현될 수 있는 제어 서버(120)의 블록도이다. 도시된 바와 같이, 제어 서버(120)는 중앙 처리 유닛(CPU)(304), 시스템 디스크(306), 입/출력(I/O) 디바이스들의 인터페이스(308), 네트워크 인터페이스(310), 인터커넥트(312), 및 시스템 메모리(314)를 포함하지만, 이들로 제한되지 않는다.
CPU(304)는 시스템 메모리(314)에 저장된 제어 애플리케이션(317)과 같은 프로그래밍 명령들을 검색하고 실행하도록 구성된다. 유사하게, CPU(304)는 시스템 메모리(314)에 애플리케이션 데이터를 저장하고 그로부터 애플리케이션 데이터를 검색하고 시스템 디스크(306)에 저장된 데이터베이스(318)를 검색하도록 구성된다. 인터커넥트(312)는 CPU(304), 시스템 디스크(306), I/O 디바이스들의 인터페이스(308), 네트워크 인터페이스(310), 및 시스템 메모리(314) 사이의 데이터의 전송을 용이하게 하도록 구성된다. I/O 디바이스들의 인터페이스(308)는 인터커넥트(312)를 통해 I/O 디바이스(316)와 CPU(304) 사이에 입력 데이터 및 출력 데이터를 전송하도록 구성된다. 시스템 디스크(306)는 하나 이상의 하드 디스크 드라이브, 솔리드 스테이트 저장 디바이스 등을 포함할 수 있다. 시스템 디스크(206)는 콘텐츠 서버(110), 채우기 소스(들)(130), 및 파일들(218)과 연관된 정보의 데이터베이스(318)를 저장하도록 구성된다.
시스템 메모리(314)는 데이터베이스(318)에 저장된 정보에 액세스하고 정보를 처리하여 네트워크 인프라 구조(100)에 포함된 콘텐츠 서버들(110)에 걸쳐 특정 파일들(218)이 복제될 방식을 결정하도록 구성된 제어 애플리케이션(317)을 포함한다. 예를 들어, 콘텐츠 서버들(110)이 새로운 파일(218)의 복사본들로 채워져야 하는 경우, 서버 ID들이라고 지칭되는 콘텐츠 서버들(110)과 연관된 식별자들(ID)의 목록이 데이터베이스(318)로부터 액세스된다. 그 후 제어 애플리케이션(317)은, 도 4 내지 도 6과 관련하여 아래에 더 상세히 설명되는 바와 같이, 새로운 파일(218)과 연관된 파일 ID와 관련하여 서버 ID들을 처리하여 어떻게 그리고 언제 새로운 파일(218)이 네트워크 인프라 구조(100)에 포함된 콘텐츠 서버들(210)에 걸쳐 복제될 것인지를 결정한다.
본 명세서에서 전술한 바와 같이, 큰 지리적 영역에 걸쳐 분산된 콘텐츠 서버들(110)에 저장된 오디오 및 비디오 파일들과 같은 콘텐츠를 관리하는 것은 다양한 문제들을 제기한다. 특히, 상이한 네트워크 및 처리 능력들을 갖는 매우 다양한 종점 디바이스들(115)을 서비스하기 위해, 각 콘텐츠 타이틀은 다수의(예를 들어, 10개 이상의) 상이한 비트레이트로 인코딩될 수 있다. 결과적으로, 영화 또는 텔레비전 쇼와 같은 단일 콘텐츠 타이틀은 상이한 비트레이트로 콘텐츠 타이틀을 각각 인코딩하는 다수의 파일들(218)과 연관될 수 있으며, 그 각각은 종점 디바이스들(115)에 대한 콘텐츠 타이틀을 제공하도록 구성되는 콘텐츠 서버(110)에 의해 저장될 수 있다.
따라서, 각각이 다수의 파일들(218)과 연관되는 콘텐츠 타이틀들의 큰 카탈로그로 콘텐츠 서버(110)를 채우려고 시도하는 것은 상당한 네트워크 리소스들을 소비할 수 있다. 따라서, 콘텐츠 서버들(110) 각각이 채우기 소스(130)와 같은 제3자 소스로부터 직접, 및/또는 제3자 네트워크를 통해 파일들(218)을 페치해야 한다면, 상당한 액세스 및 대역폭 비용이 초래될 수 있다.
한편, 파일(218)을 초기에 수신하는 소수의 로컬 콘텐츠 서버들(110)만을 사용하여 콘텐츠 서버들(110)을 채우려고 시도함으로써 제3자 소스들/네트워크들의 사용을 최소화하는 것은 초기 콘텐츠 서버(들)(110)에 과도한 부담을 줄 수 있다. 그러한 부담은 다른 콘텐츠 서버들(110)이 파일(218)에 대한 요청들로 콘텐츠 서버(들)(110)를 플러딩하는 경우 초기 콘텐츠 서버들(110)에서 네트워크 및 처리 부하 변동을 야기할 수 있다.
따라서, 다양한 실시예들에서, 각 파일(218)은 네트워크 인프라 구조(100)에 포함된 서버 ID들 및 파일(218)과 연관된 파일 ID에 기초하여 정확하게 계산될 수 있는 콘텐츠 서버들(110)의 특정 계층들을 통해 네트워크 인프라 구조(100) 내에서 복제될 수 있다. 서버 ID들 및 파일 ID들에 기초하여 파일들(218)이 위치할 콘텐츠 서버들(110)이 정확하게 계산될 수 있기 때문에, 파일(218) 액세스는 결정적이어서, 캐시 미스의 발생이 감소 또는 제거된다. 각 계층에 포함된 콘텐츠 서버들(110)의 수는, 예를 들어 각 계층에 대한 또는 각 파일(218)에 대한 복제 팩터를 특정함으로써, 특정 파일(218)의 인기 및 그에 대한 수요에 기초하여 제어될 수 있다. 결과적으로, 콘텐츠 서버들(110)이 로컬로 채워지는 정도가 조절될 수 있어, 제3자 네트워크 및 저장 비용이 감소될 수 있다. 또한, 각 계층에 포함된 콘텐츠 서버들(110)은 파일 ID에 기초하여 결정되기 때문에, 각 파일(218)은 상이한 일련의 콘텐츠 서버들(110)을 통해 네트워크 인프라 구조(100)에 걸쳐 복제될 수 있다. 결과적으로, 네트워크 및 처리 부하들이 콘텐츠 서버들(110) 간에 더 고르게 분산되어, 콘텐츠 서버들(110)을 통해 웹 기반 애플리케이션에 액세스하는 사용자들에게 제공되는 전반적인 서비스 품질이 향상된다.
일부 실시예들에서, 다수의 파일들(218)은 카테고리에 의해 그룹화되고, 각 카테고리와 연관된 파일들(218)에 고유한 파일 ID가 할당된다. 예를 들어, 콘텐츠 타이틀 A(예를 들어, 영화 또는 텔레비전 쇼)와 연관된 파일들(218)에는 제1 파일 ID가 할당될 수 있는 반면, 콘텐츠 타이틀 B와 연관된 파일들(218)에는 제2 파일 ID가 할당된다. 또한, 일부 실시예들에서, 상이한 비트 레이트에서의 콘텐츠 타이틀의 각 인코딩에 상이한 파일 ID가 할당된다. 즉, 그러한 실시예들에서, 콘텐츠 타이틀 A 및 제1 비트 레이트와 연관된 파일들(218)에는 제1 파일 ID가 할당될 수 있는 반면, 콘텐츠 타이틀 A 및 제2 비트 레이트와 연관된 파일들(218)에는 제2 파일 ID가 할당될 수 있다. 그러한 실시예들은 특정 카테고리와 연관된 파일들(218)의 완전한 세트가 하나 이상의 콘텐츠 서버(110) 각각에 함께 저장될 수 있게 한다.
또한, 일부 실시예들에서, 각 파일(218)에 고유한 파일 ID가 할당된다. 예를 들어, 콘텐츠 타이틀 A 및 제1 비트 레이트와 연관된 파일들(218) 각각에는 상이한 파일 ID가 할당될 수 있다. 그러한 실시예들은 특정 카테고리와 연관된 파일들(218)이 다수의 콘텐츠 서버들(110)에 걸쳐 분산될 수 있게 하여, 예를 들어, 파일들(218)이 특정 종점 디바이스(115)에 병렬로 전송될 수 있게 한다. 또한, 일부 실시예들에서, 고유한 파일 ID들이 파일들(218)에 할당되는 세분성은 카테고리마다 다를 수 있다.
다양한 실시예들에서, 특정 파일(218)과 연관된 파일 ID는 JSON(JavaScript Object Notation) 객체에 인코딩된다. JSON(JavaScript Object Notation)은 JavaScript 스크립팅 언어와 일반적으로 호환되는 방식으로 "객체"라고 지칭되는 데이터 구조들을 나타내기 위한 규칙이다. 객체들은 하나 이상의 요소를 포함할 수 있으며, 요소들 각각은 키로 지정된다. 요소들 각각은 문자열, 숫자, 다른 객체, 어레이, 부울 값 또는 널(null)일 수 있다. 어레이들은 꺽쇠 괄호 "[" 및 "]"에 의해 묘사되는 요소들의 정렬된 목록들이다. 어레이들 내의 요소들은 쉼표로 구분된다. 파일(218)과 연관된 예시적인 JSON 객체가 아래 표 1에 제시되어 있다.
Figure pct00001
표 1: 예시적인 JSON 객체
위에 제시된 예시적인 JSON 객체에서, 첫 번째와 마지막 중괄호들은 객체의 시작과 끝을 지시한다. "videos"는 꺽쇠 괄호 "[" 및 "]"에 의해 묘사되는 비디오들의 어레이에 대한 키이다. 어레이는 중괄호들에 의해 각각 묘사되는 2개의 요소를 포함한다. 첫 번째 그러한 요소는 제시된 바와 같은 값들을 갖는 "id" 필드, "title" 필드, "boxart" 필드, 및 "synopsis" 필드를 포함하는 객체이다. 유사하게, 어레이 내의 두 번째 요소는 제시된 바와 같은 값들을 갖는다. 따라서, 이 예에서는, 제1 파일(218)("Eternal Sunshine of the Spotless Mind")과 연관된 제1 ID 23432 및 제2 파일(218)("The Mask")과 연관된 파일 ID 23521이 특정되어 있다.
또한, 일부 실시예들에서, 콘텐츠 서버(110)는 어레이에 저장된 다수의 파일 ID들을 포함하는 JSON 객체를 제어 애플리케이션(317)에 전송함으로써 다운로드 명령들(예를 들어, 다운로드 위치들, 시간 지연들 등)을 요청할 수 있다. 파일 ID들의 그러한 어레이를 포함하는 예시적인 JSON 객체가 아래 표 2에 제시되어 있다.
Figure pct00002
표 2 : 예시적인 JSON 어레이
도 4는 본 발명의 다양한 실시예들에 따른, 도 1의 콘텐츠 서버들(110)이 어떻게 지리적으로 분산되는지를 도시한다. 도시된 바와 같이, 콘텐츠 서버들(110)은 지역 클러스터들(410), 로컬 클러스터들(420), 및 매니페스트 클러스터들(430)을 포함하는, 다양한 클러스터들로 조직될 수 있다.
예를 들어, 도 4에 도시된 예시적인 지리적 분산에서, 콘텐츠 서버들(110)은 지역 클러스터(410-1) 및 지역 클러스터(410-2)로 조직된다. 일부 실시예들에서, 각 지역 클러스터(410)는 상이한 도시, 주, 국가, 시간대, 대륙 등과 연관될 수 있다. 각 지역 클러스터(410)는 하나 이상의 로컬 클러스터(420)를 포함한다. 예를 들어, 지역 클러스터(410-1)는 로컬 클러스터(420-1) 및 로컬 클러스터(420-2)를 포함하고, 지역 클러스터(410-2)는 로컬 클러스터(420-3), 로컬 클러스터(420-4), 및 로컬 클러스터(420-5)를 포함한다. 각 로컬 클러스터(420)는 하나 이상의 매니페스트 클러스터(430)를 포함하며, 그 각각은 하나 이상의 콘텐츠 서버(110)를 포함한다. 예를 들어, 도 4에 도시된 매니페스트 클러스터들(430) 각각은 5개의 콘텐츠 서버(110)를 포함한다. 그러나, 임의의 수의 콘텐츠 서버들(110)이 각 매니페스트 클러스터(430)에 포함될 수 있다. 또한, 임의의 수의 지역 클러스터들(410), 로컬 클러스터들(420), 매니페스트 클러스터들(430) 및 콘텐츠 서버들(110)이 네트워크 인프라 구조(100)에 포함될 수 있다.
도 5a 내지 도 5c는 본 발명의 다양한 실시예들에 따른, 도 1의 지리적으로 분산된 콘텐츠 서버들(110)의 상이한 계층들에 걸쳐 파일(218)을 복제하는 기법을 도시한다. 피크 트래픽 수요들 및 리던던시 요건들을 충족시키기 위해, 각 파일(218)의 다수의 복사본들이 각 지역 클러스터(410)에 포함된 콘텐츠 서버들(110)에 걸쳐 복제될 수 있다. 따라서, 다양한 실시예들에서, 파일(218)이 어디에 저장되어야 하는지를 사전 계산할 필요 없이 그리고 콘텐츠 서버들(110)의 인덱스를 중앙 서버에 저장할 필요 없이 다수의 콘텐츠 서버들(110)에 걸쳐 파일들(218)을 고르게 복제하기 위해 후술되는 일관된 해싱 연산과 같은 하나 이상의 해싱 연산이 제어 애플리케이션(317)에 의해 수행될 수 있다. 본 명세서에 기술된 기법들은 특정 해싱 연산과 관련하여 구현되지만, 임의의 기술적으로 실현 가능한 동작 또는 기법이 특정 파일(218)이 복제되는 계층들에 포함된 콘텐츠 서버들(110)을 선택하는 데 사용될 수 있다.
다양한 실시예들에서, 제어 애플리케이션(317)은 콘텐츠 서버들(110)과 연관된 각 서버 ID에 대해 해싱 연산을 수행(예를 들어, MD5 메시지-다이제스트 알고리즘을 적용)함으로써 특정 지역 클러스터(410)에 포함된 각 콘텐츠 서버(110)에 대한 해시 값을 생성할 수 있다. 그 후 제어 애플리케이션(317)은 결과적인 해시 값들을 분류하여 해시 링, 해시 테이블 등과 같은 해시 데이터 구조를 형성한다. 그 후 제어 애플리케이션(317)은, 어떤 콘텐츠 서버들(110)이 지역 클러스터(410)에 걸쳐 특정 파일(218)을 복제하는 데 사용될지를 결정하기 위해, 파일(218)과 연관된 파일 ID에 동일한(또는 상이한) 해싱 연산을 적용함으로써 파일(218)에 대한 해시 값을 생성한다.
그 후, 제어 애플리케이션(317)은 파일(218)과 연관된 해시 값을 해시 데이터 구조와 비교하고, 파일(218)의 해시 값에 가장 가까운 해시 값을 갖는 콘텐츠 서버(110)를 그 특정 파일(218)에 대한 지역 마스터(510)가 되도록 선택한다. 또한, 1보다 큰 복제 팩터(replication factor, RF)가 파일(218)에 대해 및/또는 지역 마스터(510) 계층에 대해 지정되면, 제어 애플리케이션(317)은 해시 데이터 구조에서 다음에 있는(예를 들어, 해시 값에 기초하여) 하나 이상의 추가 콘텐츠 서버(110)를 지역 마스터들(510)로서 선택한다. 일부 실시예들에서, 제어 애플리케이션(317)은, 원하는 수의 지역 마스터들(510)이 선택될 때까지, 지역 클러스터(410)에 대해 선택된 제1 지역 마스터(510)와 연관된 해시 값에서 시작하여, 해시 링 주위로 또는 해시 테이블 아래로 "워킹(walking)"함으로써 해시 데이터 구조에서 다음 콘텐츠 서버들(110)을 선택한다.
지역 클러스터(410)와 연관된 지역 마스터들(510)이 선택되면, 지역 마스터들(510)은, 제어 애플리케이션(317)으로부터 수신된 명령들에 기초하여, 도 5a에 도시된 바와 같이, 채우기 소스(130)로부터 파일(218)을 즉시 페치한다(515). 설명의 명료성을 위해, 도 5a에 도시된 각 지역 클러스터(410)에는 하나의 지역 마스터(510)만이 도시되어 있다. 그러나, 1보다 큰 RF를 갖는 실시예들에서는, 다수의 지역 마스터들(510)이 특정 파일(218)에 대해 선택되고, 채우기 소스(130)로부터 파일(218)을 즉시 페치할 수 있다.
다음으로, 제어 애플리케이션(317)은 특정 로컬 클러스터(420)에 위치한 콘텐츠 서버들(110)만을 포함하도록 해시 데이터 구조를 필터링한다. 그 후 제어 애플리케이션(317)은 필터링된 해시 데이터 구조에 포함된 하나 이상의 다음 콘텐츠 서버(110)를 로컬 클러스터(420)에 대한 로컬 마스터들(520)이 되도록 선택한다. 예를 들어, 도 5b를 참조하면, 로컬 클러스터(420-1)에 대한 하나 이상의 로컬 마스터(520)를 결정할 때, 제어 애플리케이션(317)은 로컬 클러스터(420-1)에 포함되지 않은 모든 콘텐츠 서버들(110)을 배제하도록 해시 데이터 구조를 필터링할 것이다. 그 후, 제어 애플리케이션(317)은, 해시 값에 의해, 필터링된 해시 데이터 구조 내에 남아 있는 다음 콘텐츠 서버(110)를 로컬 클러스터(420-1)에 대한 로컬 마스터(520)가 되도록 선택한다. 또한, 1보다 큰 RF가 파일(218)에 대해 및/또는 로컬 마스터(520) 계층에 대해 지정되면, 제어 애플리케이션(317)은 필터링된 해시 데이터 구조에 포함된 하나 이상의 다음 콘텐츠 서버(110)를 로컬 클러스터(420-1)에 대한 로컬 마스터들(520)이 되도록 선택한다. 그 후 제어 애플리케이션(317)은 지역 클러스터(410)에 포함된 각 로컬 클러스터(420)에 대해 이 프로세스를 반복한다.
로컬 마스터들(520)은, 도 5b에 도시된 바와 같이, 지역 마스터들(510)로부터 파일(218)을 페치한다(525). 제어 애플리케이션(317)은 또한 어떻게 그리고 언제 파일(218)이 페치될 수 있는지에 관한 명령들을 로컬 마스터들(520)에 제공한다. 일부 실시예들에서, 지역 마스터(들)(510)가 파일(218)에 대한 요청들로 압도되는 것을 방지하기 위해, 제어 애플리케이션(317)은 각 로컬 클러스터(420)와 연관된 로컬 마스터들(520)에게, 지역 마스터(들)(510)로부터 파일(218)을 페치(525)하기 전에 제1 미리 결정된 기간(예를 들어, 지역 마스터(들)(510)가 채우기 소스(130)로부터 파일(218)을 페치(515)한 후 1 내지 3 시간)을 대기하도록 지시한다. 또한, 제어 애플리케이션(317)은 로컬 마스터(520)에게, 제1 미리 결정된 기간보다 긴 제2 미리 결정된 기간(예를 들어, 지역 마스터(들)(510)가 채우기 소스(130)로부터 파일(218)을 페치(515)한 후 2 내지 4 시간) 후에만, 채우기 소스(130)와 같은, 더 비싼 소스로부터 파일(218)을 페치하도록 지시할 수 있다. 로컬 마스터(520)가 더 비싼 소스로부터 파일을 페치할 수 있는 제2 미리 결정된 기간을 구현하는 것은 대응하는 지역 마스터(510)와 연관된 네트워크 문제, 소프트웨어/하드웨어 장애 등으로 인한 긴 지연의 발생을 줄이는 것과 네트워크 비용을 감소시키는 것 사이에서 균형을 이룬다. 또한, 일부 실시예들에서, 로컬 마스터(520)는 상이한 지역 클러스터(410)와 연관된 지역 마스터(510)로부터 파일(218)을 페치할 수 있다.
선택 사항으로, 제어 애플리케이션(317)은 특정 매니페스트 클러스터(430)에 위치하는 콘텐츠 서버(110)만을 포함하도록 해시 데이터 구조를 다시 필터링할 수 있다. 그 후 제어 애플리케이션(317)은 필터링된 해시 데이터 구조에 포함된 하나 이상의 다음 콘텐츠 서버(110)를 매니페스트 클러스터(430)에 대한 매니페스트 마스터(530)가 되도록 선택한다. 예를 들어, 도 5c를 참조하면, 매니페스트 클러스터(430-1)에 대한 하나 이상의 매니페스트 마스터(530)를 결정할 때, 제어 애플리케이션(317)은 매니페스트 클러스터(430-1)에 포함되지 않은 모든 콘텐츠 서버(110)를 배제하도록 해시 데이터 구조를 필터링할 수 있다. 그 후, 제어 애플리케이션(317)은, 해시 값에 의해, 필터링된 해시 데이터 구조 내에 남아 있는 다음 콘텐츠 서버(110)를 매니페스트 클러스터(430-1)에 대한 매니페스트 마스터(530-3)가 되도록 선택한다. 또한, 1보다 큰 RF가 파일(218)에 대해 및/또는 로컬 마스터(530) 계층에 대해 지정되면, 제어 애플리케이션(317)은 필터링된 해시 데이터 구조에 포함된 하나 이상의 다음 콘텐츠 서버(110)를 매니페스트 클러스터(430-1)에 대한 매니페스트 마스터들(530)이 되도록 선택할 수 있다. 그 후 제어 애플리케이션(317)은 지역 클러스터(410)에 포함된 각 매니페스트 클러스터(430)에 대해 이 프로세스를 반복한다. 또한, 제어 애플리케이션(317)은 인프라 구조 네트워크(100)에 포함된 각 지역 클러스터(410)에 대해 지역 마스터들(510), 로컬 마스터들(520), 및 매니페스트 마스터들(530)을 결정하는 전체 프로세스를 반복한다.
매니페스트 마스터들(530)은, 도 5c에 도시된 바와 같이, 로컬 마스터들(520)로부터 파일(218)을 페치한다(535). 일부 실시예들에서, 로컬 마스터(들)(520)가 파일(218)에 대한 요청들로 압도되는 것을 방지하기 위해, 제어 애플리케이션(317)은 각 매니페스트 클러스터(430)와 연관된 매니페스트 마스터들(530)에게, 로컬 마스터(들)(520)로부터 파일(218)을 페치(515)하기 전에 제1 미리 결정된 기간(예를 들어, 로컬 마스터(들)(520)가 지역 마스터(들)(510)로부터 파일(218)을 페치(525)한 후 1 내지 3 시간)을 대기하도록 지시한다. 또한, 제어 애플리케이션(317)은 매니페스트 마스터(530)에게, 제2 미리 결정된 기간(예를 들어, 로컬 마스터(들)(520)가 지역 마스터(들)(510)로부터 파일(218)을 페치(525)한 후 2 내지 4 시간) 후에, 지역 마스터(들)(510)와 같은 더 비싼 소스로부터 파일(218)을 페치하도록 지시할 수 있다. 또한, 제어 애플리케이션(317)은 매니페스트 마스터(530)에게, 제3 미리 결정된 기간(예를 들어, 로컬 마스터(들)(520)가 지역 마스터(들)(510)로부터 파일(218)을 페치(525)한 후 4 내지 6 시간) 후에 채우기 소스(130)로부터 파일(218)을 페치하도록 지시할 수 있다.
특정 매니페스트 클러스터(430) 내의 매니페스트 마스터(530)가 파일(218)의 복사본을 수신하면, 매니페스트 클러스터(430)에 포함된 비-마스터들(540) 각각은 매니페스트 마스터(530)로부터 파일(218)을 페치할 수 있다. 유리하게도, 매니페스트 클러스터(430) 내에서 비-마스터들(540)과 매니페스트 마스터들(530) 사이의 페치는 전형적으로 임의의 제3자 네트워크 또는 저장 비용을 초래하지 않는다. 일부 실시예들에서, 제어 애플리케이션(317)은 비-마스터들(540)에게, 매니페스트 마스터(530)로부터 파일(218)을 페치하기 전에 선택 사항인 제1 미리 결정된 기간(예를 들어, 매니페스트 마스터(들)(530)가 로컬 마스터(들)(520)로부터 파일(218)을 페치(535)한 후 1 내지 3 시간)을 대기하도록 지시한다. 또한, 제어 애플리케이션(317)은 비-마스터들(540)에게, 로컬 마스터(들)(520), 지역 마스터(들)(510), 및 채우기 소스(130)와 같은 더 비싼 소스들로부터 파일(218)을 페치하기 전에 대기하도록 지시할 수 있다.
해시 데이터 구조에 순차적으로 위치하는 콘텐츠 서버들(110)이 다수의 인기 있는 파일들(218)을 수신하고, 결과적으로, 성능 저하를 겪는 "핫 이웃(hot neighbor)" 문제를 피하기 위해, 제어 애플리케이션(317)은 선택 사항으로 해시 데이터 구조를 생성하기 전에 각 서버 ID를 복수의 값과 조합한다. 예를 들어, 제어 애플리케이션(317)은 각 서버 ID를 고정된 범위의 1,000개의 상수와 조합할 수 있다. 그 후 제어 애플리케이션(317)은 각 조합에 대해 해싱 연산을 수행하여 각 콘텐츠 서버(110)에 대해 1,000개의 해시 값을 생성한다. 결과적으로, 각 콘텐츠 서버(110)가 해시 데이터 구조에서 여러 번 나타나서, 콘텐츠 서버들(110)의 동일한 서브세트가 다수의 인기 있는 파일(218)을 수신할 가능성을 크게 줄일 것이다. 아래에 예가 제공된다.
특정 예에서, 특정 지역 클러스터(410)가 20개의 콘텐츠 서버를 포함한다고 가정하자. 해시 데이터 구조(예를 들어, 해시 링)를 생성하기 위해, 제어 애플리케이션(317)은 20개의 서버 ID 각각을 고정된 범위의 상수들(예를 들어, 1 내지 1000)과 조합하고, 그 조합들 각각에 해싱 연산을 적용하고, 20,000개의 결과적인 해시 값을 분류하여 해시 링을 생성한다. 또한 콘텐츠 서버들(110)이 A 내지 T로 명명된 것으로 가정하면, 결과적인 해시 링은 다음의 해시 값들을 포함할 수 있다:
Figure pct00003
(해시 링은 처음으로 되돌아간다)
RF = 3이면, 제어 애플리케이션(317)은 파일(218)과 연관된 파일 ID에 대해 해싱 연산을 수행하고 해시 링에서 마주치는 처음 3개의 콘텐츠 서버(110)를 선택한다. 예를 들어, 파일 ID에 대해 해싱 연산을 수행한 결과 해시 값이 00015500이 된다고 가정하면, 제어 애플리케이션(317)은 Q를 주 콘텐츠 서버(110)로 선택할 것이고(00015577이 00015500 이후에 마주치는 첫 번째 콘텐츠 서버(110)이므로), R 및 L을 복제 콘텐츠 서버들(110)로서 선택할 것이다.
도 6a 및 도 6b는 본 발명의 다양한 실시예들에 따른, 지리적으로 분산된 콘텐츠 서버들(110)에 걸쳐 파일(218)을 복제하는 방법 단계들의 흐름도를 도시한다. 이 방법 단계들은 도 1 내지 도 5c의 시스템들과 관련하여 설명되지만, 본 기술분야의 기술자들은 방법 단계들을 임의의 순서로 수행하도록 구성된 임의의 시스템이 본 발명의 범위 내에 있다는 것을 이해할 것이다.
도 6a에 도시된 바와 같이, 방법(600)은 단계 605에서 시작되고, 여기서 제어 애플리케이션(317)은, 콘텐츠 서버들(110)의 특정 지역 클러스터(410)에 포함된 콘텐츠 서버들(110) 각각과 연관된 서버 식별자들(ID들)에 대해 제1 해싱 연산을 수행함으로써, 해시 링 또는 해시 테이블과 같은 해시 데이터 구조를 생성한다. 단계 610에서, 제어 애플리케이션(317)은 파일(218)과 연관된 파일 ID에 기초하여 제2 해싱 연산을 수행함으로써 해시 값을 생성한다. 일부 실시예들에서, 제1 해싱 연산 및 제2 해싱 연산은 동일하다(예를 들어, MD5 해싱 연산). 그러나, 다양한 실시예들에서, 제1 해싱 연산 및 제2 해싱 연산은 상이한 연산들을 포함할 수 있다. 또한, 일부 실시예들에서, 제1 해싱 연산 및/또는 제2 해싱 연산은 서버 ID들 및/또는 파일 ID들을 수정하는 하나 이상의 변환을 포함할 수 있다.
단계 615에서, 제어 애플리케이션(317)은 제1 해시 값을 해시 데이터 구조와 비교함으로써 지역 클러스터(410)에 포함된 하나 이상의 지역 마스터(510)를 결정한다. 다양한 실시예들에서, 하나 이상의 지역 마스터(510)는 지역 클러스터(410)에 포함된 콘텐츠 서버들(110)의 서브세트로 구성된다. 그 후, 단계 620에서, 제어 애플리케이션(317)은 각 지역 마스터(510)로 하여금 채우기 소스(130)로부터 파일(218)을 페치하게 한다. 예를 들어, 제어 애플리케이션(317)은 지역 마스터(510)로부터 수신된 JSON 어레이에 응답하여 각 지역 마스터(510)에 명령들을 발행하고 파일 ID를 지정함으로써 지역 마스터(510)로 하여금 파일(218)을 페치하게 할 수 있다.
다음으로, 단계 625에서, 제어 애플리케이션(317)은 지역 클러스터(410)에 포함된 콘텐츠 서버들(110)의 로컬 클러스터(420)를 선택한다. 단계 630에서, 제어 애플리케이션(317)은 해시 데이터 구조를 필터링하여, 파일 ID에 대해 생성된 해시 값에 기초하여, 로컬 클러스터(420)에 포함된 하나 이상의 로컬 마스터(520)를 결정한다. 다양한 실시예들에서, 하나 이상의 로컬 마스터(520)는 로컬 클러스터(420)에 포함된 콘텐츠 서버들(110)의 서브세트로 구성된다. 그 후 단계 635에서, 제어 애플리케이션(317)은 각 로컬 마스터(520)로 하여금 지역 마스터(510)로부터 파일(218)을 페치하기 전에 미리 결정된 기간을 대기하게 한다. 일부 실시예들에서, 로컬 마스터(520)가 지역 마스터(510)로부터 파일(218)을 페치하기 전에 대기해야 하는 미리 결정된 시간은 각 로컬 마스터(520)에 대해 동일하지만, 다른 실시예들에서, 미리 결정된 시간은 로컬 마스터들(520)에 걸쳐 다를 수 있다.
단계 640에서, 제어 애플리케이션(317)은 추가 로컬 클러스터(420)에 대해 하나 이상의 로컬 마스터(520)가 결정될 필요가 있는지를 결정한다. 제어 애플리케이션(317)이 추가 로컬 클러스터(420)에 대해 하나 이상의 로컬 마스터(520)가 결정될 필요가 있다고 결정하면, 방법(600)은 전술한 단계 625로 되돌아간다. 제어 애플리케이션(317)이 추가 로컬 클러스터(420)에 대해 로컬 마스터(들)(520)가 결정될 필요가 없다고 결정하면, 방법(600)은 도 6b에 도시된 단계 645로 진행하고, 여기서 제어 애플리케이션(317)은 콘텐츠 서버들(110)의 매니페스트 클러스터(430)를 선택한다.
단계 650에서, 제어 애플리케이션(317)은 해시 데이터 구조를 필터링하여, 해시 값에 기초하여, 매니페스트 클러스터(430)에 포함된 하나 이상의 매니페스트 마스터(530)를 결정한다. 다양한 실시예들에서, 하나 이상의 매니페스트 마스터(530)는 매니페스트 클러스터(430)에 포함된 콘텐츠 서버들(110)의 서브세트로 구성된다.
서버 ID들 및 파일 ID에 기초하여 지역 마스터(들)(510), 로컬 마스터(들)(520), 및 매니페스트 마스터(들)(530)가 결정되기 때문에, 서버 ID들 및 파일 ID의 레코드를 갖는 임의의 콘텐츠 서버(110)에 의해, 인프라 구조 네트워크(100)에서 파일(218)이 복제된 위치들뿐만 아니라, 각 위치로부터 파일(218)이 페치될 수 있는 시간들이 결정될 수 있다. 따라서, 제어 서버(217)와 같은 엔티티가 마스터 인덱스를 유지할 것을 요구하지 않고, 분산된, 높은 결함 허용 방식으로 파일(들)(218)이 인프라 구조 네트워크(100)를 통해 복제될 수 있다.
단계 655에서, 제어 애플리케이션(317)은 각 매니페스트 마스터(530)로 하여금 로컬 마스터(520)로부터 파일(218)을 페치하기 전에 미리 결정된 기간을 대기하게 한다. 일부 실시예들에서, 매니페스트 마스터(530)가 로컬 마스터(520)로부터 파일(218)을 페치하기 전에 대기해야 하는 미리 결정된 시간은 각 매니페스트 마스터(530)에 대해 동일하지만, 다른 실시예들에서, 미리 결정된 시간은 매니페스트 마스터들(530)에 걸쳐 다를 수 있다.
단계 660에서, 제어 애플리케이션(317)은 추가 매니페스트 클러스터(430)에 대해 하나 이상의 매니페스트 마스터(530)가 결정될 필요가 있는지를 결정한다. 제어 애플리케이션(317)이 추가 매니페스트 클러스터(430)에 대해 하나 이상의 매니페스트 마스터(530)가 결정될 필요가 있다고 결정하면, 방법(600)은 전술한 단계 645로 되돌아간다. 제어 애플리케이션(317)이 추가 매니페스트 클러스터(430)에 대해 매니페스트 마스터(들)(530)가 결정될 필요가 없다고 결정하면, 방법(600)은 단계 665로 진행하고, 여기서 제어 애플리케이션(317)은 각 비-마스터 서버(540)로 하여금 매니페스트 마스터(530)로부터 파일(218)을 페치하기 전에 미리 결정된 기간을 대기하게 한다. 일부 실시예들에서, 비-마스터 서버(540)가 매니페스트 마스터(530)로부터 파일(218)을 페치하기 전에 대기해야 하는 미리 결정된 시간은 각 비-마스터 서버(540)에 대해 동일하지만, 다른 실시예들에서, 미리 결정된 시간은 비-마스터 서버들(540)에 걸쳐 다를 수 있다.
단계 670에서, 제어 애플리케이션(317)은 추가 파일(218)에 대해 지역 마스터(들)(510), 로컬 마스터(들)(520), 및/또는 매니페스트 마스터(들)(530)가 결정될 필요가 있는지를 결정한다. 제어 애플리케이션(317)이 추가 파일(218)에 대해 지역 마스터(들)(510), 로컬 마스터(들)(520), 및/또는 매니페스트 마스터(들)(530)가 결정될 필요가 있다고 결정하면, 방법(600)은 단계 610으로 되돌아간다. 제어 애플리케이션(317)이 추가 파일(218)에 대해 지역 마스터(들)(510), 로컬 마스터(들)(520), 및/또는 매니페스트 마스터(들)(530)가 결정될 필요가 없다고 결정하면, 방법(600)은 종료한다.
요약하면, 제어 애플리케이션은 복수의 서버 ID에 대해 해싱 연산을 수행하여 해시 데이터 구조를 생성한다. 그 후 제어 애플리케이션은 파일 ID에 대해 해싱 연산을 수행하고 해시 값을 해시 데이터 구조와 비교하여 하나 이상의 지역 마스터를 선택한다. 그 후 파일이 복제될 로컬 마스터(들) 및 매니페스트 마스터(들)를 각각 결정하기 위해 각 로컬 클러스터 및 매니페스트 클러스터에 대해 해시 데이터 구조가 필터링된다. 제어 애플리케이션은 또한 파일이 인프라 구조 네트워크를 통해 복제되는 속도를 제어하기 위해 각 로컬 마스터 계층, 매니페스트 마스터 계층, 및 비-마스터 계층에 미리 결정된 지연을 할당한다.
개시된 기법들의 적어도 하나의 이점은 엔티티가 마스터 인덱스를 유지할 것을 요구하지 않고, 콘텐츠 서버들의 특정 계층들을 통해 예측 가능한, 분산된, 높은 결함 허용 방식으로 각 파일이 네트워크에 걸쳐 복제될 수 있다는 점이다. 또한, 파일이 복제되는 각 계층에 포함된 콘텐츠 서버의 수는, 예를 들어, 파일의 인기 및 그에 대한 수요에 기초하여, 계층마다 또는 파일마다 복제 팩터를 지정함으로써 제어될 수 있다. 또한, 하위 계층들이 상위 계층들에 포함된 콘텐츠 서버들을 플러딩하는 것을 방지하기 위해 각 계층에 미리 결정된 지연을 할당하여, 서버 부하 변동의 심각성을 줄일 수 있다. 더욱이, 각 계층에 포함된 콘텐츠 서버들은 파일과 연관된 식별자에 기초하여 결정되기 때문에, 각 파일은 상이한 일련의 콘텐츠 서버들을 통해 네트워크 인프라 구조를 통해 전파될 수 있다. 결과적으로, 네트워크 및 처리 부하들이 콘텐츠 서버들 간에 더 고르게 분산되어, 콘텐츠 서버들을 통해 웹 기반 애플리케이션들에 액세스하는 사용자들에게 제공되는 전반적인 서비스 품질이 향상된다.
다양한 실시예들에 대한 설명은 예시의 목적으로 제시되었지만, 포괄적이거나 개시된 실시예들로 한정되는 것을 의도하지 않는다. 설명된 실시예들의 범위 및 사상을 벗어나지 않고 본 기술분야의 통상의 기술자에게 많은 변경 및 변화가 명백할 것이다.
본 실시예들의 양태들은 시스템, 방법 또는 컴퓨터 프로그램 제품으로서 구현될 수 있다. 따라서, 본 개시의 양태들은 전적으로 하드웨어 실시예, 전적으로 소프트웨어 실시예(펌웨어, 상주 소프트웨어, 마이크로코드 등을 포함함) 또는 본 명세서에서 모두 일반적으로 "회로", "모듈" 또는 "시스템"으로 지칭될 수 있는 소프트웨어 및 하드웨어 양태들을 결합한 실시예의 형태를 취할 수 있다. 또한, 본 개시의 양태들은 컴퓨터 판독 가능 프로그램 코드가 구현된 하나 이상의 컴퓨터 판독 가능 매체(들)에 구현된 컴퓨터 프로그램 제품의 형태를 취할 수 있다.
하나 이상의 컴퓨터 판독 가능 매체(들)의 임의의 조합이 이용될 수 있다. 컴퓨터 판독 가능 매체는 컴퓨터 판독 가능 신호 매체 또는 컴퓨터 판독 가능 저장 매체일 수 있다. 컴퓨터 판독 가능 저장 매체는 예를 들어 전자, 자기, 광학, 전자기, 적외선 또는 반도체 시스템, 장치 또는 디바이스, 또는 전술한 것들의 임의의 적절한 조합일 수 있지만, 이에 한정되는 것은 아니다. 컴퓨터 판독 가능 저장 매체의 보다 구체적인 예들(비포괄적인 리스트)은 하나 이상의 와이어를 갖는 전기적 접속, 휴대용 컴퓨터 디스켓, 하드 디스크, 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 소거 및 프로그래밍 가능 판독 전용 메모리(EPROM 또는 플래시 메모리), 광섬유, 휴대용 컴팩트 디스크 판독 전용 메모리(CD-ROM), 광학 저장 디바이스, 자기 저장 디바이스 또는 전술한 것들의 임의의 적절한 조합을 포함할 것이다. 이 문헌과 관련하여, 컴퓨터 판독 가능 저장 매체는 명령어 실행 시스템, 장치 또는 디바이스에 의해 또는 그와 관련하여 사용하기 위한 프로그램을 포함하거나 저장할 수 있는 임의의 유형적인 매체일 수 있다.
본 개시의 양태들은 본 개시의 실시예들에 따른 방법들, 장치들(시스템들) 및 컴퓨터 프로그램 제품들의 흐름도들 및/또는 블록도들을 참조하여 위에서 설명되었다. 흐름도들 및/또는 블록도들의 각각의 블록, 및 흐름도들 및/또는 블록도들 내의 블록들의 조합들은 컴퓨터 프로그램 명령어들에 의해 구현될 수 있다는 것을 이해할 것이다. 이들 컴퓨터 프로그램 명령어는 범용 컴퓨터, 특수 목적 컴퓨터 또는 다른 프로그래밍 가능 데이터 처리 장치의 프로세서에 제공되어 머신을 생성할 수 있으며, 따라서 컴퓨터 또는 다른 프로그래밍 가능 데이터 처리 장치의 프로세서를 통해 실행되는 명령어들은 흐름도 및/또는 블록도 블록 또는 블록들에서 지정된 기능들/동작들의 구현을 가능하게 한다. 그러한 프로세서들은 범용 프로세서, 특수 목적 프로세서, 주문형 프로세서 또는 필드 프로그래머블 프로세서일 수 있지만 이에 한정되지 않는다.
도면들 내의 흐름도 및 블록도들은 본 개시의 다양한 실시예들에 따른 시스템들, 방법들 및 컴퓨터 프로그램 제품들의 가능한 구현들의 아키텍처, 기능 및 동작을 도시한다. 이와 관련하여, 흐름도 또는 블록도들 내의 각각의 블록은 지정된 논리적 기능(들)을 구현하기 위한 하나 이상의 실행 가능 명령어를 포함하는 모듈, 세그먼트 또는 코드 부분을 나타낼 수 있다. 또한, 일부 대안 구현들에서, 블록에서 언급된 기능들은 도면들에서 언급된 순서와 다르게 발생할 수 있음에 유의해야 한다. 예를 들어, 연속적으로 도시된 2개의 블록은 사실상 실질적으로 동시에 실행될 수 있거나, 블록들은 관련된 기능에 따라 때때로 역순으로 실행될 수 있다. 또한, 블록도들 및/또는 흐름도의 각각의 블록, 및 블록도들 및/또는 흐름도의 블록들의 조합들은 지정된 기능들 또는 동작들을 수행하는 특수 목적 하드웨어 기반 시스템, 또는 특수 목적 하드웨어 및 컴퓨터 명령어들의 조합들에 의해 구현될 수 있다는 점에 유의할 것이다.
본 발명은 위에서 특정 실시예들을 참조하여 설명되었다. 그러나, 본 기술분야의 통상의 기술자들은 첨부된 청구항들에 제시된 본 발명의 더 넓은 사상 및 범위를 벗어나지 않고 다양한 수정들 및 변경들이 이루어질 수 있다는 점을 이해할 것이다. 예를 들어, 그리고 제한 없이, 본 명세서의 설명들 중 다수는 특정 유형의 파일들, 해싱 연산들, 및 서버 계층들을 언급하지만, 본 기술분야의 기술자들은 본 명세서에 기술된 시스템들 및 기법들이 다른 유형의 데이터 파일들, 알고리즘들, 및 계층 계층 구조들에 적용 가능하다는 것을 알 것이다. 따라서, 전술한 설명 및 도면들은 제한적인 것보다는 예시적인 의미로 간주되어야 한다.
전술한 내용은 본 개시의 실시예들에 관한 것이지만, 본 개시의 다른 실시예들 및 추가 실시예들은 본 발명의 기본 범위를 벗어나지 않고 고안될 수 있으며, 그 범위는 다음의 청구범위에 의해 결정된다.

Claims (20)

  1. 방법으로서,
    서버들의 지역 클러스터(regional cluster)에 포함된 하나 이상의 지역 마스터 서버를 결정하는 단계;
    각 지역 마스터 서버로 하여금 채우기 소스(fill source)로부터 파일을 검색하게 하는 단계; 및
    상기 서버들의 지역 클러스터에 포함된 서버들의 적어도 하나의 로컬 클러스터에 대해:
    상기 서버들의 적어도 하나의 로컬 클러스터에 포함된 하나 이상의 로컬 마스터 서버를 결정하는 단계; 및
    각 로컬 마스터 서버로 하여금 상기 하나 이상의 지역 마스터 서버 중 하나로부터 상기 파일을 검색하게 하는 단계를 포함하는, 방법.
  2. 제1항에 있어서, 상기 서버들의 적어도 하나의 로컬 클러스터에 포함된 서버들의 각 매니페스트(manifest) 클러스터에 대해:
    상기 서버들의 매니페스트 클러스터에 포함된 하나 이상의 매니페스트 마스터 서버를 결정하는 단계; 및
    각 매니페스트 마스터로 하여금 상기 서버들의 로컬 클러스터와 연관된 로컬 마스터 서버로부터 상기 파일을 검색하게 하는 단계를 더 포함하는, 방법.
  3. 제2항에 있어서, 적어도 하나의 로컬 마스터 서버로 하여금 상기 하나 이상의 지역 마스터 서버 중 하나로부터 상기 파일을 검색하기 전에 제1 미리 결정된 기간을 대기하게 하고, 적어도 하나의 매니페스트 마스터 서버로 하여금 상기 적어도 하나의 로컬 마스터 서버로부터 상기 파일을 검색하기 전에 제2 미리 결정된 기간을 대기하게 하는 단계를 더 포함하는, 방법.
  4. 제1항에 있어서,
    복수의 서버 식별자(ID)에 기초하여 제1 해싱(hashing) 연산을 수행하여 해시 데이터 구조를 생성하는 단계 - 상기 복수의 서버 ID에 포함된 각각의 서버 ID는 상기 서버들의 지역 클러스터에 포함된 상이한 서버와 연관됨 -; 및
    상기 파일과 연관된 파일 ID에 기초하여 제2 해싱 연산을 수행하여 제1 해시 값을 생성하는 단계를 더 포함하고,
    상기 하나 이상의 지역 마스터 서버를 결정하는 단계는 상기 제1 해시 값을 상기 해시 데이터 구조와 비교하는 단계를 포함하는, 방법.
  5. 제4항에 있어서, 상기 하나 이상의 로컬 마스터 서버를 결정하는 단계는 상기 제1 해시 값에 기초하여 상기 해시 데이터 구조에 대해 필터링 연산을 수행하는 단계를 포함하는, 방법.
  6. 제5항에 있어서, 상기 서버들의 적어도 하나의 로컬 클러스터에 포함된 서버들의 각 매니페스트 클러스터에 대해:
    상기 제1 해시 값에 기초하여 상기 해시 데이터 구조를 필터링하여 상기 서버들의 매니페스트 클러스터에 포함된 하나 이상의 매니페스트 마스터 서버를 결정하는 단계; 및
    각 매니페스트 마스터로 하여금 상기 서버들의 로컬 클러스터와 연관된 로컬 마스터 서버로부터 상기 파일을 검색하게 하는 단계를 더 포함하는, 방법.
  7. 제4항에 있어서, 상기 해시 데이터 구조는 해시 링을 포함하고, 상기 제1 해싱 연산 및 상기 제2 해싱 연산은 일관된 해싱 연산들을 포함하는, 방법.
  8. 제4항에 있어서, 상기 제1 해싱 연산을 수행하는 단계는, 각 서버 ID에 대해:
    상기 서버 ID를 복수의 상이한 값과 결합하여 복수의 상이한 서버 ID 인스턴스를 생성하는 단계;
    상기 복수의 서버 ID 인스턴스 각각에 대해 상기 제1 해싱 연산을 수행하여 복수의 해시 데이터 구조 값을 생성하는 단계; 및
    상기 복수의 해시 데이터 구조 값을 상기 해시 데이터 구조에 저장하는 단계를 포함하는, 방법.
  9. 제1항에 있어서, 지역 마스터 서버들의 수 및 로컬 마스터 서버들의 수는 상기 파일과 연관된 적어도 하나의 복제 팩터에 기초하는, 방법.
  10. 제어 서버로서,
    제어 애플리케이션을 저장하는 메모리; 및
    상기 메모리에 결합된 프로세서를 포함하고, 상기 프로세서에 의해 실행될 때, 상기 제어 애플리케이션은:
    서버들의 지역 클러스터에 포함된 제1 복수의 지역 마스터 서버를 결정하고;
    각 지역 마스터 서버로 하여금 채우기 소스로부터 파일을 검색하게 하고;
    상기 서버들의 지역 클러스터에 포함된 서버들의 적어도 하나의 로컬 클러스터에 대해:
    상기 서버들의 적어도 하나의 로컬 클러스터에 포함된 하나 이상의 로컬 마스터 서버를 결정하고;
    각 로컬 마스터 서버로 하여금 상기 제1 복수의 지역 마스터 서버 중 하나로부터 상기 파일을 검색하게 하도록
    상기 프로세서를 구성하는, 제어 서버.
  11. 제10항에 있어서, 상기 제어 애플리케이션은, 상기 서버들의 적어도 하나의 로컬 클러스터에 포함된 서버들의 각 매니페스트 클러스터에 대해:
    상기 서버들의 매니페스트 클러스터에 포함된 하나 이상의 매니페스트 마스터 서버를 결정하고;
    각 매니페스트 마스터로 하여금 상기 서버들의 로컬 클러스터와 연관된 로컬 마스터 서버로부터 상기 파일을 검색하게 하도록
    상기 프로세서를 더 구성하는, 제어 서버.
  12. 제11항에 있어서, 상기 제어 애플리케이션은, 적어도 하나의 로컬 마스터 서버로 하여금 상기 제1 복수의 지역 마스터 서버 중 하나로부터 상기 파일을 검색하기 전에 제1 미리 결정된 기간을 대기하게 하고, 적어도 하나의 매니페스트 마스터 서버로 하여금 상기 적어도 하나의 로컬 마스터 서버로부터 상기 파일을 검색하기 전에 제2 미리 결정된 기간을 대기하게 하도록 상기 프로세서를 더 구성하는, 제어 서버.
  13. 제10항에 있어서, 상기 제어 애플리케이션은:
    복수의 서버 식별자(ID)에 기초하여 제1 해싱 연산을 수행하여 해시 데이터 구조를 생성하고 - 상기 복수의 서버 ID에 포함된 각각의 서버 ID는 상기 서버들의 지역 클러스터에 포함된 상이한 서버와 연관됨 -;
    상기 파일과 연관된 파일 ID에 기초하여 제2 해싱 연산을 수행하여 제1 해시 값을 생성하도록
    상기 프로세서를 더 구성하고,
    상기 프로세서는 상기 제1 해시 값을 상기 해시 데이터 구조와 비교함으로써 상기 제1 복수의 지역 마스터 서버를 결정하도록 구성되는, 제어 서버.
  14. 제13항에 있어서, 상기 제어 애플리케이션은:
    제2 파일과 연관된 제2 파일 ID에 기초하여 제3 해싱 연산을 수행하여 제2 해시 값을 생성하고;
    상기 제2 해시 값을 상기 해시 데이터 구조와 비교하여 상기 서버들의 지역 클러스터에 포함된 제2 복수의 지역 마스터 서버를 결정하고 - 상기 제2 복수의 지역 마스터 서버는 상기 제1 복수의 지역 마스터 서버에 포함되지 않는 적어도 하나의 서버를 포함함 -;
    각 지역 마스터 서버로 하여금 상기 채우기 소스로부터 상기 제2 파일을 검색하게 하고;
    상기 서버들의 지역 클러스터에 포함된 상기 서버들의 적어도 하나의 로컬 클러스터에 대해:
    상기 제2 해시 값에 기초하여 상기 해시 데이터 구조에 대해 필터링 연산을 수행하여 상기 서버들의 로컬 클러스터에 포함된 복수의 로컬 마스터 서버를 결정하고 - 상기 복수의 로컬 마스터 서버는 상기 하나 이상의 로컬 마스터 서버에 포함되지 않은 적어도 하나의 서버를 포함함 -;
    각 로컬 마스터 서버로 하여금 상기 제2 복수의 지역 마스터 서버 중 하나로부터 상기 제2 파일을 검색하게 하도록
    상기 프로세서를 더 구성하는, 제어 서버.
  15. 제13항에 있어서, 상기 제어 애플리케이션은, 상기 서버들의 지역 클러스터에 포함된 서버로부터 파일 ID들의 어레이를 수신하는 것에 응답하여 상기 제1 해싱 연산을 수행하고 상기 제1 해시 값을 상기 해시 데이터 구조와 비교하도록 상기 프로세서를 구성하는, 제어 서버.
  16. 제15항에 있어서, 상기 파일 ID들의 어레이는 서버로부터 수신된 JSON(JavaScript Object Notation) 객체에 포함되는, 제어 서버.
  17. 제13항에 있어서, 상기 제어 애플리케이션은, 상기 서버들의 적어도 하나의 로컬 클러스터에 포함된 서버들의 각 로컬 클러스터에 대해:
    상기 해시 데이터 구조로부터 상기 서버들의 로컬 클러스터에 포함되지 않은 모든 서버들을 제외시키는 것; 및
    상기 하나 이상의 로컬 마스터 서버를 선택하기 위해 상기 제1 해시 값에 가장 가까운 해시 값들을 갖는 상기 해시 데이터 구조에 남아 있는 하나 이상의 서버를 결정하는 것
    에 의해 상기 하나 이상의 로컬 마스터 서버를 결정하도록 상기 프로세서를 구성하는, 제어 서버.
  18. 제10항에 있어서, 상기 제1 복수의 지역 마스터 서버에 포함된 제1 수의 서버들(a first number of servers)은 지역 마스터 서버 계층과 연관된 제1 복제 팩터에 기초하고, 상기 하나 이상의 로컬 마스터 서버에 포함된 제2 수의 서버들은 로컬 마스터 서버 계층과 연관된 제2 복제 팩터에 기초하는, 제어 서버.
  19. 명령들을 포함하는 비일시적 컴퓨터 판독 가능 저장 매체로서, 상기 명령들은 프로세서에 의해 실행될 때, 상기 프로세서로 하여금:
    복수의 서버 식별자(ID)에 기초하여 제1 해싱 연산을 수행하여 해시 링을 생성하는 단계 - 상기 복수의 서버 ID에 포함된 각각의 서버 ID는 서버들의 지역 클러스터에 포함된 상이한 서버와 연관됨 -;
    파일과 연관된 파일 ID에 기초하여 제2 해싱 연산을 수행하여 제1 해시 값을 생성하는 단계;
    상기 서버들의 지역 클러스터에 포함된 하나 이상의 지역 마스터 서버를 선택하기 위해 상기 해시 링 상에서 상기 제1 해시 값에 가장 가까운 하나 이상의 해시 값을 결정하는 단계;
    각 지역 마스터 서버로 하여금 채우기 소스로부터 상기 파일을 검색하게 하는 단계; 및
    상기 서버들의 지역 클러스터에 포함된 서버들의 복수의 로컬 클러스터 각각에 대해:
    상기 제1 해시 값에 기초하여 상기 해시 링에 대해 필터링 연산을 수행하여 상기 서버들의 로컬 클러스터에 포함된 하나 이상의 로컬 마스터 서버를 결정하는 단계; 및
    각 로컬 마스터 서버로 하여금 상기 하나 이상의 지역 마스터 서버 중 하나로부터 상기 파일을 검색하게 하는 단계
    를 수행하게 하는, 비일시적 컴퓨터 판독 가능 저장 매체.
  20. 제19항에 있어서, 상기 해시 링에 대해 상기 필터링 연산을 수행하는 단계는, 서버들의 각 로컬 클러스터에 대해:
    상기 해시 링으로부터 상기 서버들의 로컬 클러스터에 포함되지 않은 모든 서버들을 제외시키는 단계; 및
    상기 하나 이상의 로컬 마스터 서버를 선택하기 위해 상기 제1 해시 값에 가장 가까운 해시 값들을 갖는 상기 해시 링에 남아 있는 하나 이상의 서버를 결정하는 단계를 포함하는, 비일시적 컴퓨터 판독 가능 저장 매체.
KR1020177034257A 2015-04-30 2016-04-28 계층화된 캐시 채우기 KR102031476B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201562155430P 2015-04-30 2015-04-30
US62/155,430 2015-04-30
US15/067,099 US11010341B2 (en) 2015-04-30 2016-03-10 Tiered cache filling
US15/067,099 2016-03-10
PCT/US2016/029872 WO2016176499A1 (en) 2015-04-30 2016-04-28 Tiered cache filling

Publications (2)

Publication Number Publication Date
KR20170139671A true KR20170139671A (ko) 2017-12-19
KR102031476B1 KR102031476B1 (ko) 2019-10-11

Family

ID=56024386

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020177034257A KR102031476B1 (ko) 2015-04-30 2016-04-28 계층화된 캐시 채우기

Country Status (11)

Country Link
US (2) US11010341B2 (ko)
EP (1) EP3289490B1 (ko)
JP (1) JP6564471B2 (ko)
KR (1) KR102031476B1 (ko)
CN (1) CN107810501B (ko)
AU (2) AU2016255442B2 (ko)
CA (1) CA2984312C (ko)
DK (1) DK3289490T3 (ko)
MX (1) MX2017013857A (ko)
SG (1) SG11201708828UA (ko)
WO (1) WO2016176499A1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6620788B2 (ja) * 2017-06-15 2019-12-18 富士通クライアントコンピューティング株式会社 データ提供システム、情報処理方法および情報処理プログラム
US11947516B1 (en) * 2018-02-22 2024-04-02 Amazon Technologies, Inc. Multi-tier definition management for distributed data stores
US10880360B2 (en) * 2019-04-05 2020-12-29 International Business Machines Corporation File transmission in a cluster
CN110830564B (zh) * 2019-10-30 2022-11-01 北京金山云网络技术有限公司 Cdn调度方法、装置、系统及计算机可读存储介质
CN112015561A (zh) * 2020-09-16 2020-12-01 支付宝(杭州)信息技术有限公司 用于流式计算服务的方法、装置和系统

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070276838A1 (en) * 2006-05-23 2007-11-29 Samy Khalil Abushanab Distributed storage
US20080065704A1 (en) * 2006-09-12 2008-03-13 Microsoft Corporation Data and replica placement using r-out-of-k hash functions
KR20140032064A (ko) * 2012-09-05 2014-03-14 에스케이텔레콤 주식회사 컨텐츠 전송 서비스 방법, 이를 위한 캐시 장치
US20140188825A1 (en) * 2012-12-31 2014-07-03 Kannan Muthukkaruppan Placement policy
KR20150011087A (ko) * 2013-07-22 2015-01-30 에스케이텔레콤 주식회사 컨텐츠 전송 서비스를 위한 분산 캐싱 관리 방법 및 이를 위한 중앙 관리 장치

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9372870B1 (en) * 2003-01-21 2016-06-21 Peer Fusion, Inc. Peer to peer code generator and decoder for digital systems and cluster storage system
JP2005031987A (ja) 2003-07-14 2005-02-03 Nec Corp コンテンツ配信システムにおけるコンテンツ配置管理システム及びコンテンツ配置管理プログラム
KR101099145B1 (ko) * 2005-04-22 2011-12-27 톰슨 라이센싱 계층적 콘텐츠의 네트워크 캐싱
JP2008035337A (ja) 2006-07-31 2008-02-14 Brother Ind Ltd ノード装置、配信装置、管理装置、情報処理プログラム、コンテンツ配信方法及びコンテンツ配信システム
JP4830889B2 (ja) 2007-02-15 2011-12-07 ブラザー工業株式会社 情報配信システム、情報配信方法及びノード装置等
US20080301125A1 (en) * 2007-05-29 2008-12-04 Bea Systems, Inc. Event processing query language including an output clause
US8108933B2 (en) * 2008-10-21 2012-01-31 Lookout, Inc. System and method for attack and malware prevention
JP5233799B2 (ja) 2009-03-31 2013-07-10 ブラザー工業株式会社 コンテンツ配信システム、ノード装置、コンテンツ配信方法及びコンテンツ取得処理プログラム
US8332463B2 (en) 2009-05-27 2012-12-11 Brother Kogyo Kabushiki Kaisha Distributed storage system, connection information notifying method, and recording medium in which distributed storage program is recorded
JP2011118593A (ja) 2009-12-02 2011-06-16 Nec Corp データ転送サーバ、データ転送システム、データ転送方法およびプログラム
US20110191447A1 (en) * 2010-01-29 2011-08-04 Clarendon Foundation, Inc. Content distribution system
US9355109B2 (en) 2010-06-11 2016-05-31 The Research Foundation For The State University Of New York Multi-tier caching
US11195057B2 (en) * 2014-03-18 2021-12-07 Z Advanced Computing, Inc. System and method for extremely efficient image and pattern recognition and artificial intelligence platform
KR101326242B1 (ko) * 2012-01-20 2013-11-11 양재상 건물 바닥의 단열방수공법
CN102855294B (zh) 2012-08-13 2016-12-21 北京联创信安科技股份有限公司 一种智能哈希数据布局方法、集群存储系统及其方法
EP3089455B1 (en) * 2013-04-06 2021-03-10 Grass Valley Canada Systems and methods for media distribution and management
US9495420B2 (en) * 2013-05-22 2016-11-15 International Business Machines Corporation Distributed feature collection and correlation engine
US10255188B2 (en) * 2014-03-17 2019-04-09 Vmware, Inc. Migrating workloads across host computing systems based on cache content usage characteristics
KR102394959B1 (ko) * 2014-06-13 2022-05-09 삼성전자주식회사 멀티미디어 데이터를 관리하는 방법 및 장치
CN104065568B (zh) 2014-07-07 2017-01-18 电子科技大学 一种Web服务器集群的路由方法
EP3432508B1 (en) * 2016-04-19 2021-05-26 Telefonica Cibersecurity & Cloud Tech S.L.U. Computer-implemented method for generating passwords and computer program products of same
EP3494686B1 (en) * 2016-08-05 2020-12-30 Telefonaktiebolaget LM Ericsson (publ) Transport protocol server relocation
JP6973472B2 (ja) * 2017-02-24 2021-12-01 日本ゼオン株式会社 変性重合体ラテックスの製造方法
US20190230156A1 (en) * 2018-01-19 2019-07-25 Nutanix, Inc. System and method of managing cloud resources and services across two or more regions in a single view
US10616707B2 (en) * 2018-01-25 2020-04-07 Nutanix, Inc. Method of showing availability zones on a map for customer-owned and cloud provider-owned datacenters
US11532013B2 (en) * 2019-06-17 2022-12-20 Optimizely, Inc. Optimized simultaneous use of content experimentation and content caching
JP6836643B1 (ja) * 2019-11-27 2021-03-03 株式会社スカイコム 管理サーバ、文書ファイル管理システム、文書ファイル管理方法、および文書ファイル管理プログラム
US11429589B2 (en) * 2020-05-26 2022-08-30 Zscaler, Inc. Data loss prevention via indexed document matching
US11372728B2 (en) * 2020-08-06 2022-06-28 EMC IP Holding Company LLC Retention time based consistent hash ring
US11748303B2 (en) * 2020-11-23 2023-09-05 Ford Global Technologies, Llc Systems and methods for remote storage of information associated with a distributed ledger network
US11513904B2 (en) * 2020-12-17 2022-11-29 EMC IP Holding Company LLC Gold image library management system to reduce backup storage and bandwidth utilization
US20220197944A1 (en) * 2020-12-22 2022-06-23 Netapp Inc. File metadata service

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070276838A1 (en) * 2006-05-23 2007-11-29 Samy Khalil Abushanab Distributed storage
US20080065704A1 (en) * 2006-09-12 2008-03-13 Microsoft Corporation Data and replica placement using r-out-of-k hash functions
KR20140032064A (ko) * 2012-09-05 2014-03-14 에스케이텔레콤 주식회사 컨텐츠 전송 서비스 방법, 이를 위한 캐시 장치
US20140188825A1 (en) * 2012-12-31 2014-07-03 Kannan Muthukkaruppan Placement policy
KR20150011087A (ko) * 2013-07-22 2015-01-30 에스케이텔레콤 주식회사 컨텐츠 전송 서비스를 위한 분산 캐싱 관리 방법 및 이를 위한 중앙 관리 장치

Also Published As

Publication number Publication date
JP6564471B2 (ja) 2019-08-21
CA2984312C (en) 2021-08-10
CN107810501B (zh) 2022-01-11
US11010341B2 (en) 2021-05-18
KR102031476B1 (ko) 2019-10-11
WO2016176499A1 (en) 2016-11-03
DK3289490T3 (da) 2021-04-26
CA2984312A1 (en) 2016-11-03
EP3289490B1 (en) 2021-03-17
US20210271639A1 (en) 2021-09-02
CN107810501A (zh) 2018-03-16
US11675740B2 (en) 2023-06-13
EP3289490A1 (en) 2018-03-07
AU2016255442B2 (en) 2021-04-15
US20160321286A1 (en) 2016-11-03
SG11201708828UA (en) 2017-11-29
AU2016255442A1 (en) 2017-11-16
MX2017013857A (es) 2018-06-13
JP2018524656A (ja) 2018-08-30
AU2021205036A1 (en) 2021-08-12

Similar Documents

Publication Publication Date Title
US11675740B2 (en) Tiered cache filling
CN104580439B (zh) 一种云存储系统中使数据均匀分布的方法
US10979363B2 (en) Live resegmenting of partitions in distributed stream-processing platforms
US11308043B2 (en) Distributed database replication
US11256578B2 (en) Determining a replication path for resources of different failure domains
KR20170084400A (ko) 분산 인-메모리 환경에서 데이터 복제 및 이주를 이용한 부하 분산 시스템
US11321172B1 (en) Vault transformation within a storage network
US20170344539A1 (en) System and method for improved scalability of database exports
AU2021343451B2 (en) Configurable access-based cache policy control
US20220066879A1 (en) Metadata Based Listing in a Distributed Storage System
US11474948B2 (en) Adaptive retrieval of objects from remote storage
KR101523143B1 (ko) 클라우드 컴퓨팅 환경에서의 하둡-기반의 분산 멀티미디어 스트리밍 서비스 제공 시스템 및 스트리밍 서비스의 제공 방법
CN106649141A (zh) 一种基于ceph的存储交互装置及存储系统
US10609132B2 (en) Hash data structure biasing
US20230362274A1 (en) Configurable access-based cache policy control
US20220086207A1 (en) Dynamic variant list modification to achieve bitrate reduction
WO2022263665A1 (en) System and method for optimizing the distribution of available media production resources
KR101565137B1 (ko) 무선 스트리밍 서비스 제공 방법 및 장치

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