KR102509256B1 - 스케줄링된 안티-엔트로피 복구 설계를 위한 기술들 - Google Patents

스케줄링된 안티-엔트로피 복구 설계를 위한 기술들 Download PDF

Info

Publication number
KR102509256B1
KR102509256B1 KR1020207030597A KR20207030597A KR102509256B1 KR 102509256 B1 KR102509256 B1 KR 102509256B1 KR 1020207030597 A KR1020207030597 A KR 1020207030597A KR 20207030597 A KR20207030597 A KR 20207030597A KR 102509256 B1 KR102509256 B1 KR 102509256B1
Authority
KR
South Korea
Prior art keywords
entropy
recovery procedure
nodes
recovery
node
Prior art date
Application number
KR1020207030597A
Other languages
English (en)
Other versions
KR20200131899A (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 KR20200131899A publication Critical patent/KR20200131899A/ko
Application granted granted Critical
Publication of KR102509256B1 publication Critical patent/KR102509256B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0709Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a distributed system consisting of a plurality of standalone computer nodes, e.g. clusters, client-server systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/273Asynchronous replication or reconciliation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

본 명세서에 개시된 본 발명의 다양한 실시예들은 분산형 데이터베이스 네트워크 내의 복수의 노드에 걸쳐 분산형 안티-엔트로피 복구 절차들을 수행하기 위한 기술들을 제공한다. 분산형 데이터베이스 네트워크 내의 복수의 노드에 포함된 노드는, 복수의 노드에 포함된 모든 다른 노드들에 앞서, 제1 안티-엔트로피 복구 절차가 종료된 것으로 결정한다. 이 노드는 제2 안티-엔트로피 복구 절차가 시작할 준비가 된 것으로 결정한다. 이 노드는 제2 안티-엔트로피 복구 절차와 연관된 하나 이상의 동작을 실행하기 위한 스케줄을 생성한다. 이 노드는 복수의 노드에 포함된 다수의 노드에 걸쳐 제2 안티-엔트로피 복구 절차를 개시하기 위해 스케줄을 공유된 복구 스케줄 데이터 구조에 기입한다. 복수의 노드에 포함된 노드들 각각은 그 후 스케줄에 기반하여 노드 복구를 수행한다.

Description

스케줄링된 안티-엔트로피 복구 설계를 위한 기술들
관련 출원들에 대한 상호 참조
본 출원은 2018년 3월 27일자로 출원된 미국 특허 출원 제62/648,907호(대리인 문서 번호 NETF0192USL)의 이익을 주장하며, 이 출원은 본 명세서에 참조로 포함된다.
본 발명은 일반적으로 분산형 컴퓨터 시스템들에 관한 것으로, 보다 구체적으로는, 스케줄링된 안티-엔트로피 복구 설계(anti-entropy repair design)를 위한 기술들에 관한 것이다.
특정 분산형 데이터베이스 네트워크들에서, 데이터 집합들은 분산형 데이터베이스 네트워크에 걸쳐, 본 명세서에서 "노드들"이라고 지칭되는 다수의 컴퓨팅 디바이스에 복사되고 저장된다. 데이터 집합의 다수의 사본들은 본 명세서에서 "복제본들"로서 지칭된다. 분산형 데이터베이스 네트워크에 걸쳐 복제본들을 저장하는 것은 데이터 손실에 대한 중복성을 제공하고, 이에 의해 복제본들 중 하나가 손상되는 경우, 대응하는 데이터를 검색하기 위해 나머지 복제본들이 액세스될 수 있다. 또한, 지리적으로 다양한 노드들에 복제본들이 저장될 때, 특정 데이터 집합에의 액세스를 요청하는 사용자는 사용자의 컴퓨팅 디바이스에 가장 가까운 노드로부터 데이터를 검색할 수 있다. 그 결과, 복제본에의 액세스를 요청하는 것과 복제본을 검색하는 것 간의 레이턴시가 감소될 수 있다.
시간이 지남에 따라, 하나의 복제본 내의 데이터는 다른 대응하는 복제본들 내의 데이터와 불일치하게 될 수 있다. 일례로서, 하나의 노드 상에서 특정 복제본에 액세스하는 사용자는 복제본의 일부분을 수정할 수 있고, 이어서 수정된 복제본을 동일한 노드 상에 저장할 수 있다. 그 결과, 수정된 복제본은 분산형 데이터베이스 네트워크에 걸쳐 분산된 다른 복제본들과 불일치한다. 이러한 불일치들을 정정하기 위해, 노드들 중 하나는 안티-엔트로피 복구 조정기로서 지정된다. 그 다음, 지정된 안티-엔트로피 복구 조정기는 불일치들에 대한 복제본들의 서브세트 사이의 차이들을 분석하고 복제본들의 서브세트가 일치하게 되도록 복제본들의 서브세트를 업데이트한다. 복제본들을 분석하고 업데이트하는 이러한 프로세스는 본 명세서에서 "안티-엔트로피 복구 절차", 또는 더 간단히, "복구"라고 지칭된다. 종래의 복구들에 있어서, 사용자들은 분산형 데이터베이스 외부의 복구 도구들을 통해 오프라인 배치 프로세스로서 복구들을 수동으로 스케줄링한다. 그 결과, 종래의 안티-엔트로피 복구 절차들에 있어서, 사용자들은 분산형 데이터베이스 네트워크 내의 노드들에 대한 안티-엔트로피 복구 절차들을 조작 및 유지하는 역할을 한다.
노드들을 복구하기 위한 이러한 접근법의 한 가지 문제점은 복구 솔루션들 및 옵션들이 사용자들이 적절하게 이해하고 실행하기 어렵다는 것이다. 간단한 안티-엔트로피 복구 절차들은 비교적 적은 수의 노드들을 갖는 분산형 데이터베이스 네트워크들에 대해 효과적일 수 있지만, 이러한 간단한 안티-엔트로피 복구 절차들은 수만 개의 노드들을 갖는 분산형 데이터베이스 네트워크에서는 실패할 수 있다. 유사하게, 크기가 비교적 작은 복제본들을 저장하는 노드들에 대해 효과적일 수 있는 안티-엔트로피 복구 절차들은 비교적 큰 복제본들을 저장하는 노드들에 대해 실패할 수 있고, 그 반대도 가능하다. 그 결과, 변동하는 수의 노드들 및/또는 상이한 크기들의 복제본들을 갖는 분산형 데이터베이스 네트워크에 대해 안티-엔트로피 복구 절차들의 조작 및 유지가 어려울 수 있다.
노드들을 복구하기 위한 이러한 접근법의 다른 문제점은, 복구가 진행 중인 동안 안티-엔트로피 복구 조정기 및/또는 하나 이상의 다른 노드가 실패할 때, 전체 복구 진행이 손실될 수 있다는 것이다. 그 결과, 안티-엔트로피 복구 절차는 처음부터 재시작될 필요가 있어서, 실패 이전에 수행되었던 몇 시간 또는 몇 일의 복구 작업의 손실을 초래한다. 또한, 외부 안티-엔트로피 복구 절차는 실패 시의 분산형 데이터베이스 및 복구 진행의 상태를 완전히 파악하지 못할 수 있다. 그 결과, 안티-엔트로피 복구 절차는 복구를 재시작하는데 어떤 특정 동작들이 필요한지를 결정하는데 어려움을 가질 수 있다. 노드들을 복구하기 위한 이러한 접근법의 또 다른 문제점은 복구들이 종종 디스크 저장소, 중앙 처리 유닛(CPU) 리소스들 및 네트워크 대역폭의 상당한 이용을 필요로 하며, 이는 분산형 데이터베이스 네트워크의 성능을 상당히 감소시킬 수 있다는 것이다.
위에서 예시한 바와 같이, 본 기술분야에서 필요한 것은 분산형 데이터베이스 네트워크에서 노드들을 복구하기 위한 보다 효과적인 기술들이다.
본 출원의 다양한 실시예들은 분산형 데이터베이스 네트워크 내의 복수의 노드에 걸쳐 분산형 안티-엔트로피 복구 절차들을 수행하기 위한 컴퓨터에 의해 구현되는 방법을 제시한다. 이 방법은 복수의 노드에 포함된 제1 노드에 의해 그리고 복수의 노드에 포함된 모든 다른 노드들에 앞서, 제1 안티-엔트로피 복구 절차가 종료된 것으로 결정하는 단계를 포함한다. 이 방법은 제1 노드에 의해, 제2 안티-엔트로피 복구 절차가 시작할 준비가 된 것으로 결정하는 단계를 더 포함한다. 이 방법은 제2 안티-엔트로피 복구 절차와 연관된 하나 이상의 동작을 실행하기 위한 스케줄을 생성하는 단계를 더 포함한다. 이 방법은 복수의 노드에 포함된 다수의 노드에 걸쳐 제2 안티-엔트로피 복구 절차를 개시하기 위해 스케줄을 공유된 복구 스케줄 데이터 구조에 기입하는 단계를 더 포함한다.
본 발명의 다른 실시예들은, 제한 없이, 개시된 기술들의 하나 이상의 양태를 수행하기 위한 컴퓨팅 디바이스뿐만 아니라, 개시된 기술들의 하나 이상의 양태를 수행하기 위한 명령어들을 포함하는 컴퓨터 판독가능한 매체를 포함한다.
종래 기술에 대한 개시된 기술들의 적어도 하나의 기술적 이점은, 안티-엔트로피 복구 절차들이 노드들의 수 및 분산형 데이터베이스 네트워크 내의 복제본들의 변경된 크기로 자동으로 스케일링된다는 것이다. 그 결과, 안티-엔트로피 복구 절차는 종래의 기술들에 비해 디스크 액세스, CPU 리소스들, 및 소비되는 네트워크 대역폭의 양을 감소시키기 위해 특정 노드에 저장된 데이터의 각각의 서브세트에 적응한다. 또한, 사용자들은 시간의 경과에 따라 노드들의 수 및 복제본들의 크기가 변경되더라도 안티-엔트로피 복구 절차들을 수동으로 조작 및 유지하지 않아도 된다. 종래 기술에 대한 개시된 기술들의 다른 기술적 이점은 안티-엔트로피 복구 절차가 노드들에 걸쳐 분산되어 있다는 것이다. 또한, 실패한 노드들이 실행을 재개하면, 안티-엔트로피 복구 절차는 실패가 발생했을 때와 비교적 동일한 조건에서 재개될 수 있다. 그 결과, 종래 기술의 접근법들에 비해, 하나 이상의 다른 노드가 복구 동안 실패할 때, 복구 진행 손실이 더 적거나 없다. 이러한 기술적 이점들은 종래 기술의 접근법들에 비해 하나 이상의 기술적 개선을 나타낸다.
위에 언급한 본 발명의 특징들이 상세하게 이해될 수 있는 방식으로, 위에서 간략히 요약된 본 발명의 더 구체적인 설명이 실시예들을 참조하여 이루어질 수 있으며, 실시예들 중 일부가 첨부 도면들에 도시되어 있다. 그러나, 첨부 도면들은 본 발명의 통상적인 실시예들만을 도시할 뿐이며, 따라서 그 범위를 제한하는 것으로 간주되지 않아야 하는 바, 이는 본 발명이 다른 동등하게 효과적인 실시예들에 적용될 수 있기 때문임에 유의해야 한다.
도 1은 본 발명의 다양한 실시예들에 따른, 콘텐츠 서버들 및 엔드포인트 디바이스들에 콘텐츠를 배포하는데 이용되는 네트워크 인프라스트럭처를 도시한다.
도 2는 본 발명의 다양한 실시예들에 따른, 도 1의 네트워크 인프라스트럭처와 관련하여 구현될 수 있는 콘텐츠 서버의 보다 상세한 도면이다.
도 3은 본 발명의 다양한 실시예들에 따른, 도 1의 네트워크 인프라스트럭처와 관련하여 구현될 수 있는 제어 서버의 보다 상세한 도면이다.
도 4는 본 발명의 다양한 실시예들에 따른, 도 1의 네트워크 인프라스트럭처와 관련하여 구현될 수 있는 엔드포인트 디바이스의 보다 상세한 도면이다.
도 5a 및 도 5b는 본 발명의 다양한 실시예들에 따른, 분산형 데이터베이스 네트워크 내의 복수의 콘텐츠 서버에 걸쳐 분산형 안티-엔트로피 복구 절차들을 수행하기 위한 방법의 단계들의 흐름도를 제시한다.
이하의 설명에서, 본 발명의 보다 철저한 이해를 제공하기 위해 많은 특정 상세들이 제시된다. 그러나, 관련 기술분야의 통상의 기술자에게는 본 발명의 실시예들이 이들 특정 상세들 중 하나 이상 없이도 실시될 수 있음이 명백할 것이다.
시스템 개요
도 1은 본 발명의 다양한 실시예들에 따른, 콘텐츠 서버들(110) 및 엔드포인트 디바이스들(115)에 콘텐츠를 배포하는데 이용되는 네트워크 인프라스트럭처(100)를 도시한다. 도시된 바와 같이, 네트워크 인프라스트럭처(100)는 클러스터들(140), 제어 서버(120), 및 엔드포인트 디바이스들(115)을 포함하고, 그 각각은 통신 네트워크(105)를 통해 연결된다. 네트워크(105)는, 제한 없이 무선 및 유선 LAN들 및 인터넷 기반 WAN(Wide Area Network)들을 포함하는, 원격 또는 로컬 컴퓨터 시스템들 및 컴퓨팅 디바이스들 간의 통신들을 가능하게 하는 임의의 적절한 환경일 수 있다.
각각의 엔드포인트 디바이스(115)는, 제한 없이, 개인용 컴퓨터, 비디오 게임 콘솔, 개인 휴대 정보 단말기, 모바일 폰, 모바일 디바이스, 또는 본 발명의 하나 이상의 양태를 구현하기에 적절한 임의의 다른 디바이스일 수 있는 컴퓨팅 디바이스를 포함한다. 각각의 엔드포인트 디바이스(115)는 텍스트 데이터, 그래픽 데이터, 오디오 데이터, 비디오 데이터, 및 다른 유형들의 데이터와 같은 콘텐츠를 다운로드하기 위해 네트워크(105)를 통해 하나 이상의 콘텐츠 서버(110)와 통신한다. 콘텐츠 서버들(110)은 본 명세서에서 "캐시들", "계산 노드들" 또는 더 간단히 "노드들"이라고도 한다. 이어서, 본 명세서에서 "파일"이라고도 지칭되는 다운로드가능한 콘텐츠가 하나 이상의 엔드포인트 디바이스(115)의 사용자에게 제시된다. 다양한 실시예들에서, 엔드포인트 디바이스들(115)은 컴퓨터 시스템들, 셋톱 박스들, 모바일 컴퓨터, 스마트폰들, 태블릿들, 콘솔 및 핸드헬드 비디오 게임 시스템들, 디지털 비디오 레코더(DVR)들, DVD 플레이어들, 커넥티드 디지털 TV들, 전용 미디어 스트리밍 디바이스들(예를 들어, 로쿠(Roku®) 셋톱 박스), 및/또는 네트워크 연결성을 가지며 텍스트, 이미지들, 비디오, 및/또는 오디오 콘텐츠와 같은 콘텐츠를 사용자에게 제시하는 것이 가능한 임의의 다른 기술적으로 실현가능한 컴퓨팅 플랫폼을 포함할 수 있다.
각각의 클러스터(140)는 하나 이상의 콘텐츠 서버(110)를 포함한다. 본 명세서에서 추가로 설명되는 바와 같이, 각각의 클러스터(140)는 특정 클러스터(140) 내에 포함된 콘텐츠 서버(110)에 대해 안티-엔트로피 복구 절차를 독립적으로 실행할 수 있다. 각각의 콘텐츠 서버(110)는, 제한 없이, 독립형 NAS(networked attached storage) 시스템, SAN(storage area-network), 저장 디바이스들의 클러스터 또는 "팜(farm)", 분산형 저장소 아키텍처, 또는 본 발명의 하나 이상의 양태를 구현하기에 적절한 임의의 다른 디바이스일 수 있는 저장 디바이스를 포함한다. 추가적으로 또는 대안적으로, 각각의 콘텐츠 서버(110)는, 제한 없이, 독립형 서버, 서버들의 클러스터 또는 "팜", 하나 이상의 네트워크 기기, 또는 본 발명의 하나 이상의 양태를 구현하기에 적절한 임의의 다른 디바이스일 수 있는 저장 서브시스템을 갖는 컴퓨팅 디바이스를 포함할 수 있다. 또한, 각각의 콘텐츠 서버(110)는 제한 없이, 웹 서버 및 데이터베이스를 포함할 수 있고, 제어 서버(120)와 통신하여 제어 서버(120)에 의해 추적되고 관리되는 다양한 파일들의 위치 및 이용가능성을 결정하도록 구성될 수 있다.
더 일반적으로, 각각의 콘텐츠 서버(110)는 테이블들로 불리는 파일들의 그룹들을 저장한다. 각각의 테이블은, 차례로, 파티션들로 구성되고, 여기서 파티션은 임의의 크기의 데이터 단위이다. 파티션의 크기는 단일 키-값 쌍과 같이 작거나 1 기가바이트의 데이터와 같이 클 수 있다. 각각의 콘텐츠 서버(110)는 각각의 콘텐츠 서버(110)를 다양한 파일들의 사본들로 "채우기" 위해 채우기 소스(130) 및 하나 이상의 다른 콘텐츠 서버(110)와 추가로 통신할 수 있다. 또한, 콘텐츠 서버들(110)은 엔드포인트 디바이스들(115)로부터 수신된 파일들에 대한 요청들에 응답할 수 있다. 그 후, 파일들은 콘텐츠 서버(110)로부터 또는 더 넓은 콘텐츠 배포 네트워크를 통해 배포될 수 있다. 일부 실시예들에서, 콘텐츠 서버들(110)은 콘텐츠 서버들(110)에 저장된 파일들에 액세스하기 위해 사용자들이 (예를 들어, 사용자 이름 및 패스워드를 이용하여) 인증할 수 있게 한다.
제어 서버(120)는, 제한 없이, 독립형 서버, 서버들의 클러스터 또는 "팜", 하나 이상의 네트워크 기기, 또는 본 발명의 하나 이상의 양태를 구현하기에 적절한 임의의 다른 디바이스일 수 있는 컴퓨팅 디바이스를 포함할 수 있다. 도 1에는 단일 제어 서버(120)만이 도시되어 있지만, 다양한 실시예들에서 다수의 제어 서버들(120)이 파일들을 추적하고 관리하도록 구현될 수 있다.
다양한 실시예들에서, 채우기 소스(130)는 콘텐츠 서버들(110)을 채우기 위해 수천 또는 수백만개의 파일들을 포함하는 파일들의 카탈로그가 저장되고 액세스되는 온라인 저장 서비스(예를 들어, Amazon® Simple Storage Service, Google® Cloud Storage 등)를 포함할 수 있다. 도 1에는 단일 채우기 소스(130)만이 도시되어 있지만, 다양한 실시예들에서 다수의 채우기 소스들(130)이 파일들에 대한 요청들을 서비스하도록 구현될 수 있다.
클러스터에 걸친 분산형 안티-엔트로피 복구 절차들의 수행
도 2는 본 발명의 다양한 실시예들에 따른, 도 1의 네트워크 인프라스트럭처(100)와 관련하여 구현될 수 있는 콘텐츠 서버(110)의 블록도이다. 도시된 바와 같이, 콘텐츠 서버(110)는, 제한 없이, 프로세서(204), 시스템 디스크(206), 입력/출력(I/O) 디바이스 인터페이스(208), 네트워크 인터페이스(210), 상호연결부(212), 및 시스템 메모리(214)를 포함한다.
프로세서(204)는 단일 CPU, 다수의 CPU, 다수의 처리 코어를 갖는 단일 CPU 등을 나타내도록 포함되어 있다. 프로세서(204)는 시스템 메모리(214)에 저장된, 서버 애플리케이션(217) 및 복구 애플리케이션(219)과 같은, 프로그래밍 명령어들을 검색 및 실행하도록 구성된다. 유사하게, 프로세서(204)는 애플리케이션 데이터(예를 들어, 소프트웨어 라이브러리들)를 저장하고 애플리케이션 데이터를 시스템 메모리(214)로부터 검색하도록 구성된다. 상호연결부(212)는 프로세서(204), 시스템 디스크(206), I/O 디바이스 인터페이스(208), 네트워크 인터페이스(210), 및 시스템 메모리(214) 사이에서 프로그래밍 명령어들 및 애플리케이션 데이터와 같은 데이터의 전송을 용이하게 하도록 구성된다. I/O 디바이스 인터페이스(208)는 I/O 디바이스들(216)로부터 입력 데이터를 수신하고 상호연결부(212)를 통해 입력 데이터를 프로세서(204)에 전송하도록 구성된다. 예를 들어, I/O 디바이스들(216)은 하나 이상의 버튼, 키보드, 마우스, 및/또는 다른 입력 디바이스들을 포함할 수 있다. I/O 디바이스 인터페이스(208)는 상호연결부(212)를 통해 프로세서(204)로부터 출력 데이터를 수신하고 출력 데이터를 I/O 디바이스들(216)에 전송하도록 추가로 구성된다.
시스템 디스크(206)는 하나 이상의 하드 디스크 드라이브, 솔리드 스테이트 저장 디바이스, 또는 유사한 저장 디바이스를 포함할 수 있다. 시스템 디스크(206)는 파일들(218)(예를 들어, 오디오 파일들, 비디오 파일들, 자막들, 애플리케이션 파일들, 소프트웨어 라이브러리들 등)과 같은 비휘발성 데이터를 저장하도록 구성된다. 파일들(218), 또는 더 구체적으로, 하나 이상의 파일(218)과 연관된 파티션들 및/또는 레코드들은 이후 네트워크(105)를 통해 하나 이상의 엔드포인트 디바이스(115)에 의해 검색될 수 있다. 일부 실시예들에서, 네트워크 인터페이스(210)는 이더넷 표준에 따라 동작하도록 구성된다.
시스템 메모리(214)는, 제한 없이, 서버 애플리케이션(217), 복구 애플리케이션(219), 및 데이터 저장소(221)를 포함한다. 데이터 저장소(221)는 서버 애플리케이션 데이터 저장소를 포함하고, 여기서 데이터는 서버 애플리케이션(217)에 의해 저장 및 검색된다. 일부 실시예들에서, 데이터 저장소(221)는 또한 복구 데이터 저장소를 포함할 수 있으며, 여기서 데이터는 복구 애플리케이션(219)에 의해 저장 및 검색된다. 추가적으로 또는 대안적으로, 복구 데이터 저장소는 콘텐츠 서버(110)의 외부에 있는 데이터 저장소에 존재할 수 있다. 이러한 경우들에서, 복구 애플리케이션(219)은 네트워크 인터페이스(210)를 통해 외부 복구 데이터 저장소에 액세스할 수 있다.
서버 애플리케이션(217)은 엔드포인트 디바이스(115) 및 다른 콘텐츠 서버들(110)로부터 수신된 하나 이상의 파일(218) 내의 하나 이상의 파티션에 대한 요청들을 서비스하도록 구성된다. 서버 애플리케이션(217)이 하나 이상의 파일(218) 내의 하나 이상의 파티션에 대한 요청을 수신할 경우, 서버 애플리케이션(217)은 시스템 디스크(206)로부터 대응하는 파일들(218)을 검색하고 네트워크(105)를 통해 엔드포인트 디바이스(115) 또는 콘텐츠 서버(110)에 구체화된 파티션(들)을 전송한다. 이러한 동작들을 수행함에 있어서, 서버 애플리케이션(217)은 데이터 저장소(221)에 데이터를 저장하고 이로부터 데이터를 검색한다.
복구 애플리케이션(219)은, 프로세서(204)에 의해 실행될 때, 본 명세서에서 더 설명되는 바와 같이, 도 1의 콘텐츠 서버(110)와 연관된 하나 이상의 동작을 수행한다. 이러한 동작들을 수행함에 있어서, 복구 애플리케이션(219)은 데이터 저장소(221)에 데이터를 저장하고 이로부터 데이터를 검색한다.
동작 시에, 프로세서(204) 상에서 실행되는 복구 애플리케이션(219)은 복구 상태 업데이트들을 통해 안티-엔트로피 복구 절차들의 실행을 관리한다. 일 실시예에서, 복구 애플리케이션(219)은 네 가지 유형의 상태 테이블을 포함하는 데이터 구조를 통해 안티-엔트로피 복구 절차의 실행을 관리하고 조정한다. 이들 네 가지 상태 테이블은 본 명세서에서 repair_process, repair_sequence, repair_status, 및 repair_hook_status라고 지칭된다. 특정한 안티-엔트로피 복구 절차의 경우, 클러스터(140)에 포함된 각각의 콘텐츠 서버(110)에 대해 하나의 repair_process 상태 레코드 및 하나의 repair_sequence 레코드가 존재한다. 또한, 특정한 콘텐츠 서버(110) 상에서 실행되는 특정한 안티-엔트로피 복구 절차의 경우, 파티션들의 테이블마다의 하나의 repair_status 레코드 및 클러스터(140)에 포함된 각각의 콘텐츠 서버(110)에 대한 하나의 repair_hook_status 상태 테이블이 존재한다. 다양한 실시예들에서, repair_process, repair_sequence, repair_status, 및 repair_hook_status 상태 테이블들 각각은 임의의 기술적으로 실현가능한 조합으로, 각각의 클러스터 또는 하나의 마스터 데이터 저장소에 존재할 수 있다. 이러한 실시예들에서, 마스터 repair_status 상태 테이블 및 하나의 마스터 repair_hook_status 상태 테이블은 다수의 섹션들로 분할될 수 있으며, 각각의 섹션은 클러스터(140)에 포함된 상이한 콘텐츠 서버(110)에 대응한다.
제1 상태 테이블은 전체 클러스터(140)의 레벨에서 안티-엔트로피 복구 절차를 실행하기 위한 파라미터들을 포함하는 repair_process 상태 테이블이다. 제2 상태 테이블은 클러스터(140)에 포함된 콘텐츠 서버들(110)에 걸쳐 안티-엔트로피 복구 절차를 수행하기 위한 스케줄을 정의하는 repair_sequence 상태 테이블이다. 스케줄은 노드들이 노드 복구를 수행하는 시퀀스 또는 순서의 형태이다. 특히, repair_sequence 상태 테이블은 클러스터(140)에서의 각각의 콘텐츠 서버(110)의 상태를 추적하고, 어느 콘텐츠 서버들(110)이 현재의 안티-엔트로피 복구 절차 동안 노드 복구를 수행했는지를 나타낸다. 제3 상태 테이블은 클러스터(140)에 포함된 각각의 콘텐츠 서버(110)에 포함된 특정 요소들에 대한 복구 상태를 추적하는 repair_status 상태 테이블이다. 본 명세서에서 더 설명되는 바와 같이, 이러한 특정 요소들은 대응하는 콘텐츠 서버(110) 내에서 복구를 겪는 데이터의 파티션들 및 부분범위들 각각을 포함한다. 제4 상태 테이블은 콘텐츠 서버들(110)에 의해 수행되는 복구 후 절차들과 연관된 동작들의 상태를 추적하는 repair_hook_status 상태 테이블이다. 복구 후 절차들과 연관된 이러한 동작들은 본 명세서에서 "복구 후 후크들"이라고 지칭된다.
일반적으로, 복구 후 후크들은 콘텐츠 서버(110) 및 모든 관련 이웃 콘텐츠 서버들(110)이 안티-엔트로피 복구 절차와 연관된 노드 복구를 수행하였다면 콘텐츠 서버(110)에 의해 수행되는 다양한 유지 작업들을 포함한다. 본 명세서에서 사용되는 바와 같이, 주어진 콘텐츠 서버(110)의 이웃들은 주어진 콘텐츠 서버(110)와 공통인 하나 이상의 파티션을 저장하는 클러스터에 포함된 다른 콘텐츠 서버들(110)의 세트이다. 일반적으로, 콘텐츠 서버(110)는 동일한 데이터를 공유하는 모든 다른 콘텐츠 서버들(110)이 노드 복구들을 수행할 때까지 복구 후 후크들을 수행할 수 없다. 이 규칙은 이웃하는 콘텐츠 서버들(110)의 노드 복구에 필요한 데이터가 그 노드 복구들의 완료 전에 삭제되는 것을 방지한다. 특정 콘텐츠 서버(110) 및 모든 관련 이웃 콘텐츠 서버들(110)이 노드 복구를 수행한 후에, 특정 콘텐츠 서버(110)는 복구 동안 필요했지만 일단 복구가 완료되면 더 이상 필요하지 않은 하나 이상의 파티션을 저장할 수 있다. 따라서, 클린업 후크는 더 이상 필요하지 않은 이들 파티션들을 삭제한다.
또한, 특정 콘텐츠 서버(110) 및 모든 관련 이웃 콘텐츠 서버들(110)이 노드 복구를 수행한 후에, 특정 콘텐츠 서버(110)는 복구된 데이터를 비효율적인 방식으로 저장할 수 있다. 보다 구체적으로는, 노드 복구 동안, 콘텐츠 서버(110)는 시스템 디스크(206)의 다양한 저장 위치들로 그리고 그로부터 데이터의 블록들을 판독, 기입, 및 복사한다. 그 결과, 노드 복구가 완료되면, 특정 파티션의 부분들은 시스템 디스크(206) 상의 랜덤 위치들에 저장될 수 있고/있거나 파티션은 파티션 내에 내장된 자유 또는 미사용 저장 공간의 섹션들을 포함할 수 있다. 이러한 방식으로 저장된 파티션들을 검색하는 것은 시간 소모적일 수 있는데, 그 이유는 시스템 디스크(206)가 서로 떨어져 있는 저장 위치들로부터 데이터를 검색할 필요가 있을 수 있고, 자유 또는 미사용 저장 공간의 섹션들을 스킵할 필요가 있을 수 있기 때문이다. 이러한 비효율적인 방식으로 데이터를 저장한 결과로서, 복구가 완료된 후에 콘텐츠 서버(110)로부터 데이터를 요청하는 엔드포인트 디바이스(115)는 복구 전에 이루어진 요청들에 비해 증가된 레이턴시를 경험할 수 있다. 액세스 레이턴시를 감소시키기 위해, 프로세서(204)는 자유 또는 미사용 저장 공간의 내부 섹션들이 없는 연속적인 선형 방식으로 시스템 디스크(206) 상에 파티션들을 저장하기 위해 압축 프로세스를 수행한다. 특히, 프로세서(204)는 데이터를 더 효과적인 방식으로 저장하기 위해 압축 후크를 수행하여, 요청 레이턴시를 감소시킨다.
또한, 특정 콘텐츠 서버(110)가 특정 콘텐츠 서버(110) 및 모든 관련 이웃 콘텐츠 서버들(110)이 노드 복구를 수행한 후에 이러한 추가적인 복구 후 후크들을 수행하도록, 임의의 추가적인 복구 후 후크들이 사용자에 의해 정의될 수 있다. 하나의 이러한 사용자-정의된 복구 후크는 콘텐츠 서버(110)가 노드 복구를 완료했다는 메시지를 모니터링 애플리케이션(도시되지 않음)에 전송할 수 있다. 이러한 방식으로, 모니터링 애플리케이션은 복구를 수행하고 있는 클러스터(140) 내의 각각의 콘텐츠 서버(110)의 진행을 추적하고, 클러스터(140)의 복구 동안 소비되는 시간과 같은 대응하는 메트릭들을 계산한다.
복구 애플리케이션(219)은 분산형 데이터베이스 네트워크 내의 콘텐츠 서버들(110)에 걸쳐 실행되며, 여기서 어떠한 콘텐츠 서버(110)도 안티-엔트로피 복구 조정기로서 미리 지정되지 않는다. 일부 실시예들에서, 클러스터(140) 내의 각각의 콘텐츠 서버(110)는 주기적으로, 예컨대 2분마다 한 번씩 복구 애플리케이션(219)을 수행한다. 복구 애플리케이션(219)을 실행할 때, 콘텐츠 서버(110)는 먼저 repair_process 상태 테이블 및/또는 repair_sequence 상태 테이블로부터 데이터를 검색하여 안티-엔트로피 복구 절차가 이미 진행 중인지를 결정한다. repair_process 상태 테이블 및/또는 repair_sequence 상태 테이블로부터의 데이터가 안티-엔트로피 복구 절차가 진행 중인 것을 나타내면, 콘텐츠 서버(110)는, repair_sequence 상태 테이블에서의 데이터로부터, 콘텐츠 서버(110)가 노드 복구를 수행할 다음 순서인지를 결정한다. repair_sequence 상태 테이블에서의 데이터가 콘텐츠 서버(110)가 다음 순서임을 나타내면, 콘텐츠 서버(110)는 복제본들 및 연관된 상태 테이블들을 복구하고 복구 절차를 종료한다. repair_sequence 상태 테이블에서의 데이터가 콘텐츠 서버(110)가 다음 순서가 아니라는 것을 나타내면, 콘텐츠 서버(110)는 콘텐츠 서버(110)가 콘텐츠 서버(110)에 관련된 복구 후 후크들을 수행하도록 허용되는지를 결정한다. 콘텐츠 서버(110)는 repair_sequence 상태 테이블에서의 데이터가 콘텐츠 서버(110) 및 모든 이웃 콘텐츠 서버들(110)이 노드 복구를 완료했다는 것을 나타내는 경우 복구 후 후크들을 수행하도록 허용된다. 콘텐츠 서버(110)가 허용되는 경우, 콘텐츠 서버(110)는 복구 후 후크들을 수행하고 복구 절차를 종료한다. 그렇지 않다면, 콘텐츠 서버(110)는 복구 후 후크들을 수행하지 않고 복구 절차를 종료한다.
반면에, 콘텐츠 서버(110)가 안티-엔트로피 복구 절차가 진행 중이지 않다고 결정하면, 콘텐츠 서버(110)는 새로운 안티-엔트로피 복구 절차가 개시되어야 하는지를 결정한다. 일반적으로, 이전의 안티-엔트로피 복구 절차가 완료되었고, 새로운 안티-엔트로피 복구 절차를 개시하는 것에 대한 제약들이 없는 경우 새로운 안티-엔트로피 복구 절차가 개시되어야 한다. 예를 들어, 새로운 안티-엔트로피 복구 절차의 개시는 한산한 시간(off peak hour)들로 지정된 시각으로 제약될 수 있고, 여기서 한산한 시간들은 콘텐츠 서버들(110) 상의 부하가 특정 임계 레벨 아래일 것으로 예상되는 지정 시간 범위를 나타낸다. 현재 시간이 복구 동작들에 지정된 시간의 지정 범위에 속하는 경우, 새로운 안티-엔트로피 복구 절차가 개시될 수 있다. 새로운 안티-엔트로피 복구 절차가 개시되지 않아야 하는 경우, 콘텐츠 서버(110)는 복구 절차를 종료한다. 그렇지 않다면, 콘텐츠 서버(110)는 새로운 안티-엔트로피 복구 절차를 개시하려고 시도한다. 콘텐츠 서버(110)가 repair_procedure 상태 테이블에서의 데이터에 대한 로크(lock)를 획득할 수 있다면 그 시도는 성공적이다. 콘텐츠 서버(110)가 repair_procedure 상태 테이블에서의 데이터에 대한 로크를 획득하는데 성공적이지 않은 경우, 다른 콘텐츠 서버(110)가 로크를 획득하였고 새로운 안티-엔트로피 복구 절차를 개시하고 있다. 그러나, 콘텐츠 서버(110)가 로크를 획득하는데 성공적이면, 콘텐츠 서버(110)는 클러스터-레벨 파라미터들로 repair_process 상태 테이블을 채운다. 또한, 콘텐츠 서버(110)는 콘텐츠 서버들(110)에 대한 새로운 시퀀스로 repair_sequence 상태 테이블을 채워 새로운 안티-엔트로피 복구 절차를 수행한다. 그 다음, 콘텐츠 서버(110)는 복구 절차를 종료한다.
일반적으로, 콘텐츠 서버들(110)이 서로 조정하는 유일한 시간은 콘텐츠 서버(110)가 새로운 안티-엔트로피 복구 절차를 개시하려고 시도하고, 위에서 설명된 repair_process 및 repair_sequence 상태 테이블들을 채우고, 콘텐츠 서버들(110)이 새로운 안티-엔트로피 복구 절차와 관련된 노드 복구들을 수행하는 시퀀스 또는 순서를 정의하는 새로운 시퀀스를 생성할 때이다. 콘텐츠 서버(110)가 새로운 안티-엔트로피 복구 절차를 개시하려고 시도할 때, 콘텐츠 서버(110)는 클러스터-레벨 repair_process 상태 테이블에 대한 로크를 요청한다. 이러한 방식으로, 다수의 콘텐츠 서버들(110)은 다음의 안티-엔트로피 복구 절차에 대해 새로운 repair_process 및 repair_sequence 상태 테이블들을 동시에 기입하는 것이 방지된다. 그 결과, 클러스터(140) 내의 임의의 콘텐츠 서버(110)는 repair_process 상태 테이블에 대한 로크를 획득하고 다음의 안티-엔트로피 복구 절차를 개시할 수 있다.
콘텐츠 서버(110)가 로크를 획득할 때, 콘텐츠 서버(110)는 기계별 repair_sequence 상태 테이블을 배치 동작으로서 기입한다. 배치 동작 기입에서, 모든 기입들이 성공적이거나, 기입들 중 어느 것도 실행되지 않는다. 배치 동작에서, 콘텐츠 서버(110)는 부분적인 시퀀스를 repair_sequence 상태 테이블에 기입한 후 실패하는 것이 방지되어, 다수의 안티-엔트로피 복구 절차들에 관련된 부분적인 시퀀스들을 포함하는 repair_sequence 상태 테이블을 낳는다. 또한, 배치 동작이 완료되거나 실패할 때까지 다른 콘텐츠 서버들(110)이 repair_sequence 상태 테이블에 액세스하는 것이 방지된다. 그 결과, 새로운 repair_sequence 상태 테이블이 완전하고 일치하는 것이 다른 콘텐츠 서버들(110)에게 보장된다. 배치 동작에서 repair_sequence 상태 테이블을 기입함으로써, 다른 콘텐츠 서버들(110)은 부분적으로 기입된 repair_sequence 상태 테이블을 판독하고, 그 결과 잘못된 시퀀스에서 노드 복구들을 수행하는 것이 방지된다.
요약하면, 임의의 콘텐츠 서버(110)는 두 가지 조정 상태, 즉 (1) repair_process 상태 테이블에 대한 로크를 획득하고 이에 기입하는 것, 및 (2) 배치 동작에서 repair_sequence 상태 테이블을 기입하는 것을 통해 새로운 안티-엔트로피 복구 절차를 개시할 수 있다. 이러한 두 가지 조정 상태 이외에, 콘텐츠 서버들(110)은 각각의 다른 콘텐츠 서버들(110)과 조정하거나 진행을 위해 로크들을 획득할 필요 없이 독립적으로 노드 복구를 수행한다.
또한, 각각의 콘텐츠 서버(110)는 복구를 위해 스케줄링된 파티션들의 세트를 부분범위들로 분할한다. 주어진 부분범위는 단일 파티션, 다수의 파티션, 또는 파티션의 부분을 나타낼 수 있다. 각각의 콘텐츠 서버(110)는 복구를 완료할 목표 완료 시간을 충족시키기 위해 파티션들을 부분범위들로 자동으로 분할하고 병합한다. 일례로서, 안티-엔트로피 복구 절차는 부분범위당 30분 이하에서 복구를 완료하기 위한 목표를 가질 수 있다. 각각의 부분범위는, 콘텐츠 서버(110)에 저장된 파티션들의 크기 및 파티션들의 수에 기반하여, 이러한 목표 완료 시간을 충족시키도록 자동으로 크기가 정해진다. 일반적으로, 많은 양의 작은 파티션들을 포함하는 클러스터(140) 내의 콘텐츠 서버(110)에 대한 repair_status 상태 테이블들의 최적 세트는 작은 양의 큰 파티션들을 포함하는 클러스터(140) 내의 콘텐츠 서버(110)에 대한 repair_status 상태 테이블들의 최적 세트와 상이할 것이다.
repair_status 상태 테이블들의 세트를 최적화하기 위해, 콘텐츠 서버들(110)은 적응적 분할 범위 절차를 수행한다. 이것은 파티션들의 수, 파티션들의 크기, 및 다른 메트릭들에 기반하여 부분범위들을 자동으로 선택한다. 일례로서, 백만개의 파티션을 포함하는 클러스터(140)를 고려하는데, 여기서 각각의 파티션은 키-값 쌍이다. 다수의 콘텐츠 서버(110)에 걸친 파티션들에서의 차이들을 찾기 위해, 클러스터(140)에 포함된 각각의 콘텐츠 서버(110)는 구성요소들 각각의 암호 캐시를 계산하고, 본 명세서에서 "머클 트리(Merkle tree)"라고 지칭되는 캐시 트리를 생성한다. 머클 트리에서, 각각의 리프는 대응하는 파티션 또는 파티션 부분에서의 데이터의 해시 값을 포함한다. 2개의 콘텐츠 서버(110) 각각 상의 파티션들의 세트에 대해 하나씩 2개의 머클 트리가 주어지면, 2개의 머클 트리 상의 대응하는 리프들이 동일한 해시 값을 갖는 경우, 대응하는 소스 데이터는 동일하다. 각각의 콘텐츠 서버(110)는 하나의 머클 트리에 저장된 해시 값들에 대한 다른 머클 트리에 저장된 해시들에서의 차이들을 찾기 위해 콘텐츠 서버들(110)에 걸쳐 머클 트리를 분석한다. 이러한 차이는 해시 값들에 의해 표현되는 소스 데이터에서의 차이에 대응한다. 그러나, 백만개의 파티션에 대해 단일 머클 트리를 생성하는 것은 안티-엔트로피 복구 절차를 수행하는데 이용가능한 것보다 더 많은 메모리를 소비할 수 있다.
이러한 문제를 해결하는 한 가지 방법은 머클 트리의 크기를 합리적인 수의 해시 값들로 제약하는 것이다. 그러나, 이러한 방식으로 머클 트리의 크기를 제약하는 것은 각각의 해시 값이 많은 수의 파티션들을 나타내는 머클 트리를 낳을 수 있다. 2개의 대응하는 해시 값이 상이한 경우, 데이터 불일치를 찾기 위해 해시 값에 의해 표현되는 파티션들 모두가 비교될 필요가 있다.
그 결과, 콘텐츠 서버들(110)은 적응적 분할 범위 절차를 수행하고, 이에 의해 노드 복구는 부분범위들로 분할되고, 각각의 부분범위는 상이한 머클 트리를 갖는다. 각각의 머클 트리는 일대일 해상도를 가질 수 있으며, 이에 의해 각각의 해시 값이 단일 파티션을 나타낸다. 다수의 머클 트리들은 동시에 계산된다. 적응적 분할 범위 절차는 머클 트리당 목표 완료 시간, 예컨대 30분에 기반하여 각각의 머클 트리의 수, 크기 및 해상도를 결정한다.
이 적응적 분할 범위 절차는 클러스터(140) 내의 기본 파티션들에 기반하여 머클 트리들을 자동으로 조정한다. 예를 들어, 제1 클러스터(140)는 각각의 파티션이 작은 백만개의 파티션을 가질 수 있다. 각각의 해시 값이 빠르게 계산될 수 있고, 각각의 파티션이 빠르게 비교될 수 있기 때문에, 이 클러스터(140)는 빠르게 복구할 것이다. 제2 클러스터(140)는 각각의 파티션이 1 기가바이트인 백만개의 파티션을 가질 수 있다. 이 클러스터(140)는 각각의 해시 값을 계산하는 것이 오랜 시간이 걸릴 수 있고, 각각의 파티션을 비교하는 것도 마찬가지로 오랜 시간이 걸릴 수 있기 때문에 느리게 복구할 것이다. 적절한 분할 범위를 적응적으로 선택함으로써, 부분범위당 30분의 목표 완료 시간이 달성될 수 있다. 분할 범위들의 이러한 적응적 선택은 콘텐츠 서버(110) 실패 이후의 더 빠른 복원을 허용한다.
일부 실시예들에서, 안티-엔트로피 복구 절차는 하나 이상의 이전에 실행된 안티-엔트로피 복구 절차에 관련된 이력 데이터에 기반하여 복구 작업을 자동으로 조율할 수 있다. 이러한 실시예들에서, 새로운 안티-엔트로피 복구 절차를 개시하고 있는 콘텐츠 서버(110)는 각각의 콘텐츠 서버(110)에 의해 보고되는 바와 같이, repair_status 상태 테이블 내의 데이터를 분석한다. 이 데이터는 각각의 콘텐츠 서버(110)에 대한 각각의 부분범위, 부분범위의 크기, 및 그 부분범위를 복구하는데 소비되는 시간의 양을 식별한다. 새로운 안티-엔트로피 복구 절차에 대한 상태 테이블들은 이후 목표 완료 시간을 충족시키기 위해 이 데이터에 기반하여 적응될 수 있다. 일례로서, 이전의 안티-엔트로피 복구 절차가 목표 완료 시간보다 적은 시간에 수행되는 경우, 새로운 안티-엔트로피 복구 절차에 대한 분할 범위는 이전의 안티-엔트로피 복구 절차의 실제 완료 시간의 두 배인 목표 완료 시간에 기반할 수 있다. 한편, 이전의 안티-엔트로피 복구 절차가 목표 완료 시간보다 더 많은 시간에 수행되는 경우, 새로운 안티-엔트로피 복구 절차에 대한 분할 범위는 이전의 안티-엔트로피 복구 절차의 실제 완료 시간보다 더 작은 고정된 백분율인 목표 완료 시간에 기반할 수 있다. 이러한 방식으로, 후속하는 안티-엔트로피 복구 절차들을 위한 구성들이 시간의 경과에 따라 파티션들의 특성에서의 변경들에 적응한다.
이제, 복구 옵션들의 세트가 설명된다. 이러한 복구 옵션들은 적응적 분할 범위 절차가 어떻게 수행되는지를 포함하는, 안티-엔트로피 복구 절차들의 구성 및 실행을 안내하기 위한 사용자 제어들을 제공한다. 복구 옵션들이 아래의 표 1에서 제시된다:
<표 1>
Figure 112020112573308-pct00001
Figure 112020112573308-pct00002
Figure 112020112573308-pct00003
"유형" 복구 옵션은 실행할 안티-엔트로피 복구 절차의 유형을 지정한다. 전체 복구에서, 콘텐츠 서버들(110)은 모든 파티션들에 대해 복구를 수행한다. 증분적 복구에서, 콘텐츠 서버들(110)은 변경된 데이터에 대해서만 복구를 수행한다. 디폴트 복구 유형은 전체 복구이다.
"작업자들" 복구 옵션은 복구를 실행할, "작업자들"로서 본 명세서에서 또한 지칭되는 프로세서 코어들의 수를 지정한다. 작업자들의 디폴트 수는 하나의 코어와 이용가능한 코어들의 수를 2로 나눈 값의 최대치이다. 이러한 디폴트 수의 작업자들이 적어도 하나의 프로세서 코어에 대해, 그러나 이용가능한 코어들의 수의 절반 이하에 대해 복구를 실행한다.
"병행성" 복구 옵션은 복구를 실행하기 위해 머클 트리들을 계산할 때 이용되는 병행성의 정도를 지정한다. 3개의 지리적으로 다양한 데이터 센터 각각에서 3개의 콘텐츠 서버(110)를 포함하는 클러스터(140)의 경우, 순차적으로는 9개의 콘텐츠 서버(110) 각각으로 하여금 머클 트리를 순차적으로 구축하게 하며, 여기서 하나의 콘텐츠 서버(110)만이 임의의 주어진 시간에 머클 트리들을 구축한다. 병행은 주어진 데이터 센터 내의 3개의 콘텐츠 서버(110)가 머클 트리들을 동시에 구축하게 한다. 데이터 센터들은 순차적으로 머클 트리들을 구축하고, 여기서 하나의 데이터 센터에서의 콘텐츠 서버들(110)만이 임의의 주어진 시간에 머클 트리들을 구축한다. dc_parallel은 모든 3개의 데이터 센터에 걸친 모든 9개의 콘텐츠 서버(110)가 머클 트리들을 동시에 구축하게 한다. 디폴트 병행성은 순차적이다. 순차적인 것이 3개의 옵션 중 가장 느린 것일 수 있지만, 순차적인 것은 또한 데이터 보존의 관점에서 가장 보수적이다.
"후크들" 복구 옵션은 일단 대응하는 콘텐츠 서버(110) 및 이웃 콘텐츠 서버들(110)이 노드 복구를 완료했을 때 실행할 복구 후 후크들의 세트를 지정한다. 이용가능한 복구 후 후크들은 "클린업", "압축", 및 임의의 다른 사용자-공급 복구 후 후크들을 포함한다. 디폴트 후크는 클린업이다.
"split_range" 복구 옵션은 repair_status 상태 테이블을 부분범위의 목적으로 분할하기 위한 파티션들의 수를 지정한다. split_range가 정수 'n'을 지정하는 경우, 노드 복구는 각각의 파티션이 'n'개의 부분범위로 분할되도록 실행한다. split_range가 정수 'n'에 이어지는 "_dry_run"을 지정하는 경우, 노드 복구는 각각의 파티션이 'n'개의 부분범위로 분할되고, 추가적인 진단 데이터가 repair_status 상태 테이블에 저장되도록 실행한다. split_range가 "적응적"을 지정하는 경우, 노드 복구는 본 명세서에서 추가로 설명되는 바와 같이, 적응적 분할 범위 프로세스를 실행한다. 디폴트 split_range는 적응적이다.
"interrepair_delay_minutes" 복구 옵션은 하나의 안티-엔트로피 복구 절차의 완료와 후속 안티-엔트로피 복구 절차의 개시 사이에서 지연시키기 위한 정수의 분들을 지정한다. "전체"의 interrepair_delay_minutes 값은 이전의 안티-엔트로피 복구 절차의 완료 후에 후속 복구의 개시가 1440분(24시간)에서 발생한다는 것을 나타낸다. "증분적"의 interrepair_delay_minutes 값은, 지연 없이 이전의 안티-엔트로피 복구 절차의 완료 직후에 후속 안티-엔트로피 복구 절차의 개시가 발생한다는 것을 나타낸다.
"process_timeout_seconds" 복구 옵션은 하나의 상태로부터 다른 상태로 전이하기 위해 다른 콘텐츠 서버(110)가 대기할 정수의 초들을 지정한다. 디폴트 process_timeout_seconds는 1800초(30분)이다.
"repair_timeout_seconds" 복구 옵션은 단일 부분범위 복구가 완료되기를 대기할 정수의 초들을 지정한다. 디폴트 repair_timeout_seconds는 14,400초(4시간)이다.
다양한 실시예들에서, 본 명세서에서 "nodetools"로서 지칭되는 2개의 보충적인 명령은 현재 실행 중인 복구 절차의 상태를 체크하거나 변경하는데 이용가능하다. 2개의 보충적인 명령은 콘텐츠 서버(110)의 복구 이력을 체크하기 위한 repairstatus 명령 및 클러스터(140)의 복구를 제어하기 위한 repairctl 명령을 포함한다. 이들 nodetool 명령들 각각이 이제 더 상세히 논의된다.
repairstatus 명령의 구조가 아래의 표 2에서 제시된다:
<표 2>
Figure 112020112573308-pct00004
라인들(001 및 002)은 이름 "nodetool repairstatus"를 복구 이력 정보 인쇄 명령으로서 지정한다. 라인들(003 내지 006)은 라인들(005 내지 006)에 도시되고 라인들(007 내지 016)에서 더 완전히 설명되는 바와 같은 4개의 명령 옵션을 포함하는, repairstatus 명령의 개요를 예시한다. 라인들(008-010)은 repair-id 명령 옵션을 나타낸다. repair-id가 지정되면, repairstatus 명령은 지정된 복구 식별자에 대한 상태를 회신한다. repair-id가 지정되지 않으면, repairstatus 명령은 전체 복구의 상태를 회신한다. 라인들(011-012)은 node-id 명령 옵션을 나타낸다. repairstatus 명령은 지정된 노드 식별자에 대한 상태를 회신한다. 라인들(013-014)은 keyspace 명령 옵션을 나타낸다. repairstatus 명령은 지정된 keyspace에 대한 상태를 회신한다. 라인들(015-016)은 테이블 명령 옵션을 나타낸다. repairstatus 명령은 지정된 상태 테이블에 대한 상태를 회신한다.
예를 들어, 어떠한 명령 옵션들도 없는 명령 "nodetool repairstatus"는 가장 최근의 복구 상태의 전체 보기를 회신할 것이다. 명령 "nodetool repairstatus --repair-id 12"는 12의 식별자를 갖는 복구의 복구 상태를 회신할 것이다. 명령 "nodetool repairstatus --node-id 73ab7e49"는 73ab7e49의 식별자를 갖는 노드의 복구 상태를 회신할 것이다.
repairctl 명령의 구조가 아래의 표 3에서 제시된다:
<표 3>
Figure 112020112573308-pct00005
라인들(001 및 002)은 이름 "nodetool repairctl"을 클러스터(140) 상의 복구 제어 명령으로서 지정한다. 라인들(003 내지 006)은 라인들(005 내지 006)에 도시되고 라인들(007 내지 014)에서 더 완전히 설명되는 바와 같은 3개의 명령 옵션을 포함하는, repairctl 명령의 개요를 예시한다. 라인들(008-010)은 중지-클러스터 명령 옵션을 예시한다. 존재하는 경우, 중지-클러스터 옵션은 능동 복구들의 실행을 취소하지 않고 전체 클러스터(140) 상의 복구가 일시중지되게 한다. 라인들(011-012)은 취소-실행 명령 옵션을 예시한다. 취소-실행은 주어진 콘텐츠 서버(110) 상의 임의의 실행 중인 복구들을 즉시 중단시킨다. 라인들(013-014)은 시작-클러스터 명령 옵션을 예시한다. 시작-클러스터 명령은 클러스터(140) 상의 복구를 재개시킨다.
예를 들어, 명령 "nodetool repairctl --stop-cluster"은 어떠한 능동 복구들도 취소하지 않고 클러스터(140) 상의 복구를 일시중지시킬 것이다. 명령 "nodetool repairctl --start-cluster"은 일시중지된 클러스터(140) 상의 복구를 재개시킬 것이다. 명령 "nodetool repairctl --cancel- execution"은 주어진 콘텐츠 서버(110) 상의 임의의 복구의 실행을 중단시킬 것이다. 그 결과, 남아 있는 콘텐츠 서버들(110)은 복구하기 시작할 것이다. 이러한 명령 옵션은 고착 콘텐츠 서버(110)가 다른 콘텐츠 서버들(110)이 노드 복구를 수행하지 못하도록 하는 것을 중지시킬 것이다. 명령 "nodetool repairctl --stop-cluster --cancel- execution"은 클러스터(140) 상의 복구를 일시중지시키고 주어진 콘텐츠 서버(110) 상의 임의의 복구의 실행을 중단시킬 것이다.
일부 실시예들에서, 안티-엔트로피 복구 절차는 배타적 복구 스케줄들을 지원할 수 있다. 이러한 실시예들에서, 복구들은 특정 기간들 동안에만 개시 및/또는 실행하도록 제약될 수 있다. 예를 들어, 클러스터(140) 내의 각각의 데이터센터는 복구 동작들에 지정된 시간의 지정 범위를 나타내는 "한산한" 시간들을 지정할 수 있다. 현재 시간이 복구 동작들에 지정된 시간의 지정 범위에 속하는 경우, 새로운 안티-엔트로피 복구 절차가 개시될 수 있다. 일반적으로, 본 명세서에 설명된 기술들은 과도한 CPU 리소스들, 메모리, 또는 네트워크 대역폭을 소비하지 않는다. 그렇기는 하지만, 일부 사용자들은 다른 데이터 요청들 및 네트워크 트래픽에 대한 영향을 최소화하기 위해 복구를 한산한 시간들로 제약하기를 원할 수 있다. 다른 실시예들에서, 사용자는 지정된 기간 동안 복구 또는 하나 이상의 복구 후 후크를 보류할 수 있다.
일부 실시예들에서, 안티-엔트로피 복구 절차는 다수의 복구 스케줄을 지원할 수 있다. 이러한 실시예들에서, 복구들은 상이한 유형들일 수 있고 동시에 실행될 수 있다. repair_sequence는 복구 유형에 기반하여 현재 복구에 어떤 복구 유형 및/또는 구성 옵션들을 적용할지를 지정하는 추가 필드를 포함할 수 있다. 일례로서, 전체 복구들 및 증분적 복구들이 지원될 수 있다. 전체 복구에서, 콘텐츠 서버들(110)은 모든 파티션들에 대해 복구를 수행한다. 증분적 복구에서, 콘텐츠 서버들(110)은 변경된 데이터에 대해서만 복구를 수행한다. 따라서, 전체 복구는 달마다 한 번 실행될 수 있는 반면, 증분적 복구는 하루에 한 번 실행될 수 있다. 각각의 증분적 복구는 기입들로 인해 상이한 파티션들을 복구할 것이다. 각각의 전체 복구는 추가적으로 데이터 정정으로 인해 상이한 파티션들을 복구할 것이다. 이들 실시예들에서, 2개의 복구 시퀀스가 동시에 실행될 수 있지만, 상이한 구성들을 가질 수 있다. 그 결과, 주어진 콘텐츠 서버(110)가 주어진 시간에 하나의 노드 복구를 실행하는 한, 전체 복구 및 증분적 복구가 동시에 실행될 수 있다.
일부 실시예들에서, 큰 클러스터(140)에 대한 안티-엔트로피 복구 절차는 매우 동시적인 복구로서 실행될 수 있고, 여기서 2개 이상의 콘텐츠 서버(110)는 본 명세서에서 "드리프트" 또는 "동시" 복구로 지칭되는 동일한 안티-엔트로피 복구 절차에 대한 노드 복구를 동시에 수행할 수 있다. 이러한 실시예들에서, 임의의 범위들을 공유하지 않는 다수의 분리 콘텐츠 서버들(110)은 병행하여 노드 복구를 실행한다. 콘텐츠 서버(110)가 다음 순서인지를 콘텐츠 서버(110)가 결정하는 시점에서, 콘텐츠 서버(110)는 대안적으로 노드 복구로의 진행이 임의의 이웃 콘텐츠 서버들(110)에 부정적으로 영향을 주지 않을 것이라고 결정할 수 있다.
일부 실시예들에서, 콘텐츠 서버(110)는 repair_process 상태 테이블에 대한 로크를 획득할 수 있지만, 다음의 안티-엔트로피 복구 절차를 개시하기 위해 repair_sequence 상태 테이블을 생성하도록 진행하지 못할 수 있다. 이러한 실시예들에서, 클러스터(140) 내의 하나 이상의 다른 콘텐츠 서버(110)는 로크를 획득하려고 시도하는 콘텐츠 서버(110)의 진행을 모니터링할 수 있다. 만일 로크를 획득하려고 시도하는 콘텐츠 서버(110)가 30분과 같은 구성가능한 타임아웃 기간 내에 새로운 repair_sequence 상태 테이블을 생성하지 못하면, 다른 콘텐츠 서버(110)는 다음의 안티-엔트로피 복구 절차를 개시하고 실패한 안티-엔트로피 복구 절차를 취소할 수 있다.
일부 실시예들에서, 콘텐츠 서버(110)는 콘텐츠 서버(110)가 다음 순서이지만 노드 복구를 수행하는데 실패할 수 있다고 결정할 수 있다. 이러한 실시예들에서, 콘텐츠 서버(110)는, 콘텐츠 서버(110)가 노드 복구에서 순방향 진행을 하고 있는 것을 보장하기 위해, repair_sequence 상태 테이블 내의 대응하는 행에 하트비트 메시지들을 계속 생성하고 모니터링할 수 있다. 다른 콘텐츠 서버들(110)은 또한 하트비트 메시지들을 모니터링할 수 있다. 현재 노드 복구를 시도하고 있는 콘텐츠 서버(110)가 30분과 같은 구성가능한 타임아웃 기간 내에 하트비트 메시지를 업데이트하지 않으면, repair_sequence 상태 테이블에서 다음인 다른 콘텐츠 서버(110)는 고착 콘텐츠 서버(110)의 모든 진행 중인 복구들을 취소할 수 있다. 이 콘텐츠 서버(110)는 이후 repair_sequence 상태 테이블에서 CANCELLED로서 고착 콘텐츠 서버(110)의 상태를 마킹하고 노드 복구로 진행한다.
일부 실시예들에서, 주어진 콘텐츠 서버(110)는 노드 복구를 수행할 때 과도한 양의 시간 및 CPU 리소스들을 소비할 수 있거나 노드 복구를 수행할 때 과도한 양의 네트워크 트래픽을 생성할 수 있다. 이러한 문제를 해결하기 위해, 콘텐츠 서버(110)는 콘텐츠 서버(110) 상의 파티션들의 크기 및 수에 적응되는 작업의 부분범위들로 복구 작업을 적응적으로 분할하기 위해 적응적 분할 범위 기능을 수행한다. 부분범위들은, 30분과 같은 구성가능한 타임아웃 기간 내에 각각의 부분범위가 완료되도록 크기가 정해진다. 특정한 부분범위에 대한 복구가 타임아웃 기간을 지정된 양만큼 초과하면, 그 부분범위에 대한 복구는 취소되고 다시 스케줄링될 수 있다.
일부 실시예들에서, 콘텐츠 서버(110)가 노드 복구를 수행하고 있는 동안 데이터베이스가 재시작할 수 있다. 이러한 실시예들에서, 콘텐츠 서버(110)는 일단 데이터베이스가 재시작하면 노드 복구를 재개할 수 있다. 복구의 각각의 부분범위가 30분과 같은 구성가능한 타임아웃 기간 내에 완료되도록 크기가 정해지기 때문에, 데이터베이스의 재시작으로 인해 손실된 작업의 양이 최소화된다. 데이터베이스가 재시작하면, 리셋 이전에 STARTED 상태에 있었던 콘텐츠 서버들(110)은 repair_sequence 상태 테이블에서 CANCELLED 상태로 전이하고 데이터베이스 리셋이 발생했을 때와 동일한 상태 테이블 및/또는 동일한 부분범위에서 복구를 재개한다. 이 프로세스는 노드 복구가 전체적으로 완료되는 것을 보장한다.
일부 실시예들에서, 콘텐츠 서버(110)는 복구 후 후크들을 수행할 때 고착될 수 있다. 일반적으로, 복구들은 완료할 복구 후 후크들의 실패로 인해 지연될 필요가 없다. 따라서, 이 문제는 REPAIR_HOOK_RUNNING 상태에서 콘텐츠 서버들(110)에 적용될 적극적 타임아웃 기간으로 해결될 수 있다. 콘텐츠 서버(110)가 복구 후 후크들을 수행하는데 소비하는 시간의 양이 타임아웃 기간을 초과하는 경우, 콘텐츠 서버(110)는 취소되고 재시작될 수 있다.
일부 실시예들에서, 콘텐츠 서버들(110)은 복구의 실행 동안에 추가될 수 있다. 새로운 콘텐츠 서버들(110)이 현재 복구의 시퀀스에 영향을 주지 않기 때문에, 현재 복구는 기존의 시퀀스로 계속 실행된다. 이어서, 후속 복구는 다음 repair_sequence 상태 테이블에 새로운 콘텐츠 서버들(110)을 추가한다.
일부 실시예들에서, 콘텐츠 서버들(110)은 복구 동안 종료될 수 있거나 이용불가능해질 수 있다. 이러한 실시예들에서, 하나 이상의 콘텐츠 서버(110)는 클러스터(140) 내의 다른 콘텐츠 서버들(110)의 건전성을 모니터링할 수 있다. 주어진 콘텐츠 서버(110)에 대한 부분범위가 30분과 같은 구성가능한 타임아웃 기간 동안 이용가능하지 않은 경우, 콘텐츠 서버(110)의 상태는 FAILED로 설정되고, 복구가 진행된다.
도 3은 본 발명의 다양한 실시예들에 따른, 도 1의 네트워크 인프라스트럭처(100)와 관련하여 구현될 수 있는 제어 서버(120)의 블록도이다. 도시된 바와 같이, 제어 서버(120)는, 제한 없이, 프로세서(304), 시스템 디스크(306), 입력/출력(I/O) 디바이스 인터페이스(308), 네트워크 인터페이스(310), 상호연결부(312), 및 시스템 메모리(314)를 포함한다.
프로세서(304)는 단일 CPU, 다수의 CPU, 다수의 처리 코어를 갖는 단일 CPU 등을 나타내도록 포함되어 있다. 프로세서(304)는 시스템 메모리(314)에 저장된, 제어 애플리케이션(317)과 같은, 프로그래밍 명령어들을 검색 및 실행하도록 구성된다. 유사하게, 프로세서(304)는 애플리케이션 데이터(예를 들어, 소프트웨어 라이브러리들)를 저장하고 애플리케이션 데이터를 시스템 디스크(306)에 저장된 데이터베이스(318) 및 시스템 메모리(314)로부터 검색하도록 구성된다. 상호연결부(312)는 프로세서(304), 시스템 디스크(306), I/O 디바이스 인터페이스(308), 네트워크 인터페이스(310), 및 시스템 메모리(314) 사이의 데이터의 전송을 용이하게 하도록 구성된다. I/O 디바이스 인터페이스(308)는 상호연결부(312)를 통해 I/O 디바이스들(316)과 프로세서(304) 사이에서 입력 데이터 및 출력 데이터를 전송하도록 구성된다. 시스템 디스크(306)는 하나 이상의 하드 디스크 드라이브, 솔리드 스테이트 저장 디바이스 등을 포함할 수 있다. 시스템 디스크(206)는 콘텐츠 서버들(110), 채우기 소스(들)(130), 및 파일들(218)과 연관된 정보의 데이터베이스(318)를 저장하도록 구성된다.
시스템 메모리(314)는 데이터베이스(318)에 저장된 정보에 액세스하고 정보를 처리하여 네트워크 인프라스트럭처(100)에 포함된 콘텐츠 서버들(110)에 걸쳐 특정 파일들(218)이 복제될 방식을 결정하도록 구성된 제어 애플리케이션(317)을 포함한다. 제어 애플리케이션(317)은 콘텐츠 서버들(110) 및/또는 엔드포인트 디바이스들(115) 중 하나 이상과 연관된 성능 특성들을 수신하고 분석하도록 추가로 구성될 수 있다.
도 4는 본 발명의 다양한 실시예들에 따른, 도 1의 네트워크 인프라스트럭처(100)와 관련하여 구현될 수 있는 엔드포인트 디바이스(115)의 블록도이다. 도시된 바와 같이, 엔드포인트 디바이스(115)는, 제한 없이, 프로세서(410), 그래픽 서브시스템(412), I/O 디바이스 인터페이스(414), 대용량 저장 유닛(416), 네트워크 인터페이스(418), 상호연결부(422), 및 메모리 서브시스템(430)을 포함할 수 있다.
프로세서(410)는 단일 CPU, 다수의 CPU, 다수의 처리 코어를 갖는 단일 CPU 등을 나타내도록 포함되어 있다. 일부 실시예들에서, 프로세서(410)는 메모리 서브시스템(430)에 저장된 프로그래밍 명령어들을 검색 및 실행하도록 구성된다. 유사하게, 프로세서(410)는 메모리 서브시스템(430)에 존재하는 애플리케이션 데이터(예를 들어, 소프트웨어 라이브러리들)를 저장 및 검색하도록 구성된다. 상호연결부(422)는 프로세서(410), 그래픽 서브시스템(412), I/O 디바이스 인터페이스(414), 대용량 저장소(416), 네트워크 인터페이스(418) 및 메모리 서브시스템(430) 사이에서 프로그래밍 명령어들 및 애플리케이션 데이터와 같은 데이터의 전송을 용이하게 하도록 구성된다.
일부 실시예들에서, 그래픽 서브시스템(412)은 비디오 데이터의 프레임들을 생성하고 비디오 데이터의 프레임들을 디스플레이 디바이스(450)에 전송하도록 구성된다. 일부 실시예들에서, 그래픽 서브시스템(412)은 프로세서(410)와 함께 집적 회로에 통합될 수 있다. 디스플레이 디바이스(450)는 표시용 이미지를 생성하기 위한 임의의 기술적으로 실현가능한 수단을 포함할 수 있다. 예를 들어, 디스플레이 디바이스(450)는 액정 디스플레이(LCD) 기술, 음극선 기술, 및 발광 다이오드(LED) 디스플레이 기술을 이용하여 제조될 수 있다. 입력/출력(I/O) 디바이스 인터페이스(414)는 사용자 I/O 디바이스들(452)로부터 입력 데이터를 수신하고 상호연결부(422)를 통해 입력 데이터를 프로세서(410)에 전송하도록 구성된다. 예를 들어, 사용자 I/O 디바이스들(452)은 하나 이상의 버튼, 키보드, 및 마우스 또는 다른 포인팅 디바이스를 포함할 수 있다. I/O 디바이스 인터페이스(414)는 또한 전기 오디오 출력 신호를 생성하도록 구성된 오디오 출력 유닛을 포함한다. 사용자 I/O 디바이스들(452)은 전기 오디오 출력 신호에 응답하여 음향 출력을 생성하도록 구성된 스피커를 포함한다. 대안적인 실시예들에서, 디스플레이 디바이스(450)는 스피커를 포함할 수 있다. 텔레비전은, 비디오 프레임들을 표시하고 음향 출력을 생성할 수 있는, 본 기술분야에 알려져 있는 디바이스의 예이다.
하드 디스크 드라이브 또는 플래시 메모리 저장 드라이브와 같은 대용량 저장 유닛(416)은 비휘발성 데이터를 저장하도록 구성된다. 네트워크 인터페이스(418)는 네트워크(105)를 통해 데이터의 패킷들을 전송 및 수신하도록 구성된다. 일부 실시예들에서, 네트워크 인터페이스(418)는 잘 알려져 있는 이더넷 표준을 이용하여 통신하도록 구성된다. 네트워크 인터페이스(418)는 상호연결부(422)를 통해 프로세서(410)에 결합된다.
일부 실시예들에서, 메모리 서브시스템(430)은 운영 체제(432), 사용자 인터페이스(434), 및 재생 애플리케이션(436)을 포함하는 프로그래밍 명령어들 및 애플리케이션 데이터를 포함한다. 운영 체제(432)는 네트워크 인터페이스(418), 대용량 저장 유닛(416), I/O 디바이스 인터페이스(414), 및 그래픽 서브시스템(412)을 포함하는 하드웨어 디바이스들을 관리하는 것과 같은 시스템 관리 기능들을 수행한다. 운영 체제(432)는 또한 사용자 인터페이스(434) 및 재생 애플리케이션(436)에 대한 프로세스 및 메모리 관리 모델들을 제공한다. 윈도우 및 오브젝트 메타포(metaphor)와 같은 사용자 인터페이스(434)는 엔드포인트 디바이스(108)와의 사용자 상호작용을 위한 메커니즘을 제공한다. 관련 기술분야의 통상의 기술자는 본 기술분야에 잘 알려져 있고 엔드포인트 디바이스(108)에의 통합에 적절한 다양한 운영 체제들 및 사용자 인터페이스들을 인식할 것이다.
일부 실시예들에서, 재생 애플리케이션(436)은 네트워크 인터페이스(418)를 통해 콘텐츠 서버(105)로부터 콘텐츠를 요청 및 수신하도록 구성된다. 추가로, 재생 애플리케이션(436)은 콘텐츠를 해석하고 디스플레이 디바이스(450) 및/또는 사용자 I/O 디바이스들(452)을 통해 콘텐츠를 제시하도록 구성된다.
도 5a 및 도 5b는 본 발명의 다양한 실시예들에 따른, 분산형 데이터베이스 네트워크에서 복수의 콘텐츠 서버(110)에 걸쳐 분산형 안티-엔트로피 복구 절차들을 수행하기 위한 방법의 단계들의 흐름도를 제시한다. 이 방법의 단계들이 도 1 내지 도 4의 시스템들과 관련하여 설명되었지만, 관련 기술분야의 통상의 기술자라면, 이 방법의 단계들을 임의의 순서로 수행하도록 구성된 임의의 시스템이 본 발명의 범위 내에 있다는 것을 이해할 것이다.
도시된 바와 같이, 방법(500)은 단계(502)에서 시작하며, 여기서 콘텐츠 서버(110) 상에서 실행되는 복구 애플리케이션(219)은 현재 진행 중인 안티-엔트로피 복구 절차가 존재하는지를 결정한다. 보다 구체적으로, 복구 애플리케이션(219)은 클러스터 폭 repair_process 상태 테이블을 판독하여 가장 최근의 안티-엔트로피 복구 절차가 완료 또는 진행 중인 상태를 나타내는지를 결정한다.
안티-엔트로피 복구 절차가 현재 진행 중인 경우, 방법(500)은 단계(504)로 진행하고, 여기서 복구 애플리케이션(219)은 repair_sequence 상태 테이블에 의해 표시된 바와 같이, 콘텐츠 서버(110)가 복구를 수행할 다음 순서인지를 결정한다. repair_sequence 상태 테이블에 도시된 모든 이전 콘텐츠 서버들(110)이 FAILED 또는 FINISHED 중 어느 하나의 상태를 갖는다면, 콘텐츠 서버(110)는 다음 순서이다. 이러한 경우들에, 방법(500)은 단계(506)로 진행하고, 여기서 복구 애플리케이션(219)은 콘텐츠 서버(110)에 저장된 파티션들에 대해 복구를 수행한다. 보다 구체적으로, 복구 애플리케이션(219)은 콘텐츠 서버(110)에 저장된 각각의 파티션에 대해 복구를 수행한다. 파티션이 다수의 부분범위로 분할되었다면, 복구 애플리케이션(219)은 한 번에 하나의 부분범위에 대해 복구를 수행한다. 복구 애플리케이션(219)이 콘텐츠 서버(110)에 저장된 모든 파티션들 및 부분범위들에 대한 복구를 완료한 후에, 방법(500)은 종료한다.
그러나, 단계(504)에서 콘텐츠 서버(110)가 다음 순서가 아니라면, 방법은 단계(508)로 진행하고, 여기서 복구 애플리케이션(219)은 현재 콘텐츠 서버(110) 및 현재 콘텐츠 서버(110)의 모든 이웃 콘텐츠 서버들(110)이 각각의 복구들을 완료했는지를 결정한다. 현재 콘텐츠 서버(110) 또는 현재 콘텐츠 서버(110)의 적어도 하나의 이웃 콘텐츠 서버(110)가 복구들을 완료하지 않은 경우, 방법은 종료한다. 그러나, 현재 콘텐츠 서버(110) 및 모든 이웃 콘텐츠 서버들(110)이 각각의 복구들을 완료했다면, 방법(500)은 단계(510)로 진행하고, 여기서 복구 애플리케이션(219)은 복구 후 후크들을 실행한다. 본 명세서에서 더 설명되는 바와 같이, 이러한 복구 후 후크들은, 클린업 및/또는 압축 동작들뿐만 아니라 현재 콘텐츠 서버(110)가 복구를 완료했다는 통지를 모니터링 애플리케이션에 전송하는 것과 같은 다른 유지 작업들을 수행한다. 이어서, 방법(500)은 종료한다.
단계(502)로 돌아가서, 안티-엔트로피 복구 절차가 현재 진행 중이지 않은 경우, 방법(500)은 단계(512)로 진행하고, 여기서 복구 애플리케이션(219)은 새로운 안티-엔트로피 복구 절차가 시작할 준비가 되어 있는지를 결정한다. 특히, 복구 애플리케이션(219)은 2개의 연속적인 안티-엔트로피 복구 절차 간의 최소 시간 간격 또는 안티-엔트로피 복구 절차들을 한가한 시간들로 제한하기 위한 시각 제약과 같은 새로운 안티-엔트로피 복구 절차를 개시하는 것에 대한 추가 제약들이 없다고 결정한다. 새로운 안티-엔트로피 복구 절차가 시작할 준비가 되지 않은 경우, 방법(500)은 종료한다. 그러나, 새로운 안티-엔트로피 복구 절차가 시작할 준비가 되면, 방법은 단계(514)로 진행하고, 여기서 복구 애플리케이션(219)은 repair_process 상태 테이블에 대한 로크를 획득하려고 시도한다. 복구 애플리케이션(219)이 repair_process 상태 테이블에 대한 로크를 획득하는데 성공적이지 않았다면, 방법(500)은 종료한다. 그러나, 복구 애플리케이션(219)이 repair_process 상태 테이블에 대한 로크를 획득하는데 성공적이었다면, 방법(500)은 단계(518)로 진행하고, 여기서 복구 애플리케이션(219)은 다음의 안티-엔트로피 복구 절차에 대한 repair_sequence 상태 테이블을 생성한다. 복구 애플리케이션(219)은 배치 동작에서 repair_sequence 상태 테이블을 저장한다. 이어서, 방법(500)은 종료한다.
또한, 본 명세서에서 더 설명되는 바와 같이, 클러스터(140) 내의 각각의 콘텐츠 서버(110)는 방법(500)의 단계들을 주기적으로, 예컨대 2분마다 한 번씩 수행한다.
요컨대, 안티-엔트로피 복구 절차는 분산형 데이터베이스 네트워크에서 노드들에 걸쳐 실행되며, 여기서 어떠한 노드도 안티-엔트로피 복구 조정기로서 미리 지정되지 않는다. 각각의 노드는 주기적으로 기술을 수행하고, 여기서 노드는 먼저 안티-엔트로피 복구 절차가 진행 중인지를 결정한다. 안티-엔트로피 복구 절차가 진행 중인 경우, 노드는 그 노드가 복구를 수행할 다음 순서인지를 결정한다. 노드가 다음 순서이면, 그 노드는 복제본들 및 연관된 상태 테이블들을 복구하고 종료한다. 노드가 다음 순서가 아니라면, 노드는 그 노드에 관련된 복구 후 절차들을 수행하도록 그 노드가 허용되는지를 결정한다. 그 노드가 허용되면, 그 노드는 복구 후 절차들을 수행하고 종료한다. 그렇지 않다면, 그 노드는 복구 후 절차들을 수행하지 않고 종료한다.
한편, 노드가 안티-엔트로피 복구 절차가 진행 중이지 않다고 결정하면, 그 노드는 새로운 안티-엔트로피 복구 절차가 개시되어야 하는지를 결정한다. 새로운 안티-엔트로피 복구가 개시되지 않아야 하는 경우, 노드가 종료한다. 그렇지 않다면, 노드는 새로운 안티-엔트로피 복구 절차를 개시하려고 시도하고, 성공적이면, 노드들이 새로운 안티-엔트로피 복구 절차에 관련된 노드 복구들을 수행하는 시퀀스 순서를 정의하는 새로운 시퀀스를 생성한다. 그 다음, 노드는 종료한다.
종래 기술에 대한 개시된 기술들의 적어도 하나의 기술적 이점은, 안티-엔트로피 복구 절차들이 분산형 데이터베이스 네트워크에서 노드들의 수 및 복제본들의 변화된 크기로 자동으로 스케일링한다는 것이다. 그 결과, 안티-엔트로피 복구 절차는 종래의 기술들에 비해 디스크 액세스, CPU 리소스들, 및 소비되는 네트워크 대역폭의 양을 감소시키기 위해 특정 노드에 저장된 데이터의 각각의 서브세트에 적응한다. 또한, 사용자들은 시간의 경과에 따라 노드들의 수 및 복제본들의 크기가 변경되더라도 안티-엔트로피 복구 절차들을 수동으로 조작 및 유지하지 않아도 된다. 종래 기술에 대한 개시된 기술들의 다른 기술적 이점은 안티-엔트로피 복구 절차가 노드들에 걸쳐 분산되어 있다는 것이다. 또한, 실패한 노드들이 실행을 재개하면, 안티-엔트로피 복구 절차는 실패가 발생했을 때와 비교적 동일한 조건에서 재개될 수 있다. 그 결과, 종래 기술의 접근법들에 비해, 하나 이상의 다른 노드가 복구 동안 실패할 때, 복구 진행 손실이 더 적거나 없다. 이러한 기술적 이점들은 종래 기술의 접근법들에 비해 하나 이상의 기술적 개선을 나타낸다.
1. 일부 실시예들에서, 컴퓨터에 의해 구현되는 방법은, 복수의 노드에 포함된 제1 노드에 의해 그리고 복수의 노드에 포함된 모든 다른 노드들에 앞서, 제1 안티-엔트로피 복구 절차가 종료된 것으로 결정하는 단계; 제1 노드에 의해, 제2 안티-엔트로피 복구 절차가 시작할 준비가 된 것으로 결정하는 단계; 제2 안티-엔트로피 복구 절차와 연관된 하나 이상의 동작을 실행하기 위한 스케줄을 생성하는 단계; 및 복수의 노드에 포함된 다수의 노드에 걸쳐 제2 안티-엔트로피 복구 절차를 개시하기 위해 스케줄을 공유된 복구 스케줄 데이터 구조에 기입하는 단계를 포함한다.
2. 1항에 있어서, 제2 안티-엔트로피 복구 절차가 시작할 준비가 된 것으로 결정하는 단계는 현재 시간이 복구 동작들에 지정된 시간의 지정 범위 내에 있다고 결정하는 단계를 포함한다.
3. 1항 또는 2항에 있어서, 복수의 노드에 포함된 제2 노드에 의해, 제3 안티-엔트로피 복구 절차가 시작할 준비가 된 것으로 결정하는 단계; 제3 안티-엔트로피 복구 절차와 연관된 하나 이상의 동작을 실행하기 위한 스케줄을 생성하는 단계; 및 복수의 노드에 포함된 다수의 노드에 걸쳐 제3 안티-엔트로피 복구 절차를 개시하기 위해 스케줄을 제2 공유된 복구 스케줄 데이터 구조에 기입하는 단계를 더 포함한다.
4. 1항 내지 3항 중 어느 한 항에 있어서, 제2 안티-엔트로피 복구 절차는 전체 안티-엔트로피 복구 절차를 포함하고, 제3 안티-엔트로피 복구 절차는 증분적 안티-엔트로피 복구 절차를 포함하고, 제3 안티-엔트로피 복구 절차가 시작할 준비가 된 것으로 결정하는 단계는 증분적 복구를 포함하는 제4 안티-엔트로피 복구 절차가 종료되었다고 결정하는 단계를 포함한다.
5. 1항 내지 4항 중 어느 한 항에 있어서, 복수의 노드에 포함된 제2 노드에 의해, 제2 안티-엔트로피 복구 절차가 진행 중인 것으로 결정하는 단계; 제2 노드가 복구될 다음 순서인 것으로 결정하는 단계; 및 제2 노드 상에 존재하는 적어도 하나의 불일치 데이터 파티션을 복구하는 단계를 더 포함한다.
6. 1항 내지 5항 중 어느 한 항에 있어서, 복수의 노드에 포함된 제2 노드에 의해, 제2 안티-엔트로피 복구 절차가 진행 중인 것으로 결정하는 단계; 제2 노드가 제2 안티-엔트로피 복구 절차와 연관된 복구를 현재 수행하고 있는 복수의 노드에 포함된 모든 다른 노드들과 독립적인 것으로 결정하는 단계; 및 제2 노드 상에 존재하는 적어도 하나의 불일치 데이터 파티션을 복구하는 단계를 더 포함한다.
7. 1항 내지 6항 중 어느 한 항에 있어서, 복수의 노드에 포함된 제2 노드에 의해, 제2 안티-엔트로피 복구 절차가 진행 중인 것으로 결정하는 단계; 제2 노드가 제2 안티-엔트로피 복구 절차와 연관된 복구를 수행하였다고 결정하는 단계; 제2 노드와 상호의존하는 복수의 노드에 포함된 모든 다른 노드들이 제2 안티-엔트로피 복구 절차와 연관된 복구를 수행하였다고 결정하는 단계; 및 제2 노드에 의해, 제2 안티-엔트로피 복구 절차와 연관된 복구 후 절차를 수행하는 단계를 더 포함한다.
8. 1항 내지 7항 중 어느 한 항에 있어서, 복구 후 절차를 수행하는 단계는 제2 안티-엔트로피 복구 절차가 완료된 후에 더 이상 필요하지 않은 파티션을 삭제하는 단계를 포함한다.
9. 1항 내지 8항 중 어느 한 항에 있어서, 복구 후 절차를 수행하는 단계는 하나 이상의 파티션에 액세스할 때 레이턴시를 감소시키기 위해 제2 노드와 연관된 하나 이상의 파티션에 대해 압축 동작을 수행하는 단계를 포함한다.
10. 1항 내지 9항 중 어느 한 항에 있어서, 복구 후 절차를 수행하는 단계는 제2 노드가 제2 안티-엔트로피 복구 절차와 연관된 복구를 수행했다는 것을 나타내는 메시지를 모니터링 애플리케이션에 전송하는 단계를 포함한다.
11. 1항 내지 10항 중 어느 한 항에 있어서, 제2 안티-엔트로피 복구 절차와 연관된 파티션들의 수가 임계 레벨을 초과하는 것으로 결정하는 단계; 및 제2 안티-엔트로피 복구 절차와 연관된 작업을 복수의 부분범위로 분할하는 단계를 더 포함한다.
12. 1항 내지 11항 중 어느 한 항에 있어서, 제2 안티-엔트로피 복구 절차와 연관된 하나 이상의 파티션의 크기가 임계 레벨을 초과하는 것으로 결정하는 단계; 및 제2 안티-엔트로피 복구 절차와 연관된 작업을 복수의 부분범위로 분할하는 단계를 더 포함한다.
13. 1항 내지 12항 중 어느 한 항에 있어서, 제2 안티-엔트로피 복구 절차에 대한 완료 시간이 임계 레벨을 초과하는 것으로 결정하는 단계; 및 완료 시간에 기반하여 제2 안티-엔트로피 복구 절차와 연관된 작업을 복수의 부분범위로 분할하는 단계를 더 포함한다.
14. 일부 실시예들에서, 하나 이상의 비일시적 컴퓨터 판독가능한 저장 매체는 명령어들을 포함하며, 명령어들은 하나 이상의 프로세서에 의해 실행될 때, 하나 이상의 프로세서로 하여금, 제1 안티-엔트로피 복구 절차가 종료된 것으로 결정하는 단계; 복수의 노드에 포함된 제1 노드에 의해 그리고 복수의 노드에 포함된 모든 다른 노드들에 앞서, 제2 안티-엔트로피 복구 절차가 시작할 준비가 된 것으로 결정하는 단계; 제2 안티-엔트로피 복구 절차와 연관된 동작들을 실행하기 위한 스케줄을 생성하는 단계; 및 복수의 노드에 포함된 다수의 노드에 걸쳐 제2 안티-엔트로피 복구 절차를 개시하기 위해 스케줄을 공유된 복구 스케줄 데이터 구조에 기입하는 단계를 수행하게 한다.
15. 14항에 있어서, 제2 안티-엔트로피 복구 절차가 시작할 준비가 된 것으로 결정하는 단계는 현재 시간이 복구 동작들에 지정된 시간의 지정 범위 내에 있다고 결정하는 단계를 포함한다.
16. 14항 또는 15항에 있어서, 복수의 노드에 포함된 각각의 노드는 제2 안티-엔트로피 복구 절차와 연관된 복구를 순차적으로 수행한다.
17. 14항 내지 16항 중 어느 한 항에 있어서, 복수의 노드에 포함된 노드들의 제1 서브세트에 포함된 각각의 노드는 제2 안티-엔트로피 복구 절차와 연관된 복구를 서로 병행하여 수행하고; 복수의 노드에 포함된 노드들의 제2 서브세트에 포함된 각각의 노드는 제2 안티-엔트로피 복구 절차와 연관된 복구를 서로 병행하여 수행하고; 노드들의 제1 서브세트에 포함된 노드들은 노드들의 제2 서브세트에 포함된 노드들에 순차적으로 제2 안티-엔트로피 복구 절차와 연관된 복구를 수행한다.
18. 14항 내지 17항 중 어느 한 항에 있어서, 복수의 노드에 포함된 각각의 노드는 제2 안티-엔트로피 복구 절차와 연관된 복구를 서로 병행하여 수행한다.
19. 일부 실시예들에서, 컴퓨팅 디바이스는 명령어들을 포함하는 메모리; 및 메모리에 결합되는 프로세서를 포함하며, 프로세서는, 명령어들을 실행할 때, 제1 안티-엔트로피 복구 절차가 종료된 것으로 결정하고; 복수의 노드에 포함된 제1 노드에 의해 그리고 복수의 노드에 포함된 모든 다른 노드들에 앞서, 제2 안티-엔트로피 복구 절차가 시작할 준비가 된 것으로 결정하고; 제2 안티-엔트로피 복구 절차와 연관된 복구 스케줄을 생성하고; 복수의 노드에 포함된 다수의 노드에 걸쳐 제2 안티-엔트로피 복구 절차를 개시하기 위해 복구 스케줄을 데이터 저장소에 기입하도록 구성된다.
20. 19항에 있어서, 프로세서는, 명령어들을 실행할 때, 복수의 노드에 포함된 제2 노드에서, 제2 안티-엔트로피 복구 절차와 연관된 복구를 수행하기 위한 처리 코어들의 수를 할당하도록 추가로 구성되고, 처리 코어들의 수는 제2 노드 내의 이용가능한 프로세서 코어들의 수의 최대 1/2이다.
임의의 청구항에 기재된 임의의 청구항 요소 및/또는 본 출원에서 설명된 임의의 요소들의 임의의 조합 및 모든 조합들은 임의의 방식으로 본 발명 및 보호의 고려 범위 내에 속한다.
다양한 실시예들에 대한 설명들은 예시의 목적들로 제시되었지만, 포괄적인 것으로 의도되거나 개시된 실시예들로 제한되지는 않는다. 설명된 실시예들의 범위 및 사상을 벗어나지 않고 관련 기술분야의 통상의 기술자에게 많은 수정들 및 변형들이 명백할 것이다.
본 실시예들의 양태들은 시스템, 방법 또는 컴퓨터 프로그램 제품으로서 구현될 수 있다. 따라서, 본 개시내용의 양태들은 전적으로 하드웨어 실시예, 전적으로 소프트웨어 실시예(펌웨어, 존재 소프트웨어, 마이크로코드 등을 포함함) 또는 본 명세서에서 모두 일반적으로 "모듈" 또는 "시스템"으로 지칭될 수 있는 소프트웨어 및 하드웨어 양태들을 조합한 실시예의 형태를 취할 수 있다. 또한, 본 개시내용의 양태들은 컴퓨터 판독가능한 프로그램 코드가 구현된 하나 이상의 컴퓨터 판독가능한 매체(들)에 구현된 컴퓨터 프로그램 제품의 형태를 취할 수 있다.
하나 이상의 컴퓨터 판독가능한 매체(들)의 임의의 조합이 이용될 수 있다. 컴퓨터 판독가능한 매체는 컴퓨터 판독가능한 신호 매체 또는 컴퓨터 판독가능한 저장 매체일 수 있다. 컴퓨터 판독가능한 저장 매체는 예를 들어 전자, 자기, 광학, 전자기, 적외선 또는 반도체 시스템, 장치 또는 디바이스, 또는 이들의 임의의 적절한 조합일 수 있지만, 이에 제한되는 것은 아니다. 컴퓨터 판독가능한 저장 매체의 보다 구체적인 예들(비-포괄적인 리스트)은 하나 이상의 와이어를 갖는 전기적 접속, 휴대용 컴퓨터 디스켓, 하드 디스크, 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 소거 및 프로그래밍 가능 판독 전용 메모리(EPROM 또는 플래시 메모리), 광섬유, 휴대용 컴팩트 디스크 판독 전용 메모리(CD-ROM), 광학 저장 디바이스, 자기 저장 디바이스 또는 이들의 임의의 적절한 조합을 포함할 것이다. 본 문헌과 관련하여, 컴퓨터 판독가능한 저장 매체는 명령어 실행 시스템, 장치 또는 디바이스에 의해 또는 이와 관련하여 이용하기 위한 프로그램을 포함하거나 저장할 수 있는 임의의 유형적인 매체일 수 있다.
본 개시내용의 양태들은 본 개시내용의 실시예들에 따른 방법들, 장치들(시스템들) 및 컴퓨터 프로그램 제품들의 흐름도들 및/또는 블록도들을 참조하여 위에서 설명되었다. 흐름도들 및/또는 블록도들의 각각의 블록, 및 흐름도들 및/또는 블록도들 내의 블록들의 조합들은 컴퓨터 프로그램 명령어들에 의해 구현될 수 있다는 것을 이해할 것이다. 이들 컴퓨터 프로그램 명령어들은 범용 컴퓨터, 특수 목적 컴퓨터 또는 다른 프로그래밍 가능 데이터 처리 장치의 프로세서에 제공되어 기계를 생성할 수 있으며, 컴퓨터 또는 다른 프로그래밍 가능 데이터 처리 장치의 프로세서를 통해 실행되는 명령어들은 흐름도 및/또는 블록도의 블록 또는 블록들에서 지정된 기능들/동작들의 구현을 가능하게 한다. 이러한 프로세서들은 범용 프로세서들, 특수 목적 프로세서들, 주문형 프로세서들, 또는 필드 프로그래밍 가능일 수 있지만, 이에 제한되지는 않는다.
도면들 내의 흐름도들 및 블록도들은 본 개시내용의 다양한 실시예들에 따른 시스템들, 방법들 및 컴퓨터 프로그램 제품들의 가능한 구현들의 아키텍처, 기능 및 동작을 도시한다. 이와 관련하여, 흐름도들 또는 블록도들 내의 각각의 블록은 지정된 논리적 기능(들)을 구현하기 위한 하나 이상의 실행가능한 명령어를 포함하는 모듈, 세그먼트 또는 코드 부분을 나타낼 수 있다. 또한, 일부 대안 구현들에서, 그 블록에서 언급된 기능들이 도면들에서 언급된 순서와 다르게 발생할 수 있음에 유의해야 한다. 예를 들어, 연속적으로 도시된 2개의 블록은 사실상 실질적으로 동시에 실행될 수 있거나, 또는 그 블록들은 관련된 기능에 따라 때때로 역순으로 실행될 수 있다. 또한, 블록도들 및/또는 흐름도의 각각의 블록, 및 블록도들 및/또는 흐름도 내의 블록들의 조합들은 지정된 기능들 또는 동작들을 수행하는 특수 목적 하드웨어 기반 시스템들, 또는 특수 목적 하드웨어 및 컴퓨터 명령어들의 조합들에 의해 구현될 수 있다는 점에 유의할 것이다.
전술한 내용은 본 개시내용의 실시예들에 관한 것이지만, 본 개시내용의 다른 실시예들 및 추가 실시예들은 본 개시내용의 기본 범위를 벗어나지 않고 안출될 수 있으며, 그 범위는 다음의 청구항들에 의해 결정된다.

Claims (20)

  1. 컴퓨터에 의해 구현되는 방법으로서,
    복수의 노드에 포함된 제1 노드에 의해 그리고 상기 복수의 노드에 포함된 모든 다른 노드들에 앞서, 제1 안티-엔트로피 복구 절차(anti-entropy repair procedure)가 종료된 것으로 결정하는 단계;
    상기 제1 노드에 의해, 제2 안티-엔트로피 복구 절차가 시작할 준비가 된 것으로 결정하는 단계;
    상기 제2 안티-엔트로피 복구 절차와 연관된 하나 이상의 동작을 실행하기 위한 제1 스케줄을 생성하는 단계 - 상기 제1 스케줄은 상기 제2 안티-엔트로피 복구 절차 동안 상기 복수의 노드에 포함된 다수의 노드에 의해 하나 이상의 노드 복구가 수행되는 시퀀스를 포함함 -; 및
    상기 복수의 노드에 포함된 상기 다수의 노드에 걸쳐 상기 제2 안티-엔트로피 복구 절차를 개시하기 위해 상기 제1 스케줄을 공유된 복구 스케줄 데이터 구조에 기입하는 단계
    를 포함하는, 컴퓨터에 의해 구현되는 방법.
  2. 제1항에 있어서,
    상기 제2 안티-엔트로피 복구 절차가 시작할 준비가 된 것으로 결정하는 단계는 현재 시간이 복구 동작들에 지정된 시간의 지정 범위 내에 있다고 결정하는 단계를 포함하는, 컴퓨터에 의해 구현되는 방법.
  3. 제1항에 있어서,
    상기 복수의 노드에 포함된 제2 노드에 의해, 제3 안티-엔트로피 복구 절차가 시작할 준비가 된 것으로 결정하는 단계;
    상기 제3 안티-엔트로피 복구 절차와 연관된 하나 이상의 동작을 실행하기 위한 제2 스케줄을 생성하는 단계; 및
    상기 복수의 노드에 포함된 다수의 노드에 걸쳐 상기 제3 안티-엔트로피 복구 절차를 개시하기 위해 상기 제2 스케줄을 제2 공유된 복구 스케줄 데이터 구조에 기입하는 단계
    를 더 포함하는, 컴퓨터에 의해 구현되는 방법.
  4. 제3항에 있어서,
    상기 제2 안티-엔트로피 복구 절차는 전체 안티-엔트로피 복구 절차를 포함하고,
    상기 제3 안티-엔트로피 복구 절차는 증분적 안티-엔트로피 복구 절차를 포함하고,
    상기 제3 안티-엔트로피 복구 절차가 시작할 준비가 된 것으로 결정하는 단계는 증분적 복구를 포함하는 제4 안티-엔트로피 복구 절차가 종료되었다고 결정하는 단계를 포함하는, 컴퓨터에 의해 구현되는 방법.
  5. 제1항에 있어서,
    상기 복수의 노드에 포함된 제2 노드에 의해, 상기 제2 안티-엔트로피 복구 절차가 진행 중인 것으로 결정하는 단계;
    상기 제2 노드가 복구될 상기 시퀀스에서 다음인 것으로 결정하는 단계; 및
    상기 제2 노드 상에 존재하는 적어도 하나의 불일치 데이터 파티션을 복구하는 단계
    를 더 포함하는, 컴퓨터에 의해 구현되는 방법.
  6. 제1항에 있어서,
    상기 복수의 노드에 포함된 제2 노드에 의해, 상기 제2 안티-엔트로피 복구 절차가 진행 중인 것으로 결정하는 단계;
    상기 제2 노드가 상기 제2 안티-엔트로피 복구 절차와 연관된 노드 복구를 현재 수행하고 있는 상기 복수의 노드에 포함된 모든 다른 노드들과 독립적인 것으로 결정하는 단계; 및
    상기 제2 노드 상에 존재하는 적어도 하나의 불일치 데이터 파티션을 복구하는 단계
    를 더 포함하는, 컴퓨터에 의해 구현되는 방법.
  7. 제1항에 있어서,
    상기 복수의 노드에 포함된 제2 노드에 의해, 상기 제2 안티-엔트로피 복구 절차가 진행 중인 것으로 결정하는 단계;
    상기 제2 노드가 상기 제2 안티-엔트로피 복구 절차와 연관된 노드 복구를 수행하였다고 결정하는 단계;
    상기 제2 노드와 상호의존하는 상기 복수의 노드에 포함된 모든 다른 노드들이 상기 제2 안티-엔트로피 복구 절차와 연관된 하나 이상의 추가적인 노드 복구를 수행하였다고 결정하는 단계; 및
    상기 제2 노드에 의해, 상기 제2 안티-엔트로피 복구 절차와 연관된 복구 후 절차를 수행하는 단계
    를 더 포함하는, 컴퓨터에 의해 구현되는 방법.
  8. 제7항에 있어서,
    상기 복구 후 절차를 수행하는 단계는 상기 제2 안티-엔트로피 복구 절차가 완료된 후에 더 이상 필요하지 않은 파티션을 삭제하는 단계를 포함하는, 컴퓨터에 의해 구현되는 방법.
  9. 제7항에 있어서,
    상기 복구 후 절차를 수행하는 단계는 하나 이상의 파티션에 액세스할 때 레이턴시를 감소시키기 위해 상기 제2 노드와 연관된 상기 하나 이상의 파티션에 대해 압축 동작을 수행하는 단계를 포함하는, 컴퓨터에 의해 구현되는 방법.
  10. 제7항에 있어서,
    상기 복구 후 절차를 수행하는 단계는 상기 제2 노드가 상기 제2 안티-엔트로피 복구 절차와 연관된 상기 노드 복구를 수행했다는 것을 나타내는 메시지를 모니터링 애플리케이션에 전송하는 단계를 포함하는, 컴퓨터에 의해 구현되는 방법.
  11. 제1항에 있어서,
    상기 제2 안티-엔트로피 복구 절차와 연관된 파티션들의 수가 임계 레벨을 초과하는 것으로 결정하는 단계; 및
    상기 제2 안티-엔트로피 복구 절차와 연관된 작업을 복수의 부분범위로 분할하는 단계
    를 더 포함하는, 컴퓨터에 의해 구현되는 방법.
  12. 제1항에 있어서,
    상기 제2 안티-엔트로피 복구 절차와 연관된 하나 이상의 파티션의 크기가 임계 레벨을 초과하는 것으로 결정하는 단계; 및
    상기 제2 안티-엔트로피 복구 절차와 연관된 작업을 복수의 부분범위로 분할하는 단계
    를 더 포함하는, 컴퓨터에 의해 구현되는 방법.
  13. 제1항에 있어서,
    상기 제2 안티-엔트로피 복구 절차에 대한 완료 시간이 임계 레벨을 초과하는 것으로 결정하는 단계; 및
    상기 완료 시간에 기반하여 상기 제2 안티-엔트로피 복구 절차와 연관된 작업을 복수의 부분범위로 분할하는 단계
    를 더 포함하는, 컴퓨터에 의해 구현되는 방법.
  14. 명령어들을 포함하는 하나 이상의 비일시적 컴퓨터 판독가능한 저장 매체로서,
    상기 명령어들은 하나 이상의 프로세서에 의해 실행될 때, 상기 하나 이상의 프로세서로 하여금,
    제1 안티-엔트로피 복구 절차가 종료된 것으로 결정하는 단계;
    복수의 노드에 포함된 제1 노드에 의해 그리고 상기 복수의 노드에 포함된 모든 다른 노드들에 앞서, 제2 안티-엔트로피 복구 절차가 시작할 준비가 된 것으로 결정하는 단계;
    상기 제2 안티-엔트로피 복구 절차와 연관된 동작들을 실행하기 위한 스케줄을 생성하는 단계 - 상기 스케줄은 상기 제2 안티-엔트로피 복구 절차 동안 상기 복수의 노드에 포함된 다수의 노드에 의해 하나 이상의 노드 복구가 수행되는 시퀀스를 포함함 -; 및
    상기 복수의 노드에 포함된 다수의 노드에 걸쳐 상기 제2 안티-엔트로피 복구 절차를 개시하기 위해 상기 스케줄을 공유된 복구 스케줄 데이터 구조에 기입하는 단계
    를 수행하게 하는, 하나 이상의 비일시적 컴퓨터 판독가능한 저장 매체.
  15. 컴퓨팅 디바이스로서,
    명령어들을 포함하는 메모리; 및
    상기 메모리에 결합되는 프로세서
    를 포함하며,
    상기 프로세서는, 상기 명령어들을 실행할 때,
    제1 안티-엔트로피 복구 절차가 종료된 것으로 결정하고;
    복수의 노드에 포함된 제1 노드에 의해 그리고 상기 복수의 노드에 포함된 모든 다른 노드들에 앞서, 제2 안티-엔트로피 복구 절차가 시작할 준비가 된 것으로 결정하고;
    상기 제2 안티-엔트로피 복구 절차와 연관된 복구 스케줄을 생성하고 - 상기 복구 스케줄은 상기 제2 안티-엔트로피 복구 절차 동안 상기 복수의 노드에 포함된 다수의 노드에 의해 하나 이상의 노드 복구가 수행되는 시퀀스를 포함함 -;
    상기 복수의 노드에 포함된 다수의 노드에 걸쳐 상기 제2 안티-엔트로피 복구 절차를 개시하기 위해 상기 복구 스케줄을 데이터 저장소에 기입하도록 구성되는, 컴퓨팅 디바이스.
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
KR1020207030597A 2018-03-27 2019-03-27 스케줄링된 안티-엔트로피 복구 설계를 위한 기술들 KR102509256B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201862648907P 2018-03-27 2018-03-27
US62/648,907 2018-03-27
PCT/US2019/024417 WO2019191320A1 (en) 2018-03-27 2019-03-27 Techniques for scheduled anti-entropy repair design

Publications (2)

Publication Number Publication Date
KR20200131899A KR20200131899A (ko) 2020-11-24
KR102509256B1 true KR102509256B1 (ko) 2023-03-14

Family

ID=66103054

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207030597A KR102509256B1 (ko) 2018-03-27 2019-03-27 스케줄링된 안티-엔트로피 복구 설계를 위한 기술들

Country Status (11)

Country Link
US (2) US11119845B2 (ko)
EP (1) EP3776198A1 (ko)
JP (1) JP7191493B2 (ko)
KR (1) KR102509256B1 (ko)
CN (1) CN112219189B (ko)
AU (1) AU2019244116B2 (ko)
BR (1) BR112020019697A2 (ko)
CA (1) CA3095033C (ko)
MX (1) MX2020010009A (ko)
SG (1) SG11202009391UA (ko)
WO (1) WO2019191320A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210303633A1 (en) * 2020-03-30 2021-09-30 International Business Machines Corporation Shard hashing
DE102023102529B4 (de) 2023-02-02 2024-08-29 Deutsches Zentrum für Luft- und Raumfahrt e.V. Verfahren zur Übertragung eines Prüfvektors von einer Sendeeinheit an eine Empfangseinheit

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030221095A1 (en) * 2000-02-19 2003-11-27 Powerquest Corporation Computer imaging recovery without a working partition or a secondary medium
US20150205661A1 (en) * 2014-01-20 2015-07-23 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Handling system interrupts with long-running recovery actions
US20160292249A1 (en) 2013-06-13 2016-10-06 Amazon Technologies, Inc. Dynamic replica failure detection and healing
US20170180599A1 (en) * 2015-12-18 2017-06-22 Kyocera Document Solutions Inc. Electronic device and non-transitory computer-readable storage medium

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6098078A (en) * 1995-12-29 2000-08-01 Lucent Technologies Inc. Maintaining consistency of database replicas
GB9812221D0 (en) 1998-06-05 1998-08-05 British Telecomm Distributed database system
US6941287B1 (en) * 1999-04-30 2005-09-06 E. I. Du Pont De Nemours And Company Distributed hierarchical evolutionary modeling and visualization of empirical data
JP2005352708A (ja) 2004-06-10 2005-12-22 Hitachi Ltd オンライン同期スケジュール回復システムおよびその処理方法
US8392400B1 (en) 2005-12-29 2013-03-05 Amazon Technologies, Inc. Method and apparatus for stress management in a searchable data service
US7783813B2 (en) * 2007-06-14 2010-08-24 International Business Machines Corporation Multi-node configuration of processor cards connected via processor fabrics
JP5452015B2 (ja) 2008-12-15 2014-03-26 日本証券テクノロジー株式会社 ファイル整合性確認システム、ファイル整合性確認方法、プログラム
US7984161B2 (en) 2009-06-16 2011-07-19 Microsoft Corporation Optimizing mobile device synchronization with multiple data sources
JP4913913B2 (ja) * 2010-04-28 2012-04-11 新日鉄ソリューションズ株式会社 情報処理システム、情報処理方法及びプログラム
US8234372B2 (en) * 2010-05-05 2012-07-31 Go Daddy Operating Company, LLC Writing a file to a cloud storage solution
CN102143194A (zh) 2010-06-10 2011-08-03 华为技术有限公司 数据同步的方法、系统、中间数据节点及终止数据节点
JP5751029B2 (ja) 2011-06-03 2015-07-22 株式会社リコー 認証装置、プログラムおよび記録媒体
US20140236902A1 (en) * 2011-09-29 2014-08-21 Beijing Qihoo Technology Company Limited User Data Backup Method and Apparatus
CN103890709B (zh) * 2011-11-07 2016-08-17 英派尔科技开发有限公司 基于缓存的键值数据库映射和复制
US9112809B2 (en) * 2012-11-21 2015-08-18 Telefonaktiebolaget L M Ericsson (Publ) Method and apparatus for controlling utilization in a horizontally scaled software application
US9002805B1 (en) * 2012-12-14 2015-04-07 Amazon Technologies, Inc. Conditional storage object deletion
KR101497669B1 (ko) * 2013-04-29 2015-03-11 서울대학교산학협력단 일정 수 이상의 파일 조각으로 원본 파일을 복구하는 파일 관리 장치 및 방법
WO2015057240A1 (en) 2013-10-18 2015-04-23 Hitachi Data Systems Engineering UK Limited Target-driven independent data integrity and redundancy recovery in a shared-nothing distributed storage system
US9264494B2 (en) * 2013-10-21 2016-02-16 International Business Machines Corporation Automated data recovery from remote data object replicas
US9379951B2 (en) * 2014-01-10 2016-06-28 Instep Software, Llc Method and apparatus for detection of anomalies in integrated parameter systems
US9600203B2 (en) * 2014-03-11 2017-03-21 Amazon Technologies, Inc. Reducing data volume durability state for block-based storage
CN105446653B (zh) 2014-08-27 2018-12-14 阿里巴巴集团控股有限公司 一种数据合并方法和设备
US9515878B2 (en) * 2014-11-13 2016-12-06 Software AG USA Inc. Method, medium, and system for configuring a new node in a distributed memory network
US10355935B2 (en) * 2014-12-09 2019-07-16 Ciena Corporation Reduced link bandwidth update systems and methods for improved scalability, efficiency, and performance
US10528530B2 (en) 2015-04-08 2020-01-07 Microsoft Technology Licensing, Llc File repair of file stored across multiple data stores
US10884869B2 (en) 2015-04-16 2021-01-05 Nuodb, Inc. Backup and restore in a distributed database utilizing consistent database snapshots
US9940169B2 (en) * 2015-07-23 2018-04-10 Pearson Education, Inc. Real-time partitioned processing streaming
KR20170022001A (ko) * 2015-08-19 2017-03-02 엘지전자 주식회사 데이터 송수신 방법 및 이를 위한 디바이스
US10360095B2 (en) 2016-03-31 2019-07-23 Change Healthcare Holdings, Llc Methods and apparatuses for improving failure recovery in a distributed system
JP6720744B2 (ja) 2016-07-15 2020-07-08 富士通株式会社 情報処理システム、情報処理装置、及び制御プログラム
US10802835B2 (en) * 2016-12-15 2020-10-13 Nutanix, Inc. Rule-based data protection
US20180225324A1 (en) * 2017-02-06 2018-08-09 Qualcomm Incorporated Providing Retry Schedules For File Repair Over Broadcast Networks

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030221095A1 (en) * 2000-02-19 2003-11-27 Powerquest Corporation Computer imaging recovery without a working partition or a secondary medium
US20160292249A1 (en) 2013-06-13 2016-10-06 Amazon Technologies, Inc. Dynamic replica failure detection and healing
US20150205661A1 (en) * 2014-01-20 2015-07-23 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Handling system interrupts with long-running recovery actions
US20170180599A1 (en) * 2015-12-18 2017-06-22 Kyocera Document Solutions Inc. Electronic device and non-transitory computer-readable storage medium

Also Published As

Publication number Publication date
KR20200131899A (ko) 2020-11-24
CN112219189B (zh) 2024-07-23
SG11202009391UA (en) 2020-10-29
WO2019191320A1 (en) 2019-10-03
US11119845B2 (en) 2021-09-14
AU2019244116B2 (en) 2021-10-07
JP7191493B2 (ja) 2022-12-19
CA3095033C (en) 2023-03-28
EP3776198A1 (en) 2021-02-17
US11636005B2 (en) 2023-04-25
US20210406116A1 (en) 2021-12-30
BR112020019697A2 (pt) 2021-01-05
JP2021532428A (ja) 2021-11-25
CA3095033A1 (en) 2019-10-03
US20190303234A1 (en) 2019-10-03
AU2019244116A1 (en) 2020-10-15
CN112219189A (zh) 2021-01-12
MX2020010009A (es) 2021-01-15

Similar Documents

Publication Publication Date Title
TWI783355B (zh) 深度學習模型的分布式訓練方法以及裝置
US10303508B2 (en) Adaptive self-maintenance scheduler
US9430321B2 (en) Reconstructing data stored across archival data storage devices
US20180060313A1 (en) Dynamic migration script management
US9436571B2 (en) Estimating data storage device lifespan
US9424156B2 (en) Identifying a potential failure event for a data storage device
US9557938B2 (en) Data retrieval based on storage device activation schedules
US11636005B2 (en) Techniques for scheduled anti-entropy repair design
US20150331632A1 (en) Managing archival storage
WO2017005116A1 (zh) 中间文件处理方法、客户端、服务器和系统
CN112579550B (zh) 一种分布式文件系统的元数据信息同步方法及系统
US9430149B2 (en) Pipeline planning for low latency storage system
US9766677B2 (en) Cascading startup power draws of enclosures across a network
JP2014229088A (ja) データ処理システム、データ処理装置および記憶媒体
US9430152B2 (en) Data device grouping across data storage device enclosures for synchronized data maintenance
CN113711188B (zh) 连续复制系统中的数据分发
KR20160118402A (ko) Vdi 대용량 데이터 처리를 위한 액세스 패턴 기반 캐시 관리 방법

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