IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ネットフリックス・インコーポレイテッドの特許一覧

特許7191493スケジュール設定されたアンチエントロピー修復の設計のための技法
<>
  • 特許-スケジュール設定されたアンチエントロピー修復の設計のための技法 図1
  • 特許-スケジュール設定されたアンチエントロピー修復の設計のための技法 図2
  • 特許-スケジュール設定されたアンチエントロピー修復の設計のための技法 図3
  • 特許-スケジュール設定されたアンチエントロピー修復の設計のための技法 図4
  • 特許-スケジュール設定されたアンチエントロピー修復の設計のための技法 図5A
  • 特許-スケジュール設定されたアンチエントロピー修復の設計のための技法 図5B
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-12-09
(45)【発行日】2022-12-19
(54)【発明の名称】スケジュール設定されたアンチエントロピー修復の設計のための技法
(51)【国際特許分類】
   G06F 16/182 20190101AFI20221212BHJP
   G06F 9/48 20060101ALI20221212BHJP
【FI】
G06F16/182
G06F9/48 300Z
【請求項の数】 15
(21)【出願番号】P 2020551800
(86)(22)【出願日】2019-03-27
(65)【公表番号】
(43)【公表日】2021-11-25
(86)【国際出願番号】 US2019024417
(87)【国際公開番号】W WO2019191320
(87)【国際公開日】2019-10-03
【審査請求日】2021-05-20
(31)【優先権主張番号】62/648,907
(32)【優先日】2018-03-27
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】506267178
【氏名又は名称】ネットフリックス・インコーポレイテッド
【氏名又は名称原語表記】NETFLIX, INC.
(74)【代理人】
【識別番号】100073184
【弁理士】
【氏名又は名称】柳田 征史
(74)【代理人】
【識別番号】100123652
【弁理士】
【氏名又は名称】坂野 博行
(74)【代理人】
【識別番号】100175042
【弁理士】
【氏名又は名称】高橋 秀明
(72)【発明者】
【氏名】シェラ,ヴィネイ
(72)【発明者】
【氏名】リンチ,ジョゼフ
(72)【発明者】
【氏名】ウパディアイ,アジェイ
【審査官】齊藤 貴孝
(56)【参考文献】
【文献】米国特許出願公開第2016/0299937(US,A1)
【文献】米国特許出願公開第2010/0318663(US,A1)
【文献】中国特許出願公開第102143194(CN,A)
【文献】特開2012-252540(JP,A)
【文献】特開2010-140396(JP,A)
【文献】特開2005-352708(JP,A)
【文献】特表2016-534471(JP,A)
【文献】特開2018-010576(JP,A)
【文献】米国特許出願公開第2017/0286208(US,A1)
【文献】田中 直行 、外1名,DBレプリケーション,PFU・テクニカルレビュー,日本,株式会社PFU,1998年05月01日,第9巻,第1号,p.26-33
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/00-16/958
G06F 9/48
(57)【特許請求の範囲】
【請求項1】
コンピュータ実装型の方法であって、前記方法は:
複数のノードに含まれる第1のノードによって、かつ前記複数のノードに含まれる他の全てのノードによるよりも前に、第1のアンチエントロピー修復手順が終了したことを判断するステップ;
前記第1のノードによって、第2のアンチエントロピー修復手順の開始準備ができていることを判断するステップ;
前記第2のアンチエントロピー修復手順に関連する1つ以上の操作を実行するためのスケジュールを生成するステップ;及び
前記スケジュールを共有修復スケジュールデータ構造に書き込むことによって、前記第2のアンチエントロピー修復手順を、前記複数のノードに含まれる複数のノードにわたって開始するステップ
を含む、コンピュータ実装型の方法。
【請求項2】
前記第2のアンチエントロピー修復手順の開始準備ができていることを判断する前記ステップは、現時点が、修復動作のために指定された特定の時間範囲内であることを判断するステップを含む、請求項1に記載のコンピュータ実装型の方法。
【請求項3】
前記複数のノードに含まれる第2のノードによって、第3のアンチエントロピー修復手順の開始準備ができていることを判断するステップ;
前記第3のアンチエントロピー修復手順に関連する1つ以上の操作を実行するためのスケジュールを生成するステップ;及び
前記スケジュールを第2の共有修復スケジュールデータ構造に書き込んで、前記複数のノードに含まれる複数のノードにわたって前記第3のアンチエントロピー修復手順を開始するステップ
を更に含む、請求項1に記載のコンピュータ実装型の方法。
【請求項4】
前記第2のアンチエントロピー修復手順はフルアンチエントロピー修復手順を含み、
前記第3のアンチエントロピー修復手順はインクリメンタルアンチエントロピー修復手順を含み、
前記第3のアンチエントロピー修復手順の開始準備ができていることを判断する前記ステップは、インクリメンタル修復を含む第4のアンチエントロピー修復手順が終了したことを判断するステップを含む、請求項3に記載のコンピュータ実装型の方法。
【請求項5】
前記複数のノードに含まれる第2のノードによって、前記第2のアンチエントロピー修復手順が進行中であることを判断するステップ;
前記第2のアンチエントロピー修復手順が、修復について次の順番であることを判断するステップ;及び
前記第2のノード上に存在する少なくとも1つの整合性を失ったデータパーティションを修復するステップ
を更に含む、請求項1に記載のコンピュータ実装型の方法。
【請求項6】
前記複数のノードに含まれる第2のノードによって、前記第2のアンチエントロピー修復手順が進行中であることを判断するステップ;
前記第2のノードが、前記第2のアンチエントロピー修復手順に関連する修復を現在実施している前記複数のノードに含まれる他の全てのノードから独立していることを判断するステップ;及び
前記第2のノード上に存在する少なくとも1つの整合性を失ったデータパーティションを修復するステップ
を更に含む、請求項1に記載のコンピュータ実装型の方法。
【請求項7】
前記複数のノードに含まれる第2のノードによって、前記第2のアンチエントロピー修復手順が進行中であることを判断するステップ;
前記第2のノードが、前記第2のアンチエントロピー修復手順に関連する修復を実施したことを判断するステップ;
前記第2のノードと相互依存関係にある、前記複数のノードに含まれる他の全てのノードが、前記第2のアンチエントロピー修復手順に関連する修復を実施したことを判断するステップ;及び
前記第2のノードによって、前記第2のアンチエントロピー修復手順に関連する修復後手順を実施するステップ
を更に含む、請求項1に記載のコンピュータ実装型の方法。
【請求項8】
前記修復後手順を実施する前記ステップは、前記第2のアンチエントロピー修復手順の完了後には不要であるパーティションを削除するステップを含む、請求項7に記載のコンピュータ実装型の方法。
【請求項9】
前記修復後手順を実施する前記ステップは、前記第2のノードに関連する1つ以上のパーティションに対して圧縮操作を実施して、前記1つ以上のパーティションへのアクセス時のレイテンシを低減するステップを含む、請求項7に記載のコンピュータ実装型の方法。
【請求項10】
前記修復後手順を実施する前記ステップは、前記第2のノードが前記第2のアンチエントロピー修復手順に関連する前記修復を実施したことを示すメッセージを、監視アプリケーションに送信するステップを含む、請求項7に記載のコンピュータ実装型の方法。
【請求項11】
前記第2のアンチエントロピー修復手順に関連するパーティションの個数が閾値レベルを超えることを判断するステップ;及び
前記第2のアンチエントロピー修復手順に関連する作業を複数の部分範囲に分割するステップ
を更に含む、請求項1に記載のコンピュータ実装型の方法。
【請求項12】
前記第2のアンチエントロピー修復手順に関連する1つ以上のパーティションのサイズが閾値レベルを超えることを判断するステップ;及び
前記第2のアンチエントロピー修復手順に関連する作業を複数の部分範囲に分割するステップ
を更に含む、請求項1に記載のコンピュータ実装型の方法。
【請求項13】
前記第2のアンチエントロピー修復手順のための完了時間が閾値レベルを超えることを判断するステップ;及び
前記第2のアンチエントロピー修復手順に関連する作業を、前記完了時間に基づいて、複数の部分範囲に分割するステップ
を更に含む、請求項1に記載のコンピュータ実装型の方法。
【請求項14】
1つ以上の非一時的コンピュータ可読ストレージ媒体であって、前記非一時的コンピュータ可読ストレージ媒体は、命令を含み、前記命令は、1つ以上のプロセッサによって実行された場合に前記プロセッサ:
第1のアンチエントロピー修復手順が終了したことを判断するステップ;
複数のノードに含まれる第1のノードによって、かつ前記複数のノードに含まれる他の全てのノードによるよりも前に、第2のアンチエントロピー修復手順の開始準備ができていることを判断するステップ;
前記第2のアンチエントロピー修復手順に関連する動作を実行するためのスケジュールを生成するステップ;及び
前記スケジュールを共有修復スケジュールデータ構造に書き込んで、前記複数のノードに含まれる複数のノードにわたって前記第2のアンチエントロピー修復手順を開始するステップ
を実施させる、1つ以上の非一時的コンピュータ可読ストレージ媒体。
【請求項15】
計算デバイスであって、前記計算デバイスは:
命令を含むメモリ;及び
前記メモリに結合されたプロセッサであって、前記命令を実行したときに:
第1のアンチエントロピー修復手順が終了したことを判断し;
複数のノードに含まれる第1のノードによって、かつ前記複数のノードに含まれる他の全てのノードによるよりも前に、第2のアンチエントロピー修復手順の開始準備ができていることを判断し;
前記第2のアンチエントロピー修復手順に関連する修復スケジュールを生成し;
前記修復スケジュールをデータストアに書き込んで、前記複数のノードに含まれる複数のノードにわたって前記第2のアンチエントロピー修復手順を開始する
よう構成された、プロセッサ
を備える、計算デバイス。
【発明の詳細な説明】
【関連出願の相互参照】
【0001】
本出願は、2018年3月27日出願の米国特許出願公開第62/648,907号(代理人整理番号NETF0192USL)の利益を主張するものであり、上記特許出願は参照により本出願に援用される。
【技術分野】
【0002】
本発明は一般に分散コンピュータシステムに関し、より具体的には、スケジュール設定されたアンチエントロピー修復の設計のための技法に関する。
【背景技術】
【0003】
特定の分散データベースネットワークでは、データの集合は、分散データベースネットワーク全体にわたって、本明細書において「ノード(node)」と呼ばれる複数の計算デバイスで複製及び保存される。データの集合の複数の複製は、本明細書では「レプリカ(replica)」と呼ばれる。分散データベースネットワーク全体にわたってレプリカを保存することにより、データ損失に対する冗長性が提供され、これにより、レプリカのうちの1つが破損した場合に、残りのレプリカにアクセスすることで、対応するデータを取得できる。更に、地理的に多様な複数のノードにレプリカを保存すると、ある特定のデータの集合へのアクセスをリクエストするユーザは、このユーザの計算デバイスに最も近いノードから、データを取得できる。その結果、レプリカへのアクセスのリクエストとレプリカの取得との間のレイテンシを低減できる。
【0004】
時間の経過と共に、あるレプリカ中のデータが、他の対応するレプリカ中のデータとの整合性を失う可能性がある。一例として、あるノード上の特定のレプリカにアクセスするユーザは、このレプリカの一部分を変更し、変更されたレプリカを該ノードに再び保存する場合がある。その結果、変更されたレプリカは、分散データベースネットワーク全体に分散されている他のレプリカとの整合性を有しないものとなる。このような不整合を修正するために、ノードのうちの1つを、アンチエントロピー修復コーディネータとして指定する。指定されたアンチエントロピー修復コーディネータは続いて、不整合に関して、レプリカのサブセット間の差異を解析し、このレプリカのサブセットが整合性を有するものとなるように、このレプリカのサブセットを更新する。レプリカを分析及び更新するこのプロセスを、本明細書では「アンチエントロピー修復手順(anti‐entropy repair procedure)」、又はより簡単に「修復(repair)」と呼ぶ。従来の修復では、ユーザは、分散データベースの外部の修復ツールによって、オフラインバッチプロセスとして修復を手動でスケジューリングする。その結果、従来のアンチエントロピー修復手順の場合、ユーザは、分散データベースネットワーク内のノードに関するアンチエントロピー修復手順の設計及び保守に責任を有する。
【0005】
ノードを修復するための上述のアプローチによる1つの問題は、修復という解決策及び選択肢をユーザが理解し、適切に実行するのが困難である点である。比較的少数のノードを有する分散データベースネットワークに関しては、単純なアンチエントロピー修復手順が有効であり得るものの、このような単純なアンチエントロピー修復手順は、数万個のノードを有する分散データベースネットワークでは失敗する場合がある。同様に、サイズが比較的小さなレプリカを保存するノードに関して有効であり得るアンチエントロピー修復手順は、比較的大きなレプリカを保存するノードについては失敗する場合があり、またその逆も同様である。結果として、ノードの個数が変動する、及び/又はレプリカのサイズが様々である分散データベースネットワークについて、アンチエントロピー修復手順の設計及び保守は困難となり得る。
【0006】
ノードを修復するための上述のアプローチによる別の問題は、アンチエントロピー修復コーディネータ及び/又は1つ以上の他のノードが、修復の進行中に故障した場合に、修復の進行が全て失われる場合がある点である。結果として、アンチエントロピー修復手順を始めから再始動する必要があり、これは、故障前に実施されていた数時間又は数日の修復作業の損失につながる。更に、外部アンチエントロピー修復手順は、故障時の分散データベース及び修復の進行の状態を完全に可視化できない場合がある。その結果、アンチエントロピー修復手順は、修復の再始動に必要な具体的な動作を決定するのが困難である場合がある。ノードを修復するための上述のアプローチによる更に別の問題は、修復が、相当なディスクストレージ、中央演算処理装置(CPU)、及びネットワーク帯域幅の使用をリクエストすることが多く、これにより分散データベースネットワークの性能が大幅に低下し得る点である。
【発明の概要】
【発明が解決しようとする課題】
【0007】
以上のように、分散データベースネットワークのノードの修復のためのより効果的な技法が、当該技術分野において必要とされている。
【課題を解決するための手段】
【0008】
本出願の様々な実施形態は、分散データベースネットワークの複数のノードにわたって分散アンチエントロピー修復手順を実施するための、コンピュータ実装型の方法を記述する。上記方法は、複数のノードに含まれる第1のノードによって、かつ上記複数のノードに含まれる他の全てのノードによるより前に、第1のアンチエントロピー修復手順が終了したことを判断するステップを含む。上記方法は更に、上記第1のノードによって、第2のアンチエントロピー修復手順の開始準備ができていることを判断するステップを含む。上記方法は更に、上記第2のアンチエントロピー修復手順に関連する1つ以上の操作を実行するためのスケジュールを生成するステップを含む。上記方法は更に、上記スケジュールを共有修復スケジュールデータ構造に書き込むことによって、上記第2のアンチエントロピー修復手順を、上記複数のノードに含まれる複数のノードにわたって開始するステップを含む。
【0009】
本発明の他の実施形態としては、本開示の技法の1つ以上の態様を実施するための命令を含むコンピュータ可読媒体、及び本開示の技法の1つ以上の態様を実施するための計算デバイスが挙げられるが、これらに限定されない。
【0010】
従来技術に対する本開示の技法の少なくとも1つの技術的利点は、アンチエントロピー修復手順が、分散データベースネットワーク中のノードの個数及びレプリカの様々なサイズに自動的に対応する点である。結果として、上記アンチエントロピー修復手順は、特定のノードに保存されたデータの各サブセットに適合することにより、消費されるディスクアクセス、CPUリソース、及びネットワーク帯域幅の量を、従来の技法に対して削減する。更にユーザは、ノードの個数及びレプリカのサイズが時間の経過と共に変化する際の、アンチエントロピー修復手順の手動での設計及び保守から解放される。従来技術に対する本開示の技法の別の技術的利点は、上記アンチエントロピー修復手順が複数のノードにわたって分散される点である。更に、故障したノードが実行を再始動すると、アンチエントロピー修復手順は、故障が発生したときの条件と比較的同一の条件で再始動できる。その結果、従来技術のアプローチに比べて、修復中に1つ以上の他のノードが故障しても、修復の進行はほとんど又は全く失われない。これらの技術的利点は、従来技術のアプローチを上回る1つ以上の技術的改善を意味する。
【0011】
本発明の上述の特徴を詳細に理解できるように、上で簡単に要約された本発明の更に詳細な説明を、一部が添付の図面に図示されている複数の実施形態を参照することで得ることができる。しかしながら、添付の図面は本発明の典型的な実施形態のみを示したものであるため、本発明の範囲を限定するものと解釈してはならないことに留意されたい。というのは、本発明は同等に効果的な他の実施形態を許容できるものであるためである。
【図面の簡単な説明】
【0012】
図1】本発明の様々な実施形態による、コンテンツサーバ及びエンドポイントデバイスにコンテンツを分配するためのネットワークインフラストラクチャ
図2】本発明の様々な実施形態による、図1のネットワークインフラストラクチャと合わせて実装できるコンテンツサーバの更に詳細な図
図3】本発明の様々な実施形態による、図1のネットワークインフラストラクチャと合わせて実装できるコンテンツサーバの更に詳細な図
図4】本発明の様々な実施形態による、図1のネットワークインフラストラクチャと合わせて実装できるエンドポイントデバイスの更に詳細な図
図5A】本発明の様々な実施形態による、分散データベースネットワークの複数のコンテンツサーバにわたって分散アンチエントロピー修復手順を実施するための方法ステップのフロー図
図5B図5Aから続くフロー図
【発明を実施するための形態】
【0013】
以下の説明では、本発明のより完全な理解を提供するために、多数の具体的詳細が記載される。しかしながら、これらの具体的詳細のうちの1つ以上を用いずに本発明の実施形態を実施してよいことは、当業者には明らかであろう。
【0014】
システムの概観
図1は、本発明の様々な実施形態による、コンテンツサーバ110及びエンドポイントデバイス115にコンテンツを分配するためのネットワークインフラストラクチャ100を示す。図示されているように、ネットワークインフラストラクチャ100は、クラスタ140、制御サーバ120、及びエンドポイントデバイス115を含み、これらはそれぞれ通信ネットワーク105を介して接続されている。ネットワーク105は、リモート又はローカルコンピュータシステム及び計算デバイスの間の通信を可能とするいずれの好適な環境であってよく、無線及び優先LAN並びにインターネットベースのWAN(広域ネットワーク)を含むがこれらに限定されない。
【0015】
各エンドポイントデバイス115としては、限定するものではないが、パーソナルコンピュータ、ビデオゲームコンソール、パーソナルデジタルアシスタント、携帯電話、移動体デバイス、又は本発明の1つ以上の態様の実装に好適な他のいずれのデバイスであってよい、計算デバイスが挙げられる。各エンドポイントデバイス115は、ネットワーク105を介して1つ以上のコンテンツサーバ110と通信して、テキストデータ、グラフィックデータ、オーディオデータ、ビデオデータ、及び他のタイプのデータといったコンテンツをダウンロードする。コンテンツサーバ110は、本明細書では「キャッシュ」、「計算ノード」、又は更に簡単に「ノード」とも呼ばれる。これに続いて、本明細書では「ファイル」とも呼ばれるダウンロード可能なコンテンツは、1つ以上のエンドポイントデバイス115のユーザに提示される。様々な実施形態では、エンドポイントデバイス115としては、コンピュータシステム、セットトップボックス、モバイルコンピュータ、スマートフォン、タブレット、コンソール及びハンドヘルドビデオゲームシステム、デジタルビデオレコーダ(DVR)、DVDプレーヤー、接続済みデジタルTV、専用メディアストリーミングデバイス(例えばRoku(登録商標)セットトップボックス)、並びに/又はネットワーク接続性を有しかつテキスト、画像、ビデオ、及び/又はオーディオコンテンツ等のコンテンツをユーザに提示できる、他のいずれの技術的に可能な計算プラットフォームが挙げられる。
【0016】
各クラスタ140は、1つ以上のコンテンツサーバ110を含む。本明細書中で更に説明されるように、各クラスタ140は、特定のクラスタ140に含まれるコンテンツサーバ110に対して、アンチエントロピー修復手順を独立して実行できる。各コンテンツサーバ110としては、限定するものではないが、スタンドアロン型ネットワークアタッチトストレージ(NAS)システム、ストレージエリアネットワーク(SAN)、ストレージデバイスのクラスタ若しくは「ファーム」、分散ストレージアーキテクチャ、又は本発明の1つ以上の態様の実装に好適な他のいずれのデバイスであってよい、ストレージデバイスが挙げられる。更に、又はあるいは、各コンテンツサーバ110としては、限定するものではないが、スタンドアロン型サーバ、サーバのクラスタ若しくは「ファーム」、1つ以上のネットワークアプライアンス、又は本発明の1つ以上の態様の実装に好適な他のいずれのデバイスであってよいストレージサブシステムを備えた、計算デバイスを挙げることもできる。更に、各コンテンツサーバ110としては、限定するものではないが、ウェブサーバ及びデータベースを挙げることもでき、これらは、制御サーバ120と通信して、制御サーバ120が追跡及び管理する様々なファイルの場所及び利用可能性を決定するように構成できる。
【0017】
より一般的には、各コンテンツサーバ110は、テーブルと呼ばれる複数のファイルのグループを保存する。各テーブルは複数のパーティションからなり、ここでパーティションは、任意のサイズのデータの単位である。パーティションのサイズは、鍵と値とのペア1つといった小さなもの、又は1ギガバイトのデータといった大きなものであってよい。各コンテンツサーバ110は更に、フィルソース130及び1つ以上の他のコンテンツサーバ110と通信することによって、各コンテンツサーバ110を様々なファイルの複製で「満たす(fill)」ことができる。更にコンテンツサーバ110は、エンドポイントデバイス115から受信するファイルに対するリクエストに応答できる。続いてファイルを、コンテンツサーバ110から、又はより広範なコンテンツ配信ネットワークを介して、配信してよい。いくつかの実施形態では、コンテンツサーバ110は、コンテンツサーバ110に保存されたファイルへのアクセスのためにユーザを(例えばユーザ名及びパスワードを用いて)認証できる。
【0018】
制御サーバ120としては、限定するものではないが、スタンドアロン型サーバ、サーバのクラスタ若しくは「ファーム」、1つ以上のネットワークアプライアンス、又は本発明の1つ以上の態様の実装に好適な他のいずれのデバイスであってよい、計算デバイスを挙げることができる。図1には単一の制御サーバ120しか図示されていないが、様々な実施形態では、ファイルの追跡及び管理のために複数の制御サーバ120を実装してよい。
【0019】
様々な実施形態では、フィルソース130としては、オンラインストレージサービス(例えばAmazon(登録商標)シンプルストレージサービス、Google(登録商標)クラウドストレージ等)を挙げることができ、これには、数千又は数数百万個のファイルを含むファイルのカタログが保存され、このカタログにアクセスしてコンテンツサーバ110を満たす。図1には単一のフィルソース130しか図示されていないが、様々な実施形態では、ファイルに対するリクエストを処理するために複数のフィルソース130を実装してよい。
【0020】
クラスタにわたる分散アンチエントロピー修復手順の実施
図2は、本発明の様々な実施形態による、図1のネットワークインフラストラクチャ100と合わせて実装できるコンテンツサーバ110のブロック図である。図示されているように、コンテンツサーバ110は、限定するものではないが、プロセッサ204、システムディスク206、入出力(I/O)デバイスインタフェース208、ネットワークインタフェース210、相互接続212、及びシステムメモリ214を含む。
【0021】
プロセッサ204は、単一のCPU、複数のCPU、複数の処理コアを有する単一のCPU等を表すものとして含まれている。プロセッサ204は、システムメモリ214に保存されたサーバアプリケーション217及び修復アプリケーション219といったプログラミング命令を取得して実行するよう構成される。同様に、プロセッサ204は、システムメモリ214にアプリケーションデータ(例えばソフトウェアライブラリ)を保存し、またシステムメモリ214からアプリケーションデータを取得するよう構成される。相互接続212は、プログラミング命令及びアプリケーションデータ等のデータの、プロセッサ204、システムディスク206、I/Oデバイスインタフェース208、ネットワークインタフェース210、及びシステムメモリ214の間での伝送を促進するように構成される。I/Oデバイスインタフェース208は、I/Oデバイス216から入力データを受信し、相互接続212を介して上記入力データをプロセッサ204に伝送するように構成される。例えば、I/Oデバイス216としては、1つ以上のボタン、キーボード、マウス、及び/又は他の入力デバイスを挙げることができる。I/Oデバイスインタフェース208は更に、相互接続212を介してプロセッサ204から出力データを受信し、上記出力データをI/Oデバイス216に伝送するよう構成される。
【0022】
システムディスク206としては、1つ以上のハードディスクドライブ、ソリッドステートストレージデバイス、又は同様のストレージデバイスを挙げることができる。システムディスク206は、ファイル218(例えばオーディオファイル、ビデオファイル、サブタイトル、アプリケーションファイル、ソフトウェアライブラリ等)といった不揮発性データを保存するよう構成される。続いて、ファイル218、又はより具体的には1つ以上のファイル218に関連するパーティション及び/若しくは記録を、1つ以上のエンドポイントデバイス115がネットワーク105を介して取得できる。いくつかの実施形態では、ネットワークインタフェース210は、イーサネット規格に準拠して動作するよう構成される。
【0023】
システムメモリ214としては、限定するものではないが、サーバアプリケーション217、修復アプリケーション219、及びデータストア221が挙げられる。データストア221としては、サーバアプリケーション217がデータを保存及び取得するサーバアプリケーションデータストアが挙げられる。いくつかの実施形態では、データストア221としては、修復アプリケーション219がデータを保存及び取得する修復データストアも挙げられる。更に、又はあるいは、修復データストアは、コンテンツサーバ110外のデータストア内に存在してよい。この場合、修復アプリケーション219は、ネットワークインタフェース210を介して外部の修復データストアにアクセスしてよい。
【0024】
サーバアプリケーション217は、エンドポイントデバイス115及び他のコンテンツサーバ110から受信した1つ以上のファイル218中の1つ以上のパーティションに対するリクエストを処理するように構成される。サーバアプリケーション217が1つ以上のファイル218内の1つ以上のパーティションに対するリクエストを受信すると、サーバアプリケーション217は、システムディスク206から対応するファイル218を取得し、1つ以上の具現化されたパーティションを、ネットワーク105を介してエンドポイントデバイス115又はコンテンツサーバ110に伝送する。これらの動作の実施時、サーバアプリケーション217はデータストア221にデータを保存し、またデータストア221からデータを取得する。
【0025】
プロセッサ204によって実行された場合、修復アプリケーション219は、本明細書中で更に説明されるように、図1のコンテンツサーバ110に関連する1つ以上の動作を実施する。これらの動作の実施時、修復アプリケーション219はデータストア221にデータを保存し、またデータストア221からデータを取得する。
【0026】
動作時、プロセッサ204上で実行される修復アプリケーション219は、修復状態の更新によってアンチエントロピー修復手順の実行を管理する。一実施形態では、修復アプリケーション219は、4タイプの状態テーブルを含むデータ構造によって、アンチエントロピー修復手順の実行を管理及び調整する。これらの4つの状態テーブルは、本明細書ではrepair_process、repair_sequence、repair_status、及びrepair_hook_statusと呼ばれる。ある特定のアンチエントロピー修復手順に関して、クラスタ140に含まれる各コンテンツサーバ110に1つのrepair_process状態記録及び1つのrepair_sequence記録が存在する。更に、ある特定のコンテンツサーバ110上で実行される、ある特定のアンチエントロピー修復手順に関して、パーティションのテーブル毎に1つのrepair_status記録、及びクラスタ140に含まれる各コンテンツサーバ110に1つのrepair_hook_status状態テーブルが存在する。様々な実施形態では、repair_process、repair_sequence、repair_status、及びrepair_hook_status状態テーブルはそれぞれ、各クラスタ上に、又は1つのマスターデータストア内に、いずれの技術的に可能な組み合わせで存在してよい。このような実施形態では、マスターrepair_status状態テーブル及び1つのマスターrepair_hook_status状態テーブルが、複数のセクションに分割されていてよく、各セクションは、クラスタ140に含まれる異なるコンテンツサーバ110に対応する。
【0027】
第1の状態テーブルはrepair_process状態テーブルであり、これは、アンチエントロピー修復手順をクラスタ140全体のレベルで実行するためのパラメータを含む。第2の状態テーブルはrepair_sequence状態テーブルであり、これは、クラスタ140に含まれるコンテンツサーバ110にわたってアンチエントロピー修復手順を実施するためのスケジュールを画定する。上記スケジュールは、ノードがノード修復を実施するシーケンス又は順番の形式である。特に、repair_sequence状態テーブルは、クラスタ140内の各コンテンツサーバ110のステータスを追跡し、現在のアンチエントロピー修復手順中にどのコンテンツサーバ110がノード修復を実施したかを示す。第3の状態テーブルはrepair_status状態テーブルであり、これは、クラスタ140に含まれる各コンテンツサーバ110に含まれる特定の要素に関する修復ステータスを追跡する。本明細書中で更に説明されるように、これらの特定の要素は、対応するコンテンツサーバ110内で修復を受けるデータのパーティション及び部分範囲それぞれを含む。第4の状態テーブルはrepair_hook_status状態テーブルであり、これは、コンテンツサーバ110が実施する修復後手順に関連する動作のステータスを追跡する。修復後手順に関連するこのような動作は、本明細書では「修復後フック」と呼ばれる。
【0028】
一般に、修復後フックは、コンテンツサーバ110及び全ての関連する近隣のコンテンツサーバ110が、アンチエントロピー修復手順に関連するノード修復を実施した後に、コンテンツサーバ110によって実施される様々な保守タスクを含む。本明細書中で使用される場合、所与のコンテンツサーバ110の「近隣(neighbor)」とは、該コンテンツサーバ110と共通の1つ以上のパーティションを保存するクラスタに含まれる他のコンテンツサーバ110のセットである。一般に、コンテンツサーバ110は、同一のデータを共有する他の全てのコンテンツサーバ110がノード修復を実施するまで、修復後フックを実施できない。この規則により、近隣のコンテンツサーバ110のノード修復に必要なデータが、これらのノード修復の完了前に削除されるのを防止する。ある特定のコンテンツサーバ110及び関連する全ての近隣のコンテンツサーバ110がノード修復を実施した後、上記特定のコンテンツサーバ110は、修復中には必要であったものの修復の完了後には不要となった1つ以上のパーティションを保存している可能性がある。従って、クリーンアップフックによって、不要となったこれらのパーティションを削除する。
【0029】
更に、ある特定のコンテンツサーバ110及び関連する全ての近隣のコンテンツサーバ110がノード修復を実施した後、上記特定のコンテンツサーバ110は、修復済みデータを非効率な方法で保存している可能性がある。より具体的には、ノード修復中、コンテンツサーバ110は、システムディスク206の様々なストレージ場所に対してデータのブロックの読み出し、書き込み、及び複製を行う。結果として、ノード修復の完了後、ある特定のパーティションの複数の部分が、システムディスク206上のランダムな場所に保存される場合があり、及び/又は上記パーティションが、上記パーティション内に埋め込まれた空きストレージスペース又は未使用のストレージスペースのセクションを含む場合がある。このように保存されたパーティションの取得には時間がかかる場合がある。というのは、システムディスク206が、互いから離間した複数のストレージ場所からデータを取得する必要がある可能性があり、また空きストレージスペース又は未使用のストレージスペースのセクションをスキップする必要がある可能性があるためである。このような非効率な方法でデータを保存した結果、修復の完了後にコンテンツサーバ110からデータをリクエストするエンドポイントデバイス115は、修復前に行われたリクエストに比べて、レイテンシの増大を経験する場合がある。アクセスレイテンシの低減のためには、プロセッサ204は圧縮プロセスを実施することにより、内部に空きストレージスペース又は未使用のストレージスペースのセクションが存在しない、連続的かつ線形的な方法で、パーティションをシステムディスク206に保存する。特に、プロセッサ204は圧縮フックを実施することにより、データをより効率的な方法で保存し、これによってリクエストのレイテンシを低減する。
【0030】
更に、いずれの追加の修復後フックについて、ある特定のコンテンツサーバ110が、この特定のコンテンツサーバ110及び関連する全ての近隣のコンテンツサーバ110がノード修復を実施した後で、これらの追加の修復後フックを実施するように、ユーザが定義できる。このようなユーザ定義修復フックは、監視アプリケーション(図示せず)に、コンテンツサーバ110がノード修復を完了したというメッセージを伝送してよい。このようにして、監視アプリケーションは、修復を実施しているクラスタ140の各コンテンツサーバ110の進行を追跡して、クラスタ140の修復中に消費された時間等の対応するメトリクスを計算する。
【0031】
修復アプリケーション219は、分散データベースネットワーク内のコンテンツサーバ110にわたって実行され、ここで、事前にアンチエントロピー修復コーディネータとして指定されたコンテンツサーバ110は存在しない。いくつかの実施形態では、クラスタ140内の各コンテンツサーバ110は、2分に1回等、周期的に修復アプリケーション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は修復後フックを実施することなく修復手順を終了する。
【0032】
その一方で、コンテンツサーバ110が、アンチエントロピー修復手順が進行中でないと判断した場合、コンテンツサーバ110は、新規のアンチエントロピー修復手順を開始するべきかどうかを判断する。一般に、1つ前のアンチエントロピー修復手順が完了しており、かつ新規のアンチエントロピー修復手順の開始に対して制約が存在しない場合には、新規のアンチエントロピー修復手順を開始するべきである。例えば、新規のアンチエントロピー修復手順の開始は、オフピーク時間として指定されている時刻に制限されている場合があり、ここでオフピーク時間とは、コンテンツサーバ110に対する負荷が特定の閾値レベル未満となることが予想される特定の時間範囲を指す。現在の時点が、修復動作のために指定されている特定の時間範囲に当てはまる場合、新規のアンチエントロピー修復手順を開始してよい。新規のアンチエントロピー修復手順を開始するべきではない場合、コンテンツサーバ110は修復手順を終了する。そうでない場合、コンテンツサーバ110はアンチエントロピー修復手順を開始するよう試みる。この試みは、コンテンツサーバ110がrepair_procedure状態テーブル中のデータのロックを取得できる場合に成功する。repair_procedure状態テーブル中のデータのロックの取得にコンテンツサーバ110が失敗した場合、別のコンテンツサーバ110がロックを取得し、新規のアンチエントロピー修復手順を開始している。しかしながら、コンテンツサーバ110がロックの取得に成功した場合、コンテンツサーバ110はrepair_process状態テーブルにクラスタレベルパラメータを入力する。更にコンテンツサーバ110は、repair_sequence状態テーブルにコンテンツサーバ110のための新たなシーケンスを入力することにより、新規のアンチエントロピー修復手順を実施する。その後、コンテンツサーバ110は修復手順を終了する。
【0033】
一般に、コンテンツサーバ110が互いに協働する唯一の場合は、コンテンツサーバ110が新規のアンチエントロピー修復の開始を試み、repair_process及びrepair_sequence状態テーブルに上述のような入力を行い、この新規のアンチエントロピー修復手順に関連するノード修復をコンテンツサーバ110が実施するシーケンス又は順番を定義する新たなシーケンスを生成するときである。コンテンツサーバ110が新規のアンチエントロピー修復手順の開始を試みると、コンテンツサーバ110はクラスタレベルrepair_process状態テーブルのロックをリクエストする。これにより、複数のコンテンツサーバ110が、次のアンチエントロピー修復手順のための新たなrepair_process及びrepair_sequence状態テーブルを同時に書き込むことが防止される。結果として、クラスタ140内のいずれのコンテンツサーバ110が、repair_process状態テーブルのロックを取得でき、次のアンチエントロピー修復手順を開始できる。
【0034】
コンテンツサーバ110がロックを取得すると、コンテンツサーバ110は、機械毎のrepair_sequence状態テーブルをバッチ操作として書き込む。バッチ操作での書き込みでは、全ての書き込みが成功するか、又はどの書き込みも実行されない。バッチ操作では、コンテンツサーバ110が部分シーケンスをrepair_sequence状態テーブルに書き込んで失敗し、これによって複数のアンチエントロピー修復手順に関する部分シーケンスを含むrepair_sequence状態テーブルがもたらされることが防止される。更に、上記バッチ操作が完了する又は失敗するまで、他のコンテンツサーバ110がrepair_sequence状態テーブルにアクセスすることが防止される。結果として、他のコンテンツサーバ110は、新たなrepair_sequence状態テーブルが完全で一貫したものであることが保証される。バッチ操作でrepair_sequence状態テーブルを書き込むことにより、他のコンテンツサーバ110が、部分的に書き込まれたrepair_sequence状態テーブルを読み出すこと、及びその結果として誤ったシーケンスでノード修復を実施することが防止される。
【0035】
要約すると、いずれのコンテンツサーバ110は、新規のアンチエントロピー修復手順を、以下の2つの協働状態:(1)repair_process状態テーブルのロックを取得して、repair_process状態テーブルへの書き込みを行う状態;及び(2)repair_sequence状態テーブルをバッチ操作で書き込む状態によって開始できる。これら2つの協働状態以外に、コンテンツサーバ110は、進行のために他の各コンテンツサーバ110との協働又はロックの取得を必要とすることなく、独立してノード修復を実施する。
【0036】
更に、各コンテンツサーバ110は、修復に関してスケジュール設定された複数のパーティションのセットを、部分範囲に分割する。ある所与の部分範囲は、単一のパーティション、複数のパーティション、又は1つのパーティションの一部分を表してよい。各コンテンツサーバ110は、修復を完了するための目標完了時間を満たすために、自動的にパーティションを分割して部分範囲へとマージする。一例として、アンチエントロピー修復手順は、部分範囲1個あたり30分以下の、修復を完了するための目標を有してよい。各部分範囲は、この目標完了時間を満たすために、コンテンツサーバ110に保存されたパーティションの個数及びパーティションのサイズに基づいて自動的にサイズ設定される。一般に、大量の小さなパーティションを含むクラスタ140内のコンテンツサーバ110に関する最適なrepair_status状態テーブルのセットは、少量の大きなパーティションを含むクラスタ140内のコンテンツサーバ110に関する最適なrepair_status状態テーブルのセットとは異なる。
【0037】
repair_status状態テーブルのセットを最適化するために、コンテンツサーバ110は、適応分割範囲手順を実施する。これは、パーティションの個数、パーティションのサイズ、及び他のメトリクスに基づいて、部分範囲を自動的に選択する。一例として、百万個のパーティションを含み、かつ各パーティションが鍵と値とのペアである、クラスタ140について考える。複数のコンテンツサーバ110にわたってパーティションの差異を発見するために、クラスタ140に含まれている各コンテンツサーバ110は、各構成要素の暗号キャッシュを計算して、本明細書中で「マークルツリー(Merkle tree)」と呼ばれるキャッシュツリーを生成する。マークルツリーでは、各リーフは、対応するパーティション又はパーティションの一部分中のデータのハッシュ値を含む。2つのコンテンツサーバ110それぞれにあるパーティションのセット毎に1つずつ、2つのマークルツリーを想定すると、これら2つのマークルツリー上の対応するリーフが同一のハッシュ値を有する場合、対応するソースデータは同一である。各コンテンツサーバ110は、複数のコンテンツサーバ110にわたってマークルツリーを解析して、あるマークルツリーに保存されたハッシュ値と別のマークルツリーに保存されたハッシュ値との差異を発見する。このような差異は、これらのハッシュ値が表すソースデータの差異に対応する。しかしながら、100万個のパーティションに対して単一のマークルツリーを生成すると、アンチエントロピー修復の実施に利用できるメモリを超えるメモリを消費する場合がある。
【0038】
この問題を解決するための1つの方法は、マークルツリーのサイズを、合理的な個数のハッシュ値に制限することである。しかしながら、このようにマークルツリーのサイズを制限すると、各ハッシュ値が多数のパーティションを表すようなマークルツリーがもたらされる可能性がある。2つの対応するハッシュ値が異なる場合、データの不一致を発見するために、ハッシュ値が表す全てのパーティションを比較する必要がある。
【0039】
従って、コンテンツサーバ110は適応分割範囲手順を実施することによってノード修復を部分範囲に分割し、各部分範囲は異なるマークルツリーを有する。各マークルツリーは1対1の解像度を有することができるため、各ハッシュ値は単一のパーティションを表す。複数のマークルツリーは同時に計算される。適応分割範囲手順は、例えば30分であるマークルツリーあたりの目標完了時間に基づいて、各マークルツリーの個数、サイズ、及び解像度を決定する。
【0040】
この適応分割範囲手順は、クラスタ140内の下層のパーティションに基づいて、マークルツリーを自動的に調整する。例えば、第1のクラスタ140は百万個のパーティションを有することができ、各パーティションは小さい。このクラスタ140は、各ハッシュ値を迅速に計算でき、また各パーティションを迅速に比較できるため、迅速に修復される。第2のクラスタ140は百万個のパーティションを有することができ、各パーティションは1ギガバイトである。このクラスタ140は、各ハッシュ値にかかる時間が長くなり得、同様に各パーティションの比較にも長い時間がかかる可能性があるため、ゆっくりと修復される。適当な分割範囲を適応的に選択することにより、部分範囲あたり30分という目標完了時間を達成できる。このような分割範囲の適応選択により、コンテンツサーバ110の故障後の回復をより迅速にすることができる。
【0041】
いくつかの実施形態では、アンチエントロピー修復手順は、過去に実行された1つ以上のアンチエントロピー修復手順に関連する履歴データに基づいて、修復作業を自動的に微調整できる。このような実施形態では、新規のアンチエントロピー修復手順を開始しているコンテンツサーバ110は、各コンテンツサーバ110が報告したrepair_status状態テーブル中のデータを解析する。このデータは、各コンテンツサーバ110に関する各部分範囲、上記部分範囲のサイズ、上記部分範囲の修復に消費される時間量を識別する。続いて、目標完了時間を満たすために、上記新規のアンチエントロピー修復手順に関する状態テーブルを、このデータに基づいて適応させることができる。一例として、1つ前のアンチエントロピー修復手順が目標完了時間より短い時間で実施されている場合、新規のアンチエントロピー修復手順のための分割範囲は、この過去のアンチエントロピー修復手順の実際の完了時間の2倍の目標完了時間に基づくものであってよい。その一方で、この過去のアンチエントロピー修復手順が目標完了時間より長い時間で実施されている場合、新規のアンチエントロピー修復手順のための分割範囲は、この過去のアンチエントロピー修復手順の実際の完了時間より短い固定パーセンテージである目標完了時間に基づくものであってよい。このようにして、後続のアンチエントロピー修復手順の構成を、時間の経過に伴うパーティションの性質の変化に適合させる。
【0042】
これより、修復オプションのセットについて説明する。これらの修復オプションは、適応分割範囲手順の実施方法を含むアンチエントロピー修復手順の構成及び実行をガイドするためのユーザ制御を提供する。修復オプションを以下の表1に示す。
【0043】
【表1】
【0044】
「タイプ」修復オプションは、実行されるアンチエントロピー修復手順のタイプを指定する。フル修復の場合、コンテンツサーバ110は全てのパーティションに対して修復を実施する。インクリメンタル修復の場合、コンテンツサーバ110は、変化したデータに対してのみ修復を実施する。デフォルトの修復タイプは完全修復である。
【0045】
「ワーカー」修復オプションは、修復を実行するプロセッサコア(本明細書中では「ワーカー」とも呼ばれる)の個数を指定する。デフォルトのワーカーの個数は、最大1コア、及び利用可能なコアの個数を2で除算したものである。このデフォルトのワーカーの個数は、少なくとも1つ、かつ利用可能なコアの個数の半分以下のプロセッサコア上で修復を実行する。
【0046】
「並列度」修復オプションは、修復を実行するためのマークルツリーを計算する際に採用される並列度を指定する。3つの地理的に分散されたデータセンターそれぞれに3つのコンテンツサーバ110を含むクラスタ140に関して、「sequential」は、9個のコンテンツサーバ110にマークルツリーを順次構築させ、この場合、いずれの所与の時点において1つのコンテンツサーバ110のみがマークルツリーを構築する。「parallel」は、ある所与のデータセンター内の3つのコンテンツサーバ110に、同時にマークルツリーを構築させる。複数のデータセンターがマークルツリーを順次構築し、この場合、いずれの所与の時点において、1つのデータセンター内のコンテンツサーバ110のみがマークルツリーを構築する。「dc_parallel」は、3つ全てのデータセンターにわたる9個全てのコンテンツサーバ110に、同時にマークルツリーを構築させる。デフォルトの並列度は「sequential」である。「sequential」はこれら3つのオプションの中で最も遅いものとなり得るが、「sequential」はデータ保存の観点から最も保守的でもある。
【0047】
「フック」修復オプションは、対応する1つのコンテンツサーバ110及び近隣のコンテンツサーバ110がノードリペアを完了した後で実行される修復後フックのセットを指定する。利用可能な修復後フックとしては、「cleanup」、「compaction」、及びユーザが供給する他のいずれの修復後フックが挙げられる。デフォルトのフックは「cleanup」である。
【0048】
「分割範囲」修復オプションは、repair_status状態テーブルを部分範囲のために分割するためのパーティションの個数を指定する。「分割範囲」が整数「n」を指定している場合、ノード修復は、各パーティションが「n」個の部分範囲に分割されるように実行される。「分割範囲」が、整数「n」及びそれに続く「_dry_run」を指定している場合、ノード修復は、各パーティションが「n」個の部分範囲に分割され、かつ追加の診断データがrepair_status状態テーブルに保存されるように実行される。「分割範囲」が「adaptive」を指定している場合、ノード修復は、本明細書中で更に説明されているような適応分割範囲プロセスを実行する。デフォルトの「分割範囲」は、「adaptive」である。
【0049】
「修復間遅延分数」修復オプションは、あるアンチエントロピー修復手順の完了と次のアンチエントロピー修復手順の開始との間の遅延の分数を整数で指定する。「修復間遅延分数」の値フルは、次の修復の開始が、1つ前のアンチエントロピー修復の完了の1440分(24時間)後に発生することを示す。「修復間遅延分数」の値インクリメンタルは、次の修復の開始が、1つ前のアンチエントロピー修復の完了後すぐに発生することを示す。
【0050】
「プロセスタイムアウト秒数」修復オプションは、別のコンテンツサーバ110がある状態から別の状態に遷移するのを待機する秒数を整数で指定する。デフォルトの「プロセスタイムアウト秒数」は1800秒(30分)である。
【0051】
「修復タイムアウト秒数」修復オプションは、単一の部分範囲の修復の完了を待機する秒数を整数で指定する。デフォルトの「修復タイムアウト秒数」は14,400秒(4時間)である。
【0052】
様々な実施形態では、現在実行中の修復手順の状態をチェック又は変更するために、本明細書中では「ノードツール(nodetool)」と呼ばれる2つの補足的なコマンドを利用できる。上記2つの補足的なコマンドは、コンテンツサーバ110の修復履歴をチェックするためのrepairstatusコマンドと、クラスタ140の修復を制御するためのrepairctlコマンドとを含む。これより、これらのノードツールコマンドそれぞれについて、更に詳細に記載する。
【0053】
repairstatusコマンドの構造を以下の表2に示す:
【0054】
【表2】
【0055】
行001及び002は、修復履歴情報を印刷するためのコマンドとして、名称「nodetool repairstatus」を指定する。行003~006はrepairstatusコマンドの概要を示し、これは、行005~006に示され、かつ行007~016に更に完全に記載される、4つのコマンドオプションを含む。行008~010は、repair-idコマンドオプションを示す。repair-idが指定されている場合、repairstatusコマンドは、指定された修復識別子に関するステータスを返す。repair-idが指定されていない場合、repairstatusコマンドは修復全体のステータスを返す。行011~012は、node-idコマンドオプションを示す。repairstatusコマンドは、指定されたノード識別子に関するステータスを返す。行013~014は、keyspaceコマンドオプションを示す。repairstatusコマンドは、指定された鍵空間に関するステータスを返す。行015~016は、tableコマンドオプションを示す。repairstatusコマンドは、指定された状態テーブルに関するステータスを返す。
【0056】
例えば、いずれのコマンドオプションも伴わないコマンド「nodetool repairstatus」は、直近の修復ステータスのグローバルビューを返す。コマンド「nodetool repairstatus --repair-id 12」は、識別子12を有する修復の修復ステータスを返す。コマンド「nodetool repairstatus --node-id 73ab7e49」は、識別子73ab7e49を有するノードの修復ステータスを返す。
【0057】
repairctlコマンドの構造を以下の表3に示す:
【0058】
【表3】
【0059】
行001及び002は、クラスタ140に対する修復を制御するためのコマンドとして、名称「nodetool repairctl」を指定する。行003~006はrepairctlコマンドの概要を示し、これは、行005~006に示され、かつ行007~014に更に完全に記載される、3つのコマンドオプションを含む。行008~010は、stop-clusterコマンドオプションを示す。これが存在する場合、stop-clusterオプションは、アクティブな修復の実行をキャンセルすることなく、クラスタ140全体に対する修復を休止させる。cancel-executionは、所与のコンテンツサーバ110に対するいずれの実行中の修復を即座に停止させる。行013~014は、start-clusterコマンドオプションを示す。start-clusterコマンドは、クラスタ140に対する修復を再始動させる。
【0060】
例えば、コマンド「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に対するいずれの修復の実行を停止させる。
【0061】
いくつかの実施形態では、アンチエントロピー修復手順は、限られた修復スケジュールをサポートできる。このような実施形態では、修復は、特定の期間中にしか開始及び/又は実行されないように制限され得る。例えば、クラスタ140内の各データセンターは、修復動作のために指定された特定の時間範囲を表す「オフピーク」時間を指定できる。現在の時点が、修復動作のために指定された特定の時間範囲に当てはまる場合、新規のアンチエントロピー修復手順を開始してよい。一般に、本明細書に記載の技法は、過剰なCPUリソース、メモリ、又はネットワーク帯域幅を消費しない。それでも、一部のユーザは、他のデータリクエスト及びネットワークのトラフィックに対する影響を最小限に抑えるために、修復をオフピーク時間に制限することを望む場合がある。他の実施形態では、ユーザは、修復又は1つ以上の修復後フックを特定の期間にわたって一時停止させることができる。
【0062】
いくつかの実施形態では、アンチエントロピー修復手順は、複数の修復スケジュールをサポートできる。このような実施形態では、修復は異なる複数のタイプのものであってよく、同時に実行され得る。repair_sequenceは、修復のタイプ、及び/又は修復のタイプに基づいて現在の修復に適用するべき構成オプションを指定する、追加のフィールドを含んでよい。一例として、フル修復及びインクリメンタル修復がサポートされていてよい。フル修復の場合、コンテンツサーバ110は全てのパーティションに対して修復を実施する。インクリメンタル修復の場合、コンテンツサーバ110は、変化したデータに対してのみ修復を実施する。従って、フル修復を1ヶ月に1回実行し、その一方でインクリメンタル修復を1日に1回実行してよい。各インクリメンタル修復は、書き込みが原因で異なっているパーティションを修復する。各フル修復は更に、データ補正が原因で異なっているパーティションを修復する。これらの実施形態では、2つの修復シーケンスを同時に、ただし異なる構成で実行できる。結果として、所与のコンテンツサーバ110が所与の時点に1つのノード修復を実行している限り、フル修復及びインクリメンタル修復は同時に実行できる。
【0063】
いくつかの実施形態では、大きなクラスタ140に関するアンチエントロピー修復手順は、高度に同時発生的な修復として実行でき、ここでは、2つ以上のコンテンツサーバ110が同一のアンチエントロピー修復手順についてノード修復を同時に実施でき、これは本明細書では「ドリフト(drifted)」又は「同時発生(concurrent)」修復と呼ばれる。このような実施形態では、いかなる範囲も共有していない複数のばらばらのコンテンツサーバ110が並列してノード修復を実行する。あるコンテンツサーバ110が、このコンテンツサーバ110が次の順番であるかどうかを判断する時点において、このコンテンツサーバ110はその代わりに、ノード修復へと進むことがいずれの近隣のコンテンツサーバ110に悪影響を及ぼさないことを判断してよい。
【0064】
いくつかの実施形態では、コンテンツサーバ110は、repair_process状態テーブルでロックを取得してよいが、次のアンチエントロピー修復手順を開始するためのrepair_sequence状態テーブルの生成に進むのに失敗する場合がある。このような実施形態では、クラスタ140内の1つ以上の他のコンテンツサーバ110が、ロックの取得を試みるこのコンテンツサーバ110の進行を監視してよい。ロックの取得を試みるコンテンツサーバ110が、構成可能なタイムアウト期間、例えば30分以内に、新規のrepair_sequence状態テーブルを生成するのに失敗した場合、別のコンテンツサーバ110が次のアンチエントロピー修復手順を開始して、失敗したアンチエントロピー修復手順をキャンセルできる。
【0065】
いくつかの実施形態では、コンテンツサーバ110は、このコンテンツサーバ110が次の順番であることを判断できるが、ノード修復の実施に失敗する場合がある。このような場合、このコンテンツサーバ110は、repair_sequence状態テーブルの対応する行に対してハートビートメッセージを継続的に生成して監視することで、コンテンツサーバ110がノード修復において前進していることを保証できる。他のコンテンツサーバ110も上記ハートビートメッセージを監視してよい。現在ノード修復を試みているコンテンツサーバ110が、構成可能なタイムアウト期間、例えば30分以内にハートビートメッセージを更新しなかった場合、repair_sequence状態テーブル中で次にある別のコンテンツサーバ110が、行き詰まったコンテンツサーバ110の全ての実行中の修復をキャンセルできる。次にこのコンテンツサーバ110は、行き詰まったコンテンツサーバ110のステータスを、repair_sequence状態テーブル中に「CANCELLED」としてマークし、ノード修復を進める。
【0066】
いくつかの実施形態では、ある所与のコンテンツサーバ110はノード修復の実施時に時間及びCPUリソースを過剰に消費する場合があり、又はノード修復の実施時にネットワークのトラフィックを過剰に生成する場合がある。この問題を解決するために、コンテンツサーバ110は、適応分割範囲機能を実施して、修復作業を、コンテンツサーバ110のパーティションのサイズ及び個数に適合した作業の部分範囲へと、適応的に分割する。上記部分範囲は、各部分範囲が、構成可能なタイムアウト期間、例えば30分以内に完了するようにサイズ設定される。ある特定の部分範囲に対する修復がタイムアウト期間を特定の量だけ超えると、この部分範囲に対する修復をキャンセルして再スケジュール設定できる。
【0067】
いくつかの実施形態では、コンテンツサーバ110がノード修復を実施している間にデータベースを再起動させてよい。このような実施形態では、コンテンツサーバ110は、データベースが再起動した後でノード修復を再始動してよい。修復の各部分範囲が、構成可能なタイムアウト期間、例えば30分以内に完了するようにサイズ設定されているため、データベースの再起動による作業量の損失は最小限に抑えられる。データベースの再起動後、リセット前に「STARTED」状態であったコンテンツサーバ110は、repair_sequence状態テーブルにおいて「CANCELLED」状態に遷移して、データベースの再起動の発生時と同一の状態テーブル及び/又は同一の部分範囲において修復を再始動する。このプロセスにより、ノード修復が完全に完了することが保証される。
【0068】
いくつかの実施形態では、コンテンツサーバ110は、修復後フックの実施時に行き詰まる場合がある。一般に、修復後フックの完了に失敗したことで修復を遅延させる必要はない。従ってこの問題は、REPAIR_HOOK_RUNNING状態のコンテンツサーバ110に適用される積極的なタイムアウト期間によって解決できる。コンテンツサーバ110が修復後フックの実施に消費する時間量がタイムアウト期間を超える場合、コンテンツサーバ110をキャンセルして再起動できる。
【0069】
いくつかの実施形態では、コンテンツサーバ110を修復の実行中に追加してよい。新たなコンテンツサーバ110は現在の修復のシーケンスに影響を及ぼさないため、現在の修復は既存のシーケンスで実行され続ける。その後、後続の修復がこの新たなコンテンツサーバ110を次のrepair_sequence状態テーブルに追加する。
【0070】
いくつかの実施形態では、コンテンツサーバ110が修復中に終了する、又は使用不可能になる場合がある。このような実施形態では、1つ以上のコンテンツサーバ110が、クラスタ140内の他のコンテンツサーバ110が正常かどうかを監視してよい。所与のコンテンツサーバ110の部分範囲が、構成可能なタイムアウト期間、例えば30分にわたって使用不可能である場合、このコンテンツサーバ110のステータスは「FAILED」に設定され、修復が進行する。
【0071】
図3は、本発明の様々な実施形態による、図1のネットワークインフラストラクチャ100と合わせて実装できる制御サーバ120のブロック図である。図示されているように、制御サーバ120は、限定するものではないが、プロセッサ304、システムディスク306、入出力(I/O)デバイスインタフェース308、ネットワークインタフェース310、相互接続312、及びシステムメモリ314を含む。
【0072】
プロセッサ304は、単一のCPU、複数のCPU、複数の処理コアを有する単一のCPU等を表すものとして含まれている。プロセッサ304は、システムメモリ314に保存された制御アプリケーション317といったプログラミング命令を取得して実行するよう構成される。同様に、プロセッサ304は、システムメモリ314、及びシステムディスク306に保存されたデータベース318に、アプリケーションデータ(例えばソフトウェアライブラリ)を保存し、またシステムメモリ314、及びシステムディスク306に保存されたデータベース318からアプリケーションデータを取得するよう構成される。相互接続312は、データの、プロセッサ304、システムディスク306、I/Oデバイスインタフェース308、ネットワークインタフェース310、及びシステムメモリ314の間での伝送を促進するように構成される。I/Oデバイスインタフェース308は、I/Oデバイス316とプロセッサ304との間で、相互接続312を介して入力データ及び出力データを伝送するよう構成される。システムディスク306としては、1つ以上のハードディスクドライブ、ソリッドステートストレージデバイス等を挙げることができる。システムディスク306は、コンテンツサーバ110、1つ以上のフィルソース130、及びファイル218に関連する情報のデータベース318を保存するよう構成される。
【0073】
システムメモリ314は、データベース318に保存された情報にアクセスしてこの情報を処理することによって、ネットワークインフラストラクチャ100に含まれるコンテンツサーバ110を横断して特定のファイル218を複製する方法を決定するよう構成される。制御アプリケーション317は更に、コンテンツサーバ110及び/又はエンドポイントデバイス115のうちの1つ以上に関連する性能特性を受信及び解析するよう構成されていてよい。
【0074】
図4は、本発明の様々な実施形態による、図1のネットワークインフラストラクチャ100と合わせて実装できるエンドポイントデバイス115のブロック図である。図示されているように、エンドポイントデバイス115としては、限定するものではないが、プロセッサ410、グラフィックスサブシステム412、I/Oデバイスインタフェース414、マスストレージユニット416、ネットワークインタフェース418、相互接続422、及びメモリサブシステム430を含む。
【0075】
プロセッサ410は、単一のCPU、複数のCPU、複数の処理コアを有する単一のCPU等を表すものとして含まれている。いくつかの実施形態では、プロセッサ410は、メモリサブシステム430に保存されたプログラミング命令を取得して実行するよう構成される。同様に、プロセッサ410は、アプリケーションデータ(例えばソフトウェアライブラリ)を保存し、またメモリサブシステム430内にあるアプリケーションデータを取得するよう構成される。相互接続422は、プログラミング命令及びアプリケーションデータといったデータの、プロセッサ410、グラフィックスサブシステム412、I/Oデバイスインタフェース414、マスストレージ416、ネットワークインタフェース418、及びメモリサブシステム430の間での伝送を促進するように構成される。
【0076】
いくつかの実施形態では、グラフィックスサブシステム412は、ビデオデータのフレームを生成して、これらのビデオデータのフレームをディスプレイデバイス450に送信するよう構成される。いくつかの実施形態では、グラフィックスサブシステム412は、プロセッサ410と共に集積回路に集積してよい。ディスプレイデバイス450は、表示用の画像を生成するためのいずれの技術的に可能な手段を備えてよい。例えばディスプレイデバイス450は、液晶ディスプレイ(LCD)技術、陰極線技術、及び発光ダイオード(LED)ディスプレイ技術を用いて製作してよい。入出力(I/O)デバイスインタフェース414は、ユーザI/Oデバイス452から入力データを受信し、相互接続422を介してこの入力データをプロセッサ410に送信するよう構成される。例えばユーザI/Oデバイス452は、1つ以上のボタン、キーボード、及びマウス又は他のポインティングデバイスを備えてよい。I/Oデバイスインタフェース414はまた、電気オーディオ出力信号を生成するよう構成されたオーディオ出力ユニットを含む。ユーザI/Oデバイス452は、上記電気オーディオ出力信号に応答して音声出力を生成するよう構成されたスピーカーを含む。代替実施形態では、ディスプレイデバイス450はスピーカーを含んでよい。テレビは、ビデオフレームの表示及び音声出力の生成を行うことができる、当該技術分野で公知のデバイスの一例である。
【0077】
ハードディスクドライブ又はフラッシュメモリストレージドライブといったマスストレージユニット416は、不揮発性データを保存するよう構成される。ネットワークインタフェース418は、ネットワーク105を介してデータのパケットを送受信するよう構成される。いくつかの実施形態では、ネットワークインタフェース418は、周知のEthernet規格を用いて通信するよう構成される。ネットワークインタフェース418は、相互接続422を介してプロセッサ410に結合される。
【0078】
いくつかの実施形態では、メモリサブシステム430はプログラミング命令及びアプリケーションデータを含み、上記アプリケーションデータは、オペレーティングシステム432、ユーザインタフェース434、及び再生アプリケーション436を含む。オペレーティングシステム432は、ネットワークインタフェース418、マスストレージユニット416、I/Oデバイスインタフェース414、及びグラフィックスサブシステム412を含むハードウェアデイスの管理といった、システム管理機能を実施する。オペレーティングシステム432はまた、ユーザインタフェース434及び再生アプリケーション436のためのプロセス及びメモリ管理モデルを提供する。ウインドウ及びオブジェクトメタファー等のユーザインタフェース434は、エンドポイントデバイス108とのユーザの対話のための機構を提供する。当業者であれば、当該技術分野で周知であり、かつエンドポイントデバイス108に組み込むのに適切な、様々なオペレーティングシステム及びユーザインタフェースを認識しているだろう。
【0079】
いくつかの実施形態では、再生アプリケーション436は、コンテンツをリクエストして、ネットワークインタフェース418を介してコンテンツサーバ105からコンテンツを受信するよう構成される。更に再生アプリケーション436は、コンテンツを解釈して、ディスプレイデバイス450及び/又はユーザI/Oデバイス452を介してコンテンツを提示するよう構成される。
【0080】
図5A~5Bは、本発明の様々な実施形態による、分散データベースネットワーク内の複数のコンテンツサーバ110にわたって分散アンチエントロピー修復手順を実施するための方法ステップのフロー図を示す。これらの方法ステップは図1~4のシステムに関連付けて説明されているが、当業者であれば、これらの方法ステップをいずれの順序で実施するよう構成されたいずれのシステムも、本発明の範囲内となることを理解するだろう。
【0081】
図示されているように、方法500はステップ502で始まり、ここでは、コンテンツサーバ110上で実行されている修復アプリケーション219が、現在進行中のアンチエントロピー修復手順が存在するかどうかを判断する。より具体的には、修復アプリケーション219は、クラスタ全体のrepair_process状態テーブルを読み出して、直近のアンチエントロピー修復手順が完了又は進行中のいずれのステータスを示すかを判断する。
【0082】
アンチエントロピー修復手順が現在進行中である場合、方法500はステップ504に進み、ここで修復アプリケーション219は、repair_sequence状態テーブルによって示されるように、コンテンツサーバ110が修復の実施に関して次の順番であるかどうかを判断する。repair_sequence状態テーブル内に示されている全ての過去のコンテンツサーバ110が「FAILED」又は「FINISHED」のステータスを有する場合、コンテンツサーバ110は次の順番である。このような場合、方法500はステップ506に進み、ここで修復アプリケーション219は、該コンテンツサーバ110に保存されたパーティションに対して修復を実施する。より具体的には、修復アプリケーション219は、該コンテンツサーバ110に保存された各パーティションに対して修復を実施する。あるパーティションが複数の部分範囲に分割されている場合、修復アプリケーション219は一度に1つの部分範囲に対して修復を実施する。修復アプリケーション219が、コンテンツサーバ110に保存された全てのパーティション及び部分範囲に対する修復を完了すると、方法500は終了する。
【0083】
しかしながら、ステップ504において、コンテンツサーバ110が次の順番ではない場合、方法はステップ508に進み、ここで修復アプリケーション219は、現在のコンテンツサーバ110、及び現在のコンテンツサーバ110の近隣の全てのコンテンツサーバ110が、それぞれの修復を完了しているかどうかを判断する。現在のコンテンツサーバ110、又は現在のコンテンツサーバ110の近隣の少なくとも1つのコンテンツサーバ110が修復を完了していない場合、方法は終了する。しかしながら、現在のコンテンツサーバ110及び近隣の全てのコンテンツサーバ110がそれぞれの修復を完了している場合、方法500はステップ510に進み、ここで修復アプリケーション219は修復後フックを実行する。本明細書中で更に説明されているように、このような修復後フックは、クリーンアップ及び/又は圧縮操作、並びに現在のコンテンツサーバ110が修復を完了したことの通知を監視アプリケーションに送信する等の他のメンテナンスタスクを実施する。その後、方法500は終了する。
【0084】
ステップ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は終了する。
【0085】
また、本明細書中で更に説明されているように、クラスタ140内の各コンテンツサーバ110は、方法500のステップを、2分に1回等、周期的に実施する。
【0086】
要約すると、アンチエントロピー修復手順は、分散データベースネットワーク内のノードにわたって実行され、ここで、事前にアンチエントロピー修復コーディネータとして指定されたノードは存在しない。各ノードはある技法を周期的に実施し、ここでノードはまず、アンチエントロピー修復が進行中であるかどうかを判断する。アンチエントロピー修復手順が進行中である場合、このノードは、このノードが修復の実施において次の順番であるかどうかを判断する。このノードが次の順番である場合、ノードはレプリカ及び関連する状態テーブルを修復して終了する。ノードが次の順番ではない場合、このノードは、このノードに関連する修復後手順の実施がこのノードに許可されているかどうかを判断する。このノードが許可されている場合、このノードは修復後手順を実施して終了する。それ以外の場合には、ノードは修復後手順を実施することなく終了する。
【0087】
一方、アンチエントロピー修復手順が進行中でないとノードが判断した場合、このノードは、新規のアンチエントロピー修復手順を開始するべきかどうかを判断する。新規のアンチエントロピー修復手順を開始するべきではない場合、このノードは終了する。そうでない場合、このノードは新規のアンチエントロピー修復手順の開始を試み、これに成功すると、この新規のアンチエントロピー修復手順に関連してノードがノード修復を実施するシーケンス又は順序を画定する新規のシーケンスを生成する。その後、このノードは終了する。
【0088】
従来技術に対する本開示の技法の少なくとも1つの技術的利点は、アンチエントロピー修復手順が、分散データベースネットワーク中のノードの個数及びレプリカの様々なサイズに自動的に対応する点である。結果として、上記アンチエントロピー修復手順は、特定のノードに保存されたデータの各サブセットに適合することにより、消費されるディスクアクセス、CPUリソース、及びネットワーク帯域幅の量を、従来の技法に対して削減する。更にユーザは、ノードの個数及びレプリカのサイズが時間の経過と共に変化する際の、アンチエントロピー修復手順の手動での設計及び保守から解放される。従来技術に対する本開示の技法の別の技術的利点は、上記アンチエントロピー修復手順が複数のノードにわたって分散される点である。更に、故障したノードが実行を再始動すると、アンチエントロピー修復手順は、故障が発生したときの条件と比較的同一の条件で再始動できる。その結果、従来技術のアプローチに比べて、修復中に1つ以上の他のノードが故障しても、修復の進行はほとんど又は全く失われない。これらの技術的利点は、従来技術のアプローチを上回る1つ以上の技術的改善を意味する。
【0089】
1.いくつかの実施形態では、コンピュータ実装型の方法は:複数のノードに含まれる第1のノードによって、かつ上記複数のノードに含まれる他の全てのノードによるより前に、第1のアンチエントロピー修復手順が終了したことを判断するステップ;上記第1のノードによって、第2のアンチエントロピー修復手順の開始準備ができていることを判断するステップ;上記第2のアンチエントロピー修復手順に関連する1つ以上の操作を実行するためのスケジュールを生成するステップ;及び上記スケジュールを共有修復スケジュールデータ構造に書き込むことによって、上記第2のアンチエントロピー修復手順を、上記複数のノードに含まれる複数のノードにわたって開始するステップを含む。
【0090】
2.上記第2のアンチエントロピー修復手順の開始準備ができていることを判断する上記ステップは、現時点が、修復動作のために指定された特定の時間範囲内であることを判断するステップを含む、第1項に記載のコンピュータ実装型の方法。
【0091】
3.上記複数のノードに含まれる第2のノードによって、第3のアンチエントロピー修復手順の開始準備ができていることを判断するステップ;上記第3のアンチエントロピー修復手順に関連する1つ以上の操作を実行するためのスケジュールを生成するステップ;及び上記スケジュールを第2の共有修復スケジュールデータ構造に書き込んで、上記複数のノードに含まれる複数のノードにわたって上記第3のアンチエントロピー修復手順を開始するステップを更に含む、第1項又は第2項に記載のコンピュータ実装型の方法。
【0092】
4.上記第2のアンチエントロピー修復手順はフルアンチエントロピー修復手順を含み、上記第3のアンチエントロピー修復手順はインクリメンタルアンチエントロピー修復手順を含み、上記第3のアンチエントロピー修復手順の開始準備ができていることを判断する上記ステップは、インクリメンタル修復を含む第4のアンチエントロピー修復手順が終了したことを判断するステップを含む、第1~3項のいずれか1つに記載のコンピュータ実装型の方法。
【0093】
5.上記複数のノードに含まれる第2のノードによって、上記第2のアンチエントロピー修復手順が進行中であることを判断するステップ;上記第2のアンチエントロピー修復手順が、修復について次の順番であることを判断するステップ;及び上記第2のノード上に存在する少なくとも1つの整合性を失ったデータパーティションを修復するステップを更に含む、第1~4項のいずれか1つに記載のコンピュータ実装型の方法。
【0094】
6.上記複数のノードに含まれる第2のノードによって、上記第2のアンチエントロピー修復手順が進行中であることを判断するステップ;上記第2のノードが、上記第2のアンチエントロピー修復手順に関連する修復を現在実施している上記複数のノードに含まれる他の全てのノードから独立していることを判断するステップ;及び上記第2のノード上に存在する少なくとも1つの整合性を失ったデータパーティションを修復するステップを更に含む、第1~5項のいずれか1つに記載のコンピュータ実装型の方法。
【0095】
7.上記複数のノードに含まれる第2のノードによって、上記第2のアンチエントロピー修復手順が進行中であることを判断するステップ;上記第2のノードが、上記第2のアンチエントロピー修復手順に関連する修復を実施したことを判断するステップ;上記第2のノードと相互依存関係にある、上記複数のノードに含まれる他の全てのノードが、上記第2のアンチエントロピー修復手順に関連する修復を実施したことを判断するステップ;及び上記第2のノードによって、上記第2のアンチエントロピー修復手順に関連する修復後手順を実施するステップを更に含む、第1~6項のいずれか1つに記載のコンピュータ実装型の方法。
【0096】
8.上記修復後手順を実施する上記ステップは、上記第2のアンチエントロピー修復手順の完了後には不要であるパーティションを削除するステップを含む、第1~7項のいずれか1つに記載のコンピュータ実装型の方法。
【0097】
9.上記修復後手順を実施する上記ステップは、上記第2のノードに関連する1つ以上のパーティションに対して圧縮操作を実施して、上記1つ以上のパーティションへのアクセス時のレイテンシを低減するステップを含む、第1~8項のいずれか1つに記載のコンピュータ実装型の方法。
【0098】
10.上記修復後手順を実施する上記ステップは、上記第2のノードが上記第2のアンチエントロピー修復手順に関連する上記修復を実施したことを示すメッセージを、監視アプリケーションに送信するステップを含む、第1~9項のいずれか1つに記載のコンピュータ実装型の方法。
【0099】
11.上記第2のアンチエントロピー修復手順に関連するパーティションの個数が閾値レベルを超えることを判断するステップ;及び上記第2のアンチエントロピー修復手順に関連する作業を複数の部分範囲に分割するステップを更に含む、第1~10項のいずれか1つに記載のコンピュータ実装型の方法。
【0100】
12.上記第2のアンチエントロピー修復手順に関連する1つ以上のパーティションのサイズが閾値レベルを超えることを判断するステップ;及び上記第2のアンチエントロピー修復手順に関連する作業を複数の部分範囲に分割するステップを更に含む、第1~11項のいずれか1つに記載のコンピュータ実装型の方法。
【0101】
13.上記第2のアンチエントロピー修復手順のための完了時間が閾値レベルを超えることを判断するステップ;及び上記第2のアンチエントロピー修復手順に関連する作業を、上記完了時間に基づいて、複数の部分範囲に分割するステップを更に含む、第1~12項のいずれか1つに記載のコンピュータ実装型の方法。
【0102】
14.いくつかの実施形態では、1つ以上の非一時的コンピュータ可読ストレージ媒体は、1つ以上のプロセッサによって実行された場合に上記プロセッサに以下のステップ:第1のアンチエントロピー修復手順が終了したことを判断するステップ;複数のノードに含まれる第1のノードによって、かつ上記複数のノードに含まれる他の全てのノードによるより前に、第2のアンチエントロピー修復手順の開始準備ができていることを判断するステップ;上記第2のアンチエントロピー修復手順に関連する動作を実行するためのスケジュールを生成するステップ;及び上記スケジュールを共有修復スケジュールデータ構造に書き込んで、上記複数のノードに含まれる複数のノードにわたって上記第2のアンチエントロピー修復手順を開始するステップを実施させる、命令を含む。
【0103】
15.上記第2のアンチエントロピー修復手順の開始準備ができていることを判断する上記ステップは、現時点が、修復動作のために指定された特定の時間範囲内であることを判断するステップを含む、第14項に記載の1つ以上の非一時的コンピュータ可読ストレージ媒体。
【0104】
16.上記複数のノードに含まれる各ノードは、上記第2のアンチエントロピー修復手順に関連する修復を順次実施する、第14項又は第15項に記載の1つ以上の非一時的コンピュータ可読ストレージ媒体。
【0105】
17.上記複数のノードに含まれる第1のノードのサブセットに含まれる各ノードは、上記第2のアンチエントロピー修復手順に関連する修復を互いに並列に実施し;上記複数のノードに含まれる第2のノードのサブセットに含まれる各ノードは、上記第2のアンチエントロピー修復手順に関連する修復を互いに並列に実施し;上記第1のノードのサブセットに含まれる上記ノードは、上記第2のノードのサブセットに含まれる上記ノードに対して、上記第2のアンチエントロピー修復手順に関連する上記修復を順次実施する、第14~16項のいずれか1つに記載の1つ以上の非一時的コンピュータ可読ストレージ媒体。
【0106】
18.上記複数のノードに含まれる各ノードは、上記第2のアンチエントロピー修復手順に関連する修復を互いに並列に実施する、第14~17項のいずれか1つに記載の1つ以上の非一時的コンピュータ可読ストレージ媒体。
【0107】
19.いくつかの実施形態では、計算デバイスは、命令を含むメモリと、上記メモリに結合されたプロセッサであって、上記命令を実行したときに:第1のアンチエントロピー修復手順が終了したことを判断し;複数のノードに含まれる第1のノードによって、かつ上記複数のノードに含まれる他の全てのノードによるより前に、第2のアンチエントロピー修復手順の開始準備ができていることを判断し;上記第2のアンチエントロピー修復手順に関連する修復スケジュールを生成し;上記修復スケジュールをデータストアに書き込んで、上記複数のノードに含まれる複数のノードにわたって上記第2のアンチエントロピー修復手順を開始するよう構成された、プロセッサとを備える。
【0108】
20.上記プロセッサは更に、上記命令を実行したときに、上記複数のノードに含まれる第2のノードにおいて、ある個数の処理コアを、上記第2のアンチエントロピー修復手順に関連する修復を実施するために割り当て、上記処理コアの上記個数は最大で、上記第2のノード内で利用可能なプロセッサコアの個数の半分である、第19項に記載の計算デバイス。
【0109】
請求項のうちのいずれかに記載の請求対象の要素のうちのいずれ、及び/又は本出願に記載のいずれの要素の、いずれの様式でのあらゆる全ての組み合わせは、本発明及び保護の企図された範囲内にある。
【0110】
様々な実施形態の説明は、例示を目的として提示されたものであり、網羅的なものであること、又は本開示の実施形態への限定を意図したものではない。本明細書に記載の実施形態の範囲及び精神から逸脱することなく、多数の修正及び変形が当業者には明らかであろう。
【0111】
本発明の実施形態の態様は、システム、方法、又はコンピュータプログラム製品として具現化できる。従って、本開示の態様は、完全にハードウェアである実施形態、完全にソフトウェア(ファームウェア、常駐ソフトウェア、マイクロコード等を含む)である実施形態、又はソフトウェアの態様とハードウェアの態様と(これらは全て、本明細書では一般に「モジュール(module)」若しくは「システム(system)」と呼ばれる場合がある)を組み合わせた実施形態の形態を取ることができる。更に、本開示の態様は、コンピュータ可読プログラムコードが具現化されている1つ以上のコンピュータ可読媒体として具現化された、コンピュータプログラム製品の形態を取ることができる。
【0112】
1つ以上のコンピュータ可読媒体のいずれの組み合わせを利用してよい。コンピュータ可読媒体は、コンピュータ可読信号媒体又はコンピュータ可読ストレージ媒体であってよい。コンピュータ可読ストレージ媒体は、限定するものではないが例えば、電子、磁気、光学、電磁気、赤外線、又は半導体のシステム、装置、又はデバイス、あるいはこれらのいずれの好適な組み合わせであってよい。コンピュータ可読ストレージ媒体の更に具体的な例(非包括的なリスト)は、以下を含む:1つ以上の配線を含む電気的接続、ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)、消去可能かつプログラム可能な読み出し専用メモリ(EPROM若しくはフラッシュメモリ)、光ファイバ、ポータブルコンパクトディスク読み出し専用メモリ(CD‐ROM)、光ストレージデバイス、磁気ストレージデバイス、又はこれらのいずれの好適な組み合わせ。本文書の文脈において、コンピュータ可読ストレージ媒体は、命令実行システム、装置若しくはデバイスによって又はこれらに関連して使用されるためのプログラムを内包又は保存できる、いずれの有形媒体であってよい。
【0113】
本開示の態様について、本開示の実施形態による方法、装置(システム)及びコンピュータプログラム製品のフローチャート図及び/又はブロック図を参照して上述した。これらのフローチャート図及び/又はブロック図の各ブロック、並びにこれらのフローチャート図及び/又はブロック図内のブロックの組み合わせは、コンピュータプログラム命令によって実装可能であることが理解されるだろう。これらのコンピュータプログラム命令を、汎用コンピュータ、専用コンピュータ、又は他のプログラマブルデータ処理装置に供給することにより、コンピュータ又は他のプログラマブルデータ処理装置によって実行された場合に上記フローチャート及び/又はブロック図の1つ以上のブロックで指定された機能/作用の実装を可能とするような機械を製造できる。このようなプロセッサは、限定するものではないが、汎用プロセッサ、専用プロセッサ、特定用途向けプロセッサ、又はフィールドプログラマブルゲートアレイであってよい。
【0114】
図面中のフローチャート及びブロック図は、本開示の様々な実施形態によるシステム、方法、及びコンピュータプログラム製品の可能な実装形態のアーキテクチャ、機能性、及び動作を図示している。これに関して、上記フローチャート又はブロック図中の各ブロックは、1つ以上の指定された論理機能を実装するための1つ以上の実行可能な命令を含む、モジュール、セグメント、又はコードの一部分を表すことができる。また、いくつかの代替実装形態では、ブロック内に記載された機能は、図面に記載された順序とは異なる順序で行われる場合があることにも留意されたい。例えば、関連する機能性に応じて、連続して示されている2つのブロックは、実際には略同時発生的に実行される場合があり、又はこれらのブロックが逆の順序で実行される場合もある。また、ブロック図及び/又はフローチャート図の各ブロック、並びにブロック図及び/又はフローチャート図中のブロックの組み合わせは、指定された機能若しくは作用を実施する専用のハードウェアベースのシステム、又は専用のハードウェアとコンピュータ命令との組み合わせによって実装できる。
以下、本発明の好ましい実施形態を項分け記載する。
実施形態1
コンピュータ実装型の方法であって、前記方法は:
複数のノードに含まれる第1のノードによって、かつ前記複数のノードに含まれる他の全てのノードによるよりも前に、第1のアンチエントロピー修復手順が終了したことを判断するステップ;
前記第1のノードによって、第2のアンチエントロピー修復手順の開始準備ができていることを判断するステップ;
前記第2のアンチエントロピー修復手順に関連する1つ以上の操作を実行するためのスケジュールを生成するステップ;及び
前記スケジュールを共有修復スケジュールデータ構造に書き込むことによって、前記第2のアンチエントロピー修復手順を、前記複数のノードに含まれる複数のノードにわたって開始するステップ
を含む、コンピュータ実装型の方法。
実施形態2
前記第2のアンチエントロピー修復手順の開始準備ができていることを判断する前記ステップは、現時点が、修復動作のために指定された特定の時間範囲内であることを判断するステップを含む、実施形態1に記載のコンピュータ実装型の方法。
実施形態3
前記複数のノードに含まれる第2のノードによって、第3のアンチエントロピー修復手順の開始準備ができていることを判断するステップ;
前記第3のアンチエントロピー修復手順に関連する1つ以上の操作を実行するためのスケジュールを生成するステップ;及び
前記スケジュールを第2の共有修復スケジュールデータ構造に書き込んで、前記複数のノードに含まれる複数のノードにわたって前記第3のアンチエントロピー修復手順を開始するステップ
を更に含む、実施形態1に記載のコンピュータ実装型の方法。
実施形態4
前記第2のアンチエントロピー修復手順はフルアンチエントロピー修復手順を含み、
前記第3のアンチエントロピー修復手順はインクリメンタルアンチエントロピー修復手順を含み、
前記第3のアンチエントロピー修復手順の開始準備ができていることを判断する前記ステップは、インクリメンタル修復を含む第4のアンチエントロピー修復手順が終了したことを判断するステップを含む、実施形態3に記載のコンピュータ実装型の方法。
実施形態5
前記複数のノードに含まれる第2のノードによって、前記第2のアンチエントロピー修復手順が進行中であることを判断するステップ;
前記第2のアンチエントロピー修復手順が、修復について次の順番であることを判断するステップ;及び
前記第2のノード上に存在する少なくとも1つの整合性を失ったデータパーティションを修復するステップ
を更に含む、実施形態1に記載のコンピュータ実装型の方法。
実施形態6
前記複数のノードに含まれる第2のノードによって、前記第2のアンチエントロピー修復手順が進行中であることを判断するステップ;
前記第2のノードが、前記第2のアンチエントロピー修復手順に関連する修復を現在実施している前記複数のノードに含まれる他の全てのノードから独立していることを判断するステップ;及び
前記第2のノード上に存在する少なくとも1つの整合性を失ったデータパーティションを修復するステップ
を更に含む、実施形態1に記載のコンピュータ実装型の方法。
実施形態7
前記複数のノードに含まれる第2のノードによって、前記第2のアンチエントロピー修復手順が進行中であることを判断するステップ;
前記第2のノードが、前記第2のアンチエントロピー修復手順に関連する修復を実施したことを判断するステップ;
前記第2のノードと相互依存関係にある、前記複数のノードに含まれる他の全てのノードが、前記第2のアンチエントロピー修復手順に関連する修復を実施したことを判断するステップ;及び
前記第2のノードによって、前記第2のアンチエントロピー修復手順に関連する修復後手順を実施するステップ
を更に含む、実施形態1に記載のコンピュータ実装型の方法。
実施形態8
前記修復後手順を実施する前記ステップは、前記第2のアンチエントロピー修復手順の完了後には不要であるパーティションを削除するステップを含む、実施形態7に記載のコンピュータ実装型の方法。
実施形態9
前記修復後手順を実施する前記ステップは、前記第2のノードに関連する1つ以上のパーティションに対して圧縮操作を実施して、前記1つ以上のパーティションへのアクセス時のレイテンシを低減するステップを含む、実施形態7に記載のコンピュータ実装型の方法。
実施形態10
前記修復後手順を実施する前記ステップは、前記第2のノードが前記第2のアンチエントロピー修復手順に関連する前記修復を実施したことを示すメッセージを、監視アプリケーションに送信するステップを含む、実施形態7に記載のコンピュータ実装型の方法。
実施形態11
前記第2のアンチエントロピー修復手順に関連するパーティションの個数が閾値レベルを超えることを判断するステップ;及び
前記第2のアンチエントロピー修復手順に関連する作業を複数の部分範囲に分割するステップ
を更に含む、実施形態1に記載のコンピュータ実装型の方法。
実施形態12
前記第2のアンチエントロピー修復手順に関連する1つ以上のパーティションのサイズが閾値レベルを超えることを判断するステップ;及び
前記第2のアンチエントロピー修復手順に関連する作業を複数の部分範囲に分割するステップ
を更に含む、実施形態1に記載のコンピュータ実装型の方法。
実施形態13
前記第2のアンチエントロピー修復手順のための完了時間が閾値レベルを超えることを判断するステップ;及び
前記第2のアンチエントロピー修復手順に関連する作業を、前記完了時間に基づいて、複数の部分範囲に分割するステップ
を更に含む、実施形態1に記載のコンピュータ実装型の方法。
実施形態14
1つ以上の非一時的コンピュータ可読ストレージ媒体であって、前記非一時的コンピュータ可読ストレージ媒体は、命令を含み、前記命令は、1つ以上のプロセッサによって実行された場合に前記プロセッサ:
第1のアンチエントロピー修復手順が終了したことを判断するステップ;
複数のノードに含まれる第1のノードによって、かつ前記複数のノードに含まれる他の全てのノードによるより前に、第2のアンチエントロピー修復手順の開始準備ができていることを判断するステップ;
前記第2のアンチエントロピー修復手順に関連する動作を実行するためのスケジュールを生成するステップ;及び
前記スケジュールを共有修復スケジュールデータ構造に書き込んで、前記複数のノードに含まれる複数のノードにわたって前記第2のアンチエントロピー修復手順を開始するステップ
を実施させる、1つ以上の非一時的コンピュータ可読ストレージ媒体。
実施形態15
前記第2のアンチエントロピー修復手順の開始準備ができていることを判断する前記ステップは、現時点が、修復動作のために指定された特定の時間範囲内であることを判断するステップを含む、実施形態14に記載の1つ以上の非一時的コンピュータ可読ストレージ媒体。
実施形態16
前記複数のノードに含まれる各ノードは、前記第2のアンチエントロピー修復手順に関連する修復を順次実施する、実施形態14に記載の1つ以上の非一時的コンピュータ可読ストレージ媒体。
実施形態17
前記複数のノードに含まれる第1のノードのサブセットに含まれる各ノードは、前記第2のアンチエントロピー修復手順に関連する修復を互いに並列に実施し;
前記複数のノードに含まれる第2のノードのサブセットに含まれる各ノードは、前記第2のアンチエントロピー修復手順に関連する修復を互いに並列に実施し;
前記第1のノードのサブセットに含まれる前記ノードは、前記第2のノードのサブセットに含まれる前記ノードに対して、前記第2のアンチエントロピー修復手順に関連する前記修復を順次実施する、実施形態14に記載の1つ以上の非一時的コンピュータ可読ストレージ媒体。
実施形態18
前記複数のノードに含まれる各ノードは、前記第2のアンチエントロピー修復手順に関連する修復を互いに並列に実施する、実施形態14に記載の1つ以上の非一時的コンピュータ可読ストレージ媒体。
実施形態19
計算デバイスであって、前記計算デバイスは:
命令を含むメモリ;及び
前記メモリに結合されたプロセッサであって、前記命令を実行したときに:
第1のアンチエントロピー修復手順が終了したことを判断し;
複数のノードに含まれる第1のノードによって、かつ前記複数のノードに含まれる他の全てのノードによるより前に、第2のアンチエントロピー修復手順の開始準備ができていることを判断し;
前記第2のアンチエントロピー修復手順に関連する修復スケジュールを生成し;
前記修復スケジュールをデータストアに書き込んで、前記複数のノードに含まれる複数のノードにわたって前記第2のアンチエントロピー修復手順を開始する
よう構成された、プロセッサ
を備える、計算デバイス。
実施形態20
前記プロセッサは更に、前記命令を実行したときに、前記複数のノードに含まれる第2のノードにおいて、ある個数の処理コアを、前記第2のアンチエントロピー修復手順に関連する修復を実施するために割り当て、前記処理コアの前記個数は最大で、前記第2のノード内で利用可能なプロセッサコアの個数の半分である、実施形態19に記載の計算デバイス。
【0115】
以上は、本開示の実施形態を対象としているが、本開示の基本的な範囲から逸脱することなく、本開示の他の更なる実施形態を考案することもでき、本開示の範囲は以下の請求項によって決定される。
【符号の説明】
【0116】
100 ネットワークインフラストラクチャ
105 通信ネットワーク
110 コンテンツサーバ
115 エンドポイントデバイス
120 制御サーバ
140 クラスタ
130 フィルソース
204、304、410 プロセッサ
206、306 システムディスク
208、308、414 入出力(I/O)デバイスインタフェース
210、310、418 ネットワークインタフェース
212、312、422 相互接続
214、314 システムメモリ
216、316 I/Oデバイス
217 サーバアプリケーション
218 ファイル
219 修復アプリケーション
221 データストア
317 制御アプリケーション
412 グラフィックスサブシステム
416 マスストレージユニット
430 メモリサブシステム
450 ディスプレイデバイス
452 ユーザI/Oデバイス
図1
図2
図3
図4
図5A
図5B