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

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

▶ ワンディスコ,インク.の特許一覧

特許7389793分散型異種ストレージシステムにおけるデータ一貫性のリアルタイムチェックのための方法、デバイス、およびシステム
<>
  • 特許-分散型異種ストレージシステムにおけるデータ一貫性のリアルタイムチェックのための方法、デバイス、およびシステム 図1
  • 特許-分散型異種ストレージシステムにおけるデータ一貫性のリアルタイムチェックのための方法、デバイス、およびシステム 図2
  • 特許-分散型異種ストレージシステムにおけるデータ一貫性のリアルタイムチェックのための方法、デバイス、およびシステム 図3
  • 特許-分散型異種ストレージシステムにおけるデータ一貫性のリアルタイムチェックのための方法、デバイス、およびシステム 図4
  • 特許-分散型異種ストレージシステムにおけるデータ一貫性のリアルタイムチェックのための方法、デバイス、およびシステム 図5
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-11-21
(45)【発行日】2023-11-30
(54)【発明の名称】分散型異種ストレージシステムにおけるデータ一貫性のリアルタイムチェックのための方法、デバイス、およびシステム
(51)【国際特許分類】
   G06F 16/182 20190101AFI20231122BHJP
【FI】
G06F16/182
【請求項の数】 20
(21)【出願番号】P 2021510040
(86)(22)【出願日】2019-08-27
(65)【公表番号】
(43)【公表日】2022-01-04
(86)【国際出願番号】 US2019048371
(87)【国際公開番号】W WO2020068334
(87)【国際公開日】2020-04-02
【審査請求日】2022-06-30
(31)【優先権主張番号】16/141,335
(32)【優先日】2018-09-25
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】515154894
【氏名又は名称】サイラタ,インク.
(74)【代理人】
【識別番号】100115738
【弁理士】
【氏名又は名称】鷲頭 光宏
(74)【代理人】
【識別番号】100121681
【弁理士】
【氏名又は名称】緒方 和文
(72)【発明者】
【氏名】バーネット,グランビル,リン
(72)【発明者】
【氏名】アーラット イエツール
【審査官】齊藤 貴孝
(56)【参考文献】
【文献】米国特許出願公開第2018/0260409(US,A1)
【文献】米国特許出願公開第2011/0196828(US,A1)
【文献】特開2010-198276(JP,A)
【文献】国際公開第2014/051071(WO,A1)
【文献】梶原 顕伍、外2名,Raftに基づく分散データベースの性能解析,情報処理学会 研究報告 システムソフトウェアとオペレーティング・システム(OS),日本,情報処理学会,2017年05月11日,p.1-9
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/00-16/958
(57)【特許請求の範囲】
【請求項1】
第1の複数の複製状態マシンによって、第1のタイプの第1のデータストレージサービスに記憶されたデータに変化を生じさせるためにオーダリングされた合意のシーケンスを実行することと、
第2の複数の複製状態マシンによって、第2のタイプの第2のデータストレージサービスに記憶された前記データに変化を生じさせるために前記オーダリングされた合意のシーケンスを実行することと、
前記第1のデータストレージサービスに記憶された変化済み前記データの第1のメタデータを受信かつ記憶し、および前記第2のデータストレージサービスに記憶された前記変化済みデータの第2のメタデータを受信かつ記憶することと、
前記第1のメタデータに対応する前記第1のデータストレージサービスに記憶された前記データおよび前記第2のメタデータに対応する前記第2のデータストレージサービスに記憶された前記データが両方共、前記オーダリングされた合意のシーケンスの所定のものに従って変化させた後に確定された時を判断するために、受信した前記第1のメタデータおよび前記第2のメタデータを使用して前記第1のデータストレージサービスと前記第2のデータストレージサービスとの間で同期をとることと、
前記第1のメタデータに対応する前記第1のデータストレージサービスに記憶された前記データおよび前記第2のメタデータに対応する前記第2のデータストレージサービスに記憶された前記データが、前記オーダリングされた合意のシーケンスの前記所定のものに従って確定されたと判断された時に、記憶された前記第1のメタデータおよび前記第2のメタデータの比較を実行することと、
前記比較の結果に応じて選択されたアクションを実行することと、を含む、コンピュータ実施方法。
【請求項2】
前記オーダリングされた合意のシーケンスは一意の綿密にオーダリングされたグローバルシーケンス番号を使用してオーダリングされる、請求項1に記載のコンピュータ実施方法。
【請求項3】
前記第1の複数の状態マシンおよび前記第2の複数の状態マシンによって、分散協調エンジンからの前記一意の綿密にオーダリングされたグローバルシーケンス番号を受信することをさらに含む、請求項に記載のコンピュータ実施方法。
【請求項4】
前記第1のデータストレージサービスの前記第1のタイプは可変および不変のうちの1つである、請求項1に記載のコンピュータ実施方法。
【請求項5】
前記第2のデータストレージサービスの前記第2のタイプは可変および不変のうちの1つである、請求項1に記載のコンピュータ実施方法。
【請求項6】
前記第1のデータストレージサービスおよび前記第2のデータストレージサービスは均質および異種のうちの1つである、請求項1に記載のコンピュータ実施方法。
【請求項7】
記憶されているデータが有効であるとみなされるように、情報源として前記第1のデータストレージサービスを指定することをさらに含む、請求項1に記載のコンピュータ実施方法。
【請求項8】
前記記憶された第1のメタデータおよび第2のメタデータの前記比較が、前記第2のメタデータに対応する前記第2のデータストレージサービスに記憶された前記データが、前記第1のメタデータに対応する前記第1のデータストレージサービスに記憶された前記データと矛盾することを指示する時、前記選択されたアクションは、前記第2のメタデータに対応する前記第2のデータストレージサービスに記憶された前記データを前記第1のメタデータに対応する前記第1のデータストレージサービスに記憶された前記データと置き換えることを含む、請求項6に記載のコンピュータ実施方法。
【請求項9】
前記第1のデータストレージサービスおよび前記第2のデータストレージサービスに記憶された前記データが両方共確定される時を判断するように同期をとることは、クローズ動作が前記データに対して実行されているのを待機することを含む、請求項1に記載のコンピュータ実施方法。
【請求項10】
請求項1に規定する各ステップの少なくともいくつかは、前記第1のデータストレージサービスおよび前記第2のデータストレージサービスにわたって構成可能である、請求項1に記載のコンピュータ実施方法。
【請求項11】
メモリと、
プロセッサと、
前記プロセッサによって生成された複数のプロセスであって、ストレージサービスにわたって一貫性チェックを可能にするように構成され、
第1の複数の複製状態マシンによって、オーダリングされた合意のシーケンスを実行して、第1のタイプの第1のデータストレージサービスに記憶されたデータに変化を生じさせ、
第2の複数の複製状態マシンによって、前記オーダリングされた合意のシーケンスを実行して、第2のタイプの第2のデータストレージサービスに記憶された前記データに変化を生じさせ、
前記第1のデータストレージサービスに記憶された変化済み前記データの第1のメタデータを受信かつ記憶し、および前記第2のデータストレージサービスに記憶された前記変化済みデータの第2のメタデータを受信かつ記憶し、
前記第1のメタデータに対応する前記第1のデータストレージサービスに記憶された前記データおよび前記第2のメタデータに対応する前記第2のデータストレージサービスに記憶された前記データが両方共、前記オーダリングされた合意のシーケンスの所定のものに従って変化させた後に確定された時を判断するために、受信した前記第1のメタデータおよび前記第2のメタデータを使用して前記第1のデータストレージサービスと前記第2のデータストレージサービスとの間の同期をとり、
前記第1のメタデータに対応する前記第1のデータストレージサービスに記憶された前記データおよび前記第2のメタデータに対応する前記第2のデータストレージサービスに記憶された前記データが、前記オーダリングされた合意のシーケンスの前記所定のものに従って確定されたと判断された時に、記憶された前記第1のメタデータおよび前記第2のメタデータの比較を実行し、ならびに、
前記比較の結果に応じて選択されたアクションを実行するための処理論理を含む、複数のプロセスと、を含む、コンピューティングデバイス。
【請求項12】
前記オーダリングされた合意のシーケンスは一意の綿密にオーダリングされたグローバルシーケンス番号を使用してオーダリングされる、請求項11に記載のコンピューティングデバイス。
【請求項13】
前記第1の複数の状態マシンおよび前記第2の複数の状態マシンによって、分散協調エンジンからの前記一意の綿密にオーダリングされたグローバルシーケンス番号を受信するための処理論理をさらに含む、請求項12に記載のコンピューティングデバイス。
【請求項14】
前記第1のデータストレージサービスの前記第1のタイプは可変および不変のうちの1つである、請求項11に記載のコンピューティングデバイス。
【請求項15】
前記第2のデータストレージサービスの前記第2のタイプは可変および不変のうちの1つである、請求項11に記載のコンピューティングデバイス。
【請求項16】
前記第1のデータストレージサービスおよび前記第2のデータストレージサービスは均質および異種のうちの1つである、請求項11に記載のコンピューティングデバイス。
【請求項17】
記憶されているデータが有効であるとみなされるように、情報源として前記第1のデータストレージサービスを指定するための処理論理をさらに含む、請求項11に記載のコンピューティングデバイス。
【請求項18】
前記記憶された第1のメタデータおよび第2のメタデータの前記比較が、前記第2のメタデータに対応する前記第2のデータストレージサービスに記憶された前記データが、前記第1のメタデータに対応する前記第1のデータストレージサービスに記憶された前記データと矛盾することを指示する時、前記選択されたアクションは、前記第2のメタデータに対応する前記第2のデータストレージサービスに記憶された前記データを前記第1のメタデータに対応する前記第1のデータストレージサービスに記憶された前記データと置き換えることを含む、請求項17に記載のコンピューティングデバイス。
【請求項19】
前記第1のデータストレージサービスおよび前記第2のデータストレージサービスに記憶された前記データが両方共確定される時を判断するために同期をとるための前記処理論理は、クローズ動作が前記データに対して実行されているのを待機するための処理論理をさらに含む、請求項11に記載のコンピューティングデバイス。
【請求項20】
命令のシーケンスを表すデータが記憶されている非一時的な機械可読媒体であって、
該命令は、コンピューティングデバイスによって実行される時、
第1の複数の複製状態マシンによって、第1のタイプの第1のデータストレージサービスに記憶されたデータに変化を生じさせるためにオーダリングされた合意のシーケンスを実行すること、
第2の複数の複製状態マシンによって、第2のタイプの第2のデータストレージサービスに記憶された前記データに変化を生じさせるために前記オーダリングされた合意のシーケンスを実行すること、
前記第1のデータストレージサービスに記憶された変化済み前記データの第1のメタデータを受信かつ記憶し、および前記第2のデータストレージサービスに記憶された前記変化済みデータの第2のメタデータを受信かつ記憶すること、
前記第1のメタデータに対応する前記第1のデータストレージサービスに記憶された前記データおよび前記第2のメタデータに対応する前記第2のデータストレージサービスに記憶された前記データが両方共、前記オーダリングされた合意のシーケンスの所定のものに従って変化させた後に確定された時を判断するために、受信した前記第1のメタデータおよび前記第2のメタデータを使用して前記第1のデータストレージサービスと前記第2のデータストレージサービスとの間で同期をとること、
前記第1のメタデータに対応する前記第1のデータストレージサービスに記憶された前記データおよび前記第2のメタデータに対応する前記第2のデータストレージサービスに記憶された前記データが、前記オーダリングされた合意のシーケンスの前記所定のものに従って確定されたと判断された時に、記憶された前記第1のメタデータおよび前記第2のメタデータの比較を実行すること、ならびに、
前記比較の結果に応じて選択されたアクションを実行すること、によって、前記コンピューティングデバイスに、均質または異種データストレージサービスに記憶されたデータの一貫性をチェックさせる、非一時的な機械可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本出願は、同一出願人による、2017年3月13日に出願された米国特許出願第15/457,837号、2016年9月26日に出願された15/276,455号、および2008年2月13日に出願された12/069,986号の主題に関し、これら出願のそれぞれの内容全体は参照により本明細書に組み込まれる。
【発明の概要】
【発明が解決しようとする課題】
【0002】
本明細書に開示される実施形態の分野は分散システムを含む。コンテンツを取り込むほとんどのストレージシステムはあるファシリティに与えられて、取り込んだデータのコンテンツが局所的に正確であるまたは一貫しているように見えるかどうかを判断する。しかしながら、等価性の概念は、従来、それぞれのストレージシステムに対するローカルプロパティである。
【図面の簡単な説明】
【0003】
図1】1つの実施形態によるシステムのブロック図である。
【0004】
【0005】
【0006】
図2】1つの実施形態によるコンピュータ実施方法の態様を示すフローチャートである。
【0007】
図3】1つの実施形態によるコンピュータ実施方法の態様を示すフローチャートである。
【0008】
図4】1つの実施形態によるコンピュータ実施方法の態様を示すフローチャートである。
【0009】
図5】本明細書に示されかつ説明される実施形態が実践可能であるコンピューティングデバイスのブロック図である。
【発明を実施するための形態】
【0010】
定義
分散システム:分散システムは、空間的に離間させてよい、および、メッセージまたはイベントの交換を通して互いに通信してよい、異なった、コンピューティングおよび/もしくはストレージプロセスならびに/またはデバイスのコレクションを含む。
【0011】
複製状態マシン:複製状態マシンのアプローチは、サーバを複製し、かつサーバレプリカとのクライアント対話を協調させることによってフォールトトレラントサービスを実施するための方法である。これらの状態マシンは、状態マシンの状態が全ての学習部では同一にオーダリングされるように進化するため、「複製」される。単一サーバのレプリカは分散システムの別個のプロセッサ上で実行され、プロトコルはこれらのレプリカとのクライアント対話を協調させるために使用される。複製状態マシンの1つの例および実装形態は、この状態を決定論的に消費する決定論的状態マシンである。
【0012】
合意:合意は、提案部によって生成されかつ学習部に配信される潜在的な複数の提案イベントのうちの選択されたものである。
【0013】
合意のグローバルシーケンス:1つの実施形態によると、提案は、少なくとも受け入れ部の大半に送信されかつ少なくとも受け入れ部の大半によって合意され、合意のグローバルシーケンスで配信される。合意のグローバルシーケンスを受信するサーバノードは、さらにまた、合意のグローバルシーケンスによって特定される順序で根本的なトランザクションを実行し、かつそれに応じて、これらの複製された台帳のコピーを更新してよいことで、複製された台帳の全てのコピーが確実に同じ順序で更新されるようにする。
【0014】
分散合意/協調エンジン(DConE):1つの実施形態では、Paxosコンセンサスプロトコルの新規な生産グレードの実装形態による合意されたトランザクションのオーダリングされたグローバルシーケンスを生成するために合意または協調エンジンが必要とされる。例示のDConEは、内容全体が参照により本明細書に組み込まれている、2008年2月13日に出願された同一出願人による米国特許出願第12/069,986号に記載されている。DConEは、フォールトトレラントな、連続的に利用可能で決定論的な複製状態マシンである。DConEは、提案部によって生成されたイベントを収集し、これらを、受け入れ部の助けでオーダリングされたグローバルシーケンスに編成し、これらをそのシーケンスで学習部に配信することによって、作用する。学習部は、配信されたイベントのオーダリングされたシーケンスを扱うことによって自身のビジネス論理を実施する。DConEは、合意された提案の同じオーダリングされたグローバルシーケンスでそれぞれの学習ノードに少なくとも一度それぞれの提案イベントを配信することを保証する。
【0015】
非ブロッキング:ここで、「非ブロッキング」という用語は、プロセッサのセットに変更がなされる間完全にまたは部分的に利用可能なままにするプロセッサのセットの能力に言及する。
【0016】
提案部:1つの実施形態によると、提案部は、一部がデータを変化させるように構成されてよい提案を示唆するように構成されかつ示唆可能とされる処理である。
【0017】
受け入れ部:1つの実施形態によると、受け入れ部は、提案部によってなされる提案の順序を決めることに参加するように構成されるプロセスである。1つの実施形態によると、受け入れ部の大部分が、提案がとりわけ、合意のグローバルシーケンスで行われると判断した時にのみ、合意(例えば、合意された提案)になる。受け入れ部は、1つの実施形態によると、合意の順序を決めることにのみ参加するように構成されてよく、合意の根本的なコンテンツについて推論しない/関心がない(本明細書で説明されるように、合意の値はDConEに対して不明瞭である)。受け入れ部はアプリケーション非依存エンティティとして構成されてよい。
【0018】
学習部:1つの実施形態によると、学習部は、提案部と受け入れ部との間でなされる合意を学習し、かつこれらの出力された提案シーケンスを通してアプリケーションに決定論的順序でこの合意を適用する。1つの実施形態では、それぞれの複製状態マシンに対して、合意のシーケンスを永続的に記憶可能にする固定ストアのように、合意アイデンティティが提供される。それぞれの提案は、特定のメンバーシップにおけるそれぞれの学習部に少なくとも一度配信されるように保証される。
【0019】
メンバーシップ:メンバーシップはノードまたはプロセスのセットを特定し、この役割はそれぞれ、ノードの特定されたセット内で果たされる。1つの実施形態によると、メンバーシップは、受け入れ部のセット、提案部のセット、および学習部のセットを含んでよい。
【0020】
分散協調エンジン(DConE)
1つの実施形態によると、DConEは、Paxosアルゴリズムの高度なエンタープライズ版を実施する。Paxosアルゴリズムのもとで、複製状態マシンには、分散システムにおいてそれぞれのノードが設置される(ここで、「ノード」という用語は、プロセスをホストしかつ実行することができる論理または物理エンティティ、例えば、仮想マシンまたは物理マシンを指す)。複製状態マシンはさらにまた、必ずしも同時ではないが、全てのノードにおいて合意の同じ順序を徹底する合意管理に対する協調的アプローチをもたらすピアとして機能する。Paxosアルゴリズムを実施するサーバノードにおける複製状態マシンは、任意の3つの役割、(1)提案部、(2)受け入れ部、および(3)学習部のうちの1つを満たすことができる。Paxosアルゴリズムには、コンセンサスに達するプロセスの間に繰り返されてよい3つのフェーズ:(1)コーディネータまたは提案部とするノードの選定、(2)さらには、提案を受け入れるまたは拒否するのどちらかである学習部の役割を想定するこのピアへのトランザクション提案のブロードキャスト、および、(3)ノードの大部分が、提案部を確認しかつこの提案を受け入れると、コンセンサスに達することが可能になる受け入れ、がある。コーディネータの役割が想定された複製状態マシンはさらにまた、このピアの全てにトランザクションを進めるように通知するコミットメッセージをブロードキャストする。
【0021】
複数のノードが同じ提案に対するコーディネータの機能を果たそうとするシナリオを回避するために、Paxosは、連続するコーディネータノードにオーダリングを割り当て、かつ提案番号に対して合意される値を選択する際のそれぞれのコーディネータの選定を制限する。これをサポートするために、それぞれのノードは、考えられる最新の合意された提案シーケンス番号を追跡し続ける。ノードは、提案を発行する時、認識する最後の値より高い値による提案に対してシーケンス番号を生成し、かつこれを他のノードにブロードキャストする。他のノードの大部分がより高いシーケンス番号を認識していないことを指示するように応答する場合、ノードはさらにまた、提案に対するコーディネータまたはリーダーの機能を果たすことが可能になる。この点で、他のコーディネータは、現在の提案についてコンセンサスに達するまで続行できない。提案部のシーケンス番号は、同時にコーディネータであるように試みる他のノードによって使用不可能であり、全ての今後の提案は今後のトランザクションに対するコンセンサスを実現するためにより高いシーケンス番号を使用しなければならない。
【0022】
DConEによるコンセンサスを実現する
分散トランザクション処理に対するDConEのアプローチを理解するために、以下に、このアクティブ/アクティブ複製能力をサポートするそれぞれのDConEインスタンスのコアコンポーネント:提案マネージャ、ローカルシーケンサ、合意マネージャ、およびグローバルシーケンサについて詳述する。任意のノードにおける顧客による処理のために分散システムに合意が送信される時、DConEのローカルインスタンスの提案マネージャコンポーネントは、1つのデータを変化させるためのコマンドを含んでよい提案を生成する。DConEインスタンスはさらにまた、提案にローカルシーケンス暗号(LSN)を割り当てる。LSNは、トランザクションが全ての他の合意に対して送信された順序を反映する。LSNは、連続番号である必要はなく、単に一意である。ローカルシーケンサはさらにまた、割り当てられたローカルシーケンス番号を有する提案をこの提案ログにセーブする。後述される合意プロセス中にDConEのローカルインスタンスがこのピアに提案を送信可能になる前にネットワークまたはサーバの停止が生じる場合、回復後その提案は再送信されることになる。
【0023】
次に、DConEの合意マネージャは、ローカルDConEインスタンスが他のノードにおけるこのピアに送信されることになる提案に対する提案グローバルシーケンス番号(GSN)を表す合意番号を判断する。Paxosに従って、合意番号は、単に、ノードの全てによって受け入れられる最後の提案のGSNの増分である。この合意番号はさらにまた、ノードの全てにわたる合意のオーダリングについてのコンセンサスを得るために使用されることで、1コピー等価性(one-copy equivalence)が維持される。合意番号を有する提案は、さらにまた、合意ログに書き込まれる。それぞれのDConEインスタンスの合意ログまたは複製台帳は、完了済み合意が生じたサーバノードにかかわらず、少なくとも全ての完了済み合意を含んでいる。ネットワークの停止の発生時に、合意ログは、分散システムにおける他のノードへのこの接続を失う前にノードが中断した場所を指示し、これはDConEの自動回復プロセス中有用になる。合意ログおよび提案ログ両方による回復プロセスにおいて果たされる役割について、以下に説明する。
【0024】
合意プロトコルはさらにまた、ローカルDConEインスタンスの合意マネージャによって指示され、提案はこのピアに送信される。DConEインスタンスのピアのクォーラムが提案に対して合意に達すると、合意番号は、グローバルトランザクションオーダリングがここで実現されているため、ノードの全てにわたってGSNとして使用される。クォーラム概念によって、DConEは、全てのノードが利用可能であるまたは合意している必要なく、合意に達することができる。クォーラム概念は、DConEの性能のみならず、このフォールトトレランスの重要な要素である。クォーラム概念についても以下に説明する。
【0025】
合意が競合提案に取って代わられる場合、合意マネージャは新しい合意番号で合意に達することを繰り返し試みる。合意が再試行される度に、新しい合意番号によるエントリが合意ログにおいて作成される。クォーラムで合意に達すると、ローカルアプリケーションノードは合意した提案をこのグローバルシーケンスにおいてエンキューする。この点で、ローカルDConEインスタンスは、合意されたグローバルシーケンス番号順で、処理のためのこの対応するロックスケジューラにトランザクションを渡す。提案が生じたDConEインスタンスが、トランザクションの実行を完了させるために他のノードのいずれかを待機せず、合意に達することのみを待機することで、ユーザはLAN速度性能を体験することが可能になることに留意することは重要である。
【0026】
ローカルシーケンスを保持する
DConEが性能の理由のためにコンカレントな同意をサポートするため、クォーラムが順不同で合意に達することが可能である。すなわち、別のノードで先に送信したが合意に達していない提案の後に送信された提案に対して合意に達することが可能である。
【0027】
DConEが複数のサーバノードから提案を採用し、これらを一意のグローバル順序に照合し、全ての他のサーバノードにアクセスできるようにすることをリコールする。時には、所与のサーバノードにとって、到着時間に基づいて提案を扱う際に先着順でまたは先入れ先出し(FIFO)でプロセスを実施し、かつこれらが同じ順序で出力されることを確認することが望ましい。この種類のオーダリングは、例えば、1つの実施形態に従って、複数のサーバノードによって発行された全ての提案に対して、捕獲しかつ達するコンセンサスによって満たされる2つの要件である、公正ポリシまたはカジュアルなオーダリング制約によって規定される場合がある。
【0028】
以下に、DConEが、提案の送信のローカルシーケンスを保持する間にグローバルトランザクションオーダリングを判断できるようにする1つの実施形態を示す。サーバノードがこの最初の2つの提案をDConEに送信し、かつ提案マネージャが各提案にLSN1およびLSN2を割り当てると想定する。さらに、GSN1~25の合計25の提案が合意されており、かつ介在する提案が他のサーバノードに送信されていないと想定する。さらに、クォーラムがLSN1に対する合意に達する前にLSN2に対する合意に達したと想定する。ローカルシーケンスがアプリケーションには関係がない場合、LSN2は合意番号およびGSN26を有することが考えられ、LSN1は合意番号およびGSN27を有することが考えられる。提案はさらにまた、サーバノードの全てにおいてその順序で書き込まれることになる。提案が生じる場所にかかわらず、ローカルシーケンスが確実にノードの全てにおいて保持されるという要件がある場合、1つの実施形態では、LSN、この場合、最後にはGSNになってもならなくてもよい合意番号、および、ローカルシーケンス順序を保持するグローバルシーケンスを構成するために、提案が生じたDConEインスタンスに対するグローバル一意識別子を表す提案部IDの組み合わせが使用される。実際は、グローバルシーケンスは、提案部ID内でローカルシーケンス順序で分類され、かつそれぞれのサーバノードにおいて、以下に論じられるロックスケジューラに渡される。
【0029】
ロックスケジューラ
それぞれのサーバノードにおけるロックスケジューラはDConEがサーバノードのそれぞれにおいて実行しているアプリケーションに合意された提案を渡す。ロックスケジューラは、分散ロックマネージャではなくデータベーススケジューラのようにふるまう。「ロックスケジューラ」という用語は、同時制御のためにアプリケーションによって特定されるロックに頼ることで、多数の競合しない合意が並列に処理可能であるという事実によってもたらされる。ロックスケジューラはグローバル順序に関してとらわれない。ロックスケジューラがそれぞれのサイトで根本的なアプリケーションにトランザクションを送信する順序は、このサーバノードにおいてこの対応するDConEインスタンスから渡されたグローバルシーケンスのイベント(GSNキュー)のローカルキューによって駆動される。これによって、それぞれのサーバノードにおいて完全にローカルなロックスケジューラが、グローバル状態を何も知らずに1コピー等価性を実現可能になり、これは、DConEと直接ではなく、根本的なアプリケーションと対話するロックスケジューラである。
【0030】
性能およびスケーラビリティを実現する
DConEは、Paxosアルゴリズムの機能性をかなり拡張することによって、性能を規模に応じて向上させることが可能になる。このように拡張させた機能性は、クォーラム、コンカレントな合意処理、バックオフおよび衝突回避、動的グループの進展、分散型ガベージコレクション、提案および弱い予約に対する区別されかつ公正なラウンドナンバーを含むが、このように拡張された機能性によって包含される数エリアが識別される。
【0031】
クォーラム
DConEによって使用されるクォーラム概念によって、性能を最適化させることができ、かつネットワークおよびサーバの停止の影響をサーバノードにわたるユーザの分布に基づいて最小限に抑えることが可能になる。利用可能であるクォーラム構成オプションは、マジョリティ、シングルトン、および満場一致を含む。分散システムは、マジョリティのクォーラムによって実現されるコンセンサスで動作すると予想されるが、シングルトンおよび満場一致のコンセンサスも可能である。マジョリティのクォーラムでは、サーバノードのマジョリティがいずれの提案にも応答することが必要とされる。DConEはまた、分散システムにおいて偶数のサーバノードがあるイベントでタイブレークの機能を果たすことができる区別されたノードの概念をサポートする。シングルトンのクォーラムでは、1つのノードのみが提案に応答しなければならない。この構成のもとでシングルトンのクォーラムであるように選択されたサーバノードは、最大数の顧客および最高レベルの取引活動を有するサーバノードであってよい。この利益として、最高トランザクションボリュームでのサーバノードにおける合意プロセス中に広域ネットワーク(WAN)トラフィックが生成されないことがある。全体的に、クォーラムノードにおけるローカルDConEインスタンスによって合意が扱われる。他のサーバノードはこれらの提案を送信して、シングルトンクォーラムノードから合意を得るが、典型的には、高速性能を体験し、これは、これらが、指定されたシングルトンサーバノードにこれらの提案に合意させる必要があるだけで、該提案を各々のローカルなロックスケジューラに渡す前にこれらの実行を完了する必要はないからである。満場一致のクォーラムは、全てのサーバノードに応答させる必要があり、本質的に少なくとも効率的な構成であり、最大のWANトラフィックを生じさせる構成である。
【0032】
DConEはまた、フォローザサンモデルに基づく領域間のクォーラムのローテーションをサポートする。これによって、グローバル分散型システムにおけるそれぞれのサイトでの通常作動時間に基づいて最適化させる性能が可能になる。さらに、クォーラムアプローチは、分散システムにおけるネットワークの停止およびサーバクラッシュの影響を最小限に抑えるためにDConEの自動回復機能と組み合わせて作用する。
【0033】
コンカレントな同意
Paxosアルゴリズムは、1つの提案に対して1度合意に達することのみを可能にする。これには、高いトランザクションボリュームの環境における性能を減速させる明白な効果がある。DConEは、提案ベースによる提案に対するサーバノードの全てまたはクォーラムによって達する合意を待機するのではなく、複数の提案部からの複数の提案を同時に進行させることが可能である。
【0034】
バックオフおよび衝突回避
DConEは、提案部の取って代わることの繰り返しをこれらのピアによって回避するためのバックオフ機構を提供する。従来の複製状態マシンによって、取って代わられた提案部は取って代わる側より高い合意番号によって新しいラウンドを即座に開始することが可能になる。このアプローチは、延長期間のスラッシングをもたらし、かつ性能を大幅に低下させる合意プロトコルをもたらす可能性がある。DConEでは、1ラウンドに取って代わられる時、提案を開始したDConEインスタンスは、バックオフ遅延の継続時間を計算する。提案部はさらにまた、次のラウンドを開始する前にこの継続時間待機する。DConEは、非切換イーサネットに対する搬送波感知多重アクセス/衝突検出(CSMA/CD)プロトコルと同様のアプローチを使用する。
【0035】
自動バックアップおよび回復
DConEのアクティブ/アクティブ複製能力は、全てのサーバノードを他の全てのミラーに変えることによってデフォルトでの連続的なホットバックアップをもたらす。これは、サーバノードがネットワークまたはサーバの故障により後れを取る時にWANまたはLAN上での自動回復を提供するために活用される。人的介入は必要とされない。分散システムにおけるサーバノードがこのピアとの接触を失うが、この場所で依然ユーザに利用可能である場合、これらのユーザは依然分散システムへの読み込みアクセスを有するが、合意プロセスを進行させることができないため、提案を発行することができない場合がある。これは、サーバノードがこのピアとの同期から外れることで、サーバノードの全てにわたる1コピー等価性の要件に違反することになるスプリットブレインシナリオが生じないようにする。しかしながら、クォーラムが依然利用可能であるならば、提案は依然、残りのサーバノードで送信可能である。これによって、分散システム上のネットワークの停止およびサーバの故障の影響が最小限に抑えられる。故障したサーバノードが再びオンラインになるとすぐ、このDConEインスタンスは、オフラインだった間にこのピアによって合意された提案の全てに自動的に追い着く。これは合意ログを使用することによって達成される。合意ログは停止が生じる前にサーバノードにおいて完了した最終分を含有する。回復プロセスが開始する時、サーバノードのDConEインスタンスは、このピアからのこの合意ログにおいて最後分が記録された後に合意全てを要求する。さらに、合意プロセスを完了しなかった提案ログに残ったいずれの提案も、キャッチアップが完了すると、ローカルDConEインスタンスによって自動的に再送信される。これは、分散システムにおけるサーバノードにわたって任意の提案に対して合意に達する前または達した後に、停止が生じるかどうかにかかわらず、失われるデータはないことを意味する。
【0036】
さらに、DConEの自動回復能力は、WANではなくLAN上でのみ作用し、かつ回復を実現するために管理者の介入を必要とするディスクミラーリングの解決策の必要性を排除する。その結果、これらの解決策は、ダウンタイムの延長の危険性および人的エラーによるデータ損失を取り入れる可能性がある。最後に、DConEの自動回復機能はまた、ユーザアクセスを中断させることなくメンテナンスのためにサーバをオフラインにすることが可能であるが、これは、該サーバがオフラインの間、ユーザが別のサイトにおけるサーバノードにリダイレクト可能であるからである。これによって、グローバル分散型環境における完全な24時間/週(24-by-7)動作が可能になる。
【0037】
図1は、1つの実施形態による、WANに及ぶクラスタおよび分散ファイルシステムのコンポーネントのブロック図である。ここで示されるように、1つの実施形態による分散ファイルおよびストレージシステム102は、2つ以上のドメイン、すなわち、ドメイン1およびドメイン2を含んでよい。例えば、ドメイン1はアマゾンAWSストレージサービスを含んでよく、ドメイン2は、例えば、マイクロソフトAzureストレージサービスを含んでよい。ドメイン1および2は互いに地理的に遠隔であってよい。例えば、ドメイン1およびドメイン2は、1つの国の異なる地域に位置してよく、異なる大陸上で異なる時間帯に分布してよく、完全に独立した配電網から引き出してよい。ドメイン1および2は、例えば、インターネットならびに/または他のプライベートネットワークおよび/もしくは固有ネットワークを含んでよいWAN108を介して互いに緩く結合されてよい。ドメイン1および2はまた、他の専用の高速接続を介して結合されてよい。2つのこのようなストレージサービス、ドメイン1および2のみが図1に示されているが、実施形態がより多いドメインを含んでよいこと、および分散ファイルシステム102がこのようなドメイン全てにわたって拡張することは理解されたい。
【0038】
示されるように、ドメイン1は、「MDS」110、112、114ならびにMDS116、118、および120として図1に示される複数のアクティブな(これとは対照的に例えばスタンドバイまたはフェールオーバーの)メタデータサーバ(この他に、Hadoop NameNodeは1つの可能な実装形態である)を含んでよい。MDS110、112、114のそれぞれは、分散ファイルシステムのドメイン1内の名前空間の状態を記憶するように構成されてよく、MDS116、118、120のそれぞれは、分散ファイルシステムのドメイン2内の名前空間の状態を記憶するように構成されてよい。理想的には、ドメイン1における名前空間の状態は、任意の所与のGSNにおいて、ドメイン2における名前空間の状態と同じになる。MDSの間の協調および名前空間のメンテナンスの態様は、分散協調エンジン(DConE)プロセス122によって提供されてよい。図1では、DConEプロセス122は、これを、ドメイン1、ドメイン2、およびWAN108に及ぶ別個の論理エンティティであると示唆するように示される。しかしながら、1つの実施形態によると、上記および以下に説明されるDConE122の機能性は、MDS110、112、114、116、118、および120のそれぞれによって果たされる場合がある。すなわち、MDS110、112、114、116、118、および120のそれぞれは、いくつかあるこの他の機能の中で特に、DConE122の役割の一部または全てを実行するように構成されてよい。
【0039】
示されるように、ドメイン1は、図1において「DN」と称される複数のDataNode124、126、128、130を含んでよい。同様に、ドメイン2はまた、「DN」と称される複数のDataNode132、134、136、138を含んでよい。示されるように、DataNode124、126、128、130のそれぞれは、DCA102のMDS110、112、および114のそれぞれと通信するように結合および構成されてよい。さらに示されるように、DataNode132、134、136、138のそれぞれは、DCB106のMDS116、118、および120のそれぞれと通信するように結合および構成されてよい。代替的には、DN124、126、128、130は、外部から、ストレージサービス(例えば、アマゾンウェブサービスまたはAWS)によって内部で管理されるモノリシックストレージリソースであるとみなされてよい。同様に、DN132、134、136、138はまた、ストレージサービス(例えば、Azureまたはその他のストレージサービス)によって内部で管理されるモノリシックストレージリソースであるとみなされてよい。1つの実施形態によると、MDSは、DataNodeと直接通信しない場合がある。実際は、1つの実施形態によると、DataNodeはMDSに要求を送るように構成されてよく、これに基づいて、MDSは、受信した要求に応答するコマンドをDataNodeに発行する。従って、MDSはDataNodeを制御するといわれる場合があるが、DataNodeは、1つの実施形態によると、コマンドを受信するためにMDSに要求を送るように構成されてよい。4つのDataNode124、126、128、130は、ドメイン1に示されている。同様に、4つのDataNode132、134、136、および138は、ドメイン2に示されている。しかしながら、ドメイン1および2のデータがそれぞれ、図1に示されるより多くの(例えば、何千もの)データノードを含んでよいことは理解されたい。
【0040】
3つのMDS110、112、114は、ドメイン1内に設けられるように示されるが、ドメイン1内により多くのMDSが設けられてよい。同様に、3つのMDS116、118、120は、ドメイン2内に設けられるように示されるが、DCBドメイン2内により多くのMDSが設けられてよい。クォーラムの目的で、データセンタ内のMDSの数は奇数であるように選択されてよい。
【0041】
1つの実施形態によると、図1は、異なった地理的に離間したドメインに及ぶ単一の分散ファイルシステムを実行しているクラスタを示す。分散ファイルシステムは例えば、HDFSの態様を組み込んでよい。DataNodeのそれぞれは、これら自体のドメイン内のMDSのみと(DataNode-NameNodeリモートプロシージャコール(RPC)プロトコルを通して)通信するように構成されてよい。逆に言うと、データセンタのMDSは、これら自体のドメイン内のDataNodeのみを制御するように構成されてよい。すなわち、ドメイン1のDataNodeは、1つの実施形態によると、ドメイン1と関連付けられたMDSのみと通信してよく、ドメイン2のDataNodeはドメイン2と関連付けられたMDSのみと通信してよい。
【0042】
1つの実施形態によると、DConEプロセス122は、名前空間の状態に対する同じ決定論的更新がMDS全てに対する同じ決定論的順序で適用されることを保証するように構成されてよい。1つの実施形態によると、決定論的順序はグローバルシーケンス番号(GSN)によって定められる。従って、DConEプロセス122の重大な役割は、1つの実施形態によると、全てのMDSから名前空間の状態を修正するあるいは更新し、かつこれらを合意のグローバルにオーダリングされたシーケンスに変換するための提案を処理することである。MDSはさらにまた、合意を、これらが記憶された状態に対する更新としてこのオーダリングされたシーケンスから連続して適用してよい。1つの実施形態によると、GSNは一意の単調に増加する番号として構成されてよい。しかしながら、GSNは、その他の場合、当業者が認識可能であるように構成されてよい。GSNはさらにまた、名前空間の状態を更新し、かつMDSにわたって名前空間が一致することを維持する(または、MDSのそれぞれに記憶された名前空間の状態を、合意のグローバルに順位付けられたシーケンスの連続した適用によって経時的に一致させる)際に異なるMDSの進行を比較するために使用されてよい。例えば、MDS110がMDS112によってのみ処理されたGSN2より小さいGSN1と番号付けされた合意のみを処理した場合、MDS110はMDS112より早い名前空間を有する。MDS110によって記憶された名前空間の状態は、MDS112がその間により高い番号が付けられた合意を処理していないとすれば、MDS110がGSN2を処理するとすぐMDS112によって記憶されるものに適合させる。このように、DConEプロセス122によって生成された合意の(GSN機構を通して)オーダリングされたセットを連続して実行することによって、データセンタのそれぞれにおけるMDSのそれぞれに記憶された名前空間の状態は理想的には、一致させるようにするまたは一致するように維持される。
【0043】
1つの実施形態によると、それぞれの動作では、クライアントは、クライアントが現在接続されているMDS上で処理された最新のGSNについて学習する。その後、クライアントが別のMDSに切り換える場合、1つの実施形態によると、最初、(必要に応じて)新しいMDSが、書き込みなどのデータアクセスコマンドを含むRPCを発行する前にクライアントが知っている最後のGSN(すなわち、クライアントが以前にアクセスしたMDSから受信したGSN)に追い着くまで待機するものとする。これによって古いデータの読み出し(stale read)の問題が回避されることになる。MDSは同じ状態から開始するため、更新のこのオーダリングされた適用は、同じGSNにおける合意を処理した異なるノードで撮られたこのスナップショットが、データセンタ内でおよびこれにわたって同一であるという点でレプリカの一致を含意する。
【0044】
1つの実施形態は、DConEプロセス122が合意をもたらす際に、瞬間的に(または、ネットワークにおいて固有である帯域幅およびレイテンシを考慮して、ほぼ瞬間的に)MDS110、112、114、116、118、120の間の全てのメタデータを協調させる。同様に、全てのファイルシステムデータはまた、クラスタのドメインにわたって自動的に複製される。1つの実施形態では、クラスタ(例えば、限定はされないがHadoop)におけるファイルシステム間で一致した連続的なデータ複製が提供される。クライアントアプリケーションは、複数のクラスタにわたって根本的なストレージを統合する仮想ファイルシステムと対話するように構成されてよい。1つのクラスタにおいてファイルに変更がなされる時、これらの変更は他に及ぶクラスタに一致させて複製される。1つの実施形態は、Hadoopのデプロイによって、例えば、CDH、HDP、EMC Isilon、アマゾンS3/EMRFS、およびMapRなど、Hadoopの異なる、さらには互換性のあるバージョンを実行している(例えば、Hadoop)クラスタの間のHCFSデータが複製可能になるソフトウェアアプリケーションを含んでよい。また、1つの実装形態によると、Hadoopの異なるベンダ分布およびバージョンの間で複製することが可能である。
【0045】
有利には、実施形態は、ストレージサービスドメインの間で複製される単一コピー整合データをもたらす、分散型仮想ファイルシステム、単一の仮想名前空間、およびアクティブ/アクティブ複製技術を使用するWAN複製を提供する。
【0046】
実施形態は、必要とされる時に追加の処理能力を得るために、例えば、AWS、オンデマンド計算能力を供給するプラットフォーム、データベースストレージ、コンテンツ配信、および他の機能性など、データをリモートクラウドサービスに転送することによってクラウドにおける処理能力を高めるように構成されてよい。
【0047】
等価性および一貫性チェック
本明細書に説明されかつ示されるように、実施形態は、主な目的が、異なっている均質または異種ストレージシステムにわたってデータを複製することである複製状態マシンの応用を通して速度を変化させかつオーダリングされたアクションを採用する非同期プロセスから成る分散システムにおけるデータの等価性を判断するための方法および分散システム(およびこれによって可能になる機能性)に関する。本明細書における実施形態は、根本的なストレージシステムに関係なく、データのモニタリングおよび等価性チェックを持続させることができる。実施形態は、アプリケーションを規模に応じて促進させるように全体を通して構成可能である。等価性は、ある性質、例えば、コピーデータのチェックサムがこの元のチェックサムと適合するかどうかに関して判断されてよい。Apache HDFSのような分散ストレージファシリティは、データブロックに対するチェックサムを生成し、かつこの情報を使用してブロックレプリカの一貫性を判断する。アマゾンのSimple Storage Service(S3)によって、ユーザは、データブロブと共にメタデータを含むことによって、クライアントが正確なデータ受信を確認できるようにすることが可能になる。マイクロソフトのAzure Storageは同様の機能性を有する。観測上はデータが等価である方法は、(例えば、S3における)クライアントによって、または(例えば、Apache HDFSにおける)システムによって定められてよい。
【0048】
本明細書に示されかつ説明される実施形態は、一貫性の不変が妨害されているかをリアルタイムに(またはできるだけ早く)判断する、すなわち、分散型異種ストレージシステムにわたるデータの一貫性のチェックのためのコンピュータ実施方法、デバイス、およびシステムを含む。
【0049】
本明細書では、等価であるまたは等価性という用語は、全てのレプリカが機能的に互いに等価のコピーであるという、1コピー等価性に言及する。すなわち、2つ以上のノードがデータの同一のコピーで開始し、かつそのデータに対する全ての変更がそれぞれのコピーに同じ順序で適用される場合、x回のトランザクションの終わりに、コピーは全て互いに等価のままになる。本明細書に説明されかつ示される実施形態は、
その他の場合、それぞれのシステムが矛盾を取り入れることなく同じデータのこれらのローカルコピーに対して読み書きできる非互換のストレージシステムを使用する環境間の一貫性チェックを可能にする。実際は、相違が生じる危険を冒さずにどちらかの環境でデータのローカルコピーに変更を行うことができる。実施形態は従って、異種データストレージシステムにわたるユーザデータの1コピー等価性を示すためにクラウドおよびオンプレミスストレージにわたるグローバルレベルでの一貫性チェックを可能にする。
【0050】
本明細書に提示される実施形態は、ストレージシステムにわたる等価性を取り入れるために単一のストレージシステムを超えて等価性を拡張する。本明細書では、分散型状態マシンによって生成されるオーダリングされた命令に基づいて、異なっている均質または異種ストレージシステムにわたる変化が生じる順序性は、1つのストレージシステムおよび複製された異なっている記憶技術によって取り込まれるデータが、1つまたは複数のストレージシステムに一般的なまたはとらわれない等価性に対して等価であるかどうかを判断するために使用される。実施形態は、構成可能でありかつスケーラブルであり、変化が生じるプロセスから完全に切り離されている。
【0051】
実際は、いわゆるビックデータ環境における大規模な分散システムの文脈の範囲内で、データ点のそれぞれのコピーが複数のデータレポジトリサイトにわたって同じであるかどうかを一貫して判断することが可能であることは有用である。本明細書では、データへの変更(例えば、データへの書込み、追記、または追加)はオーダリングされることが想定される。すなわち、全てのデータストレージサイトにわたって同じ順序で同じデータに対して複製サーバ(複数可)によって同じ変更が加えられる。その同じ順序は、上述されるグローバルシーケンス番号(GSN)によってまたは等価の機構によって決定される。1つのサービス(例えば、アマゾンのAWSサービス)によって記憶されるデータは、別のサービス(例えば、マイクロソフトのAzure)によって記憶された同じデータのコピーと同時に同じ変化を見られない場合があるが、それにもかかわらず、同じ順序で同じ変更が適用されることで、厳密には同時ではない可能性があるが、データのコピーは同様に変化する。経時的に、万一データへのさらなる変化が適用されない(その1つのデータに関する全ての合意が消費されている)ならば、データは確定され(変更されないままであり)、かつAWSサイトおよびAzureサイト両方で等価になる。
【0052】
図2は、1つの実施形態によるデータの一貫性をチェックするコンピュータ実施方法の態様を示す。ここに示されるように、B202は合意を消費する複製状態マシンを示し、この合意のいくつかは1つまたは複数のストレージサービス206に記憶されるデータを変化させてよい。それぞれのストレージサービス206は、B202における複製状態マシンによって記憶されたデータの変化の影響を観測し、かつ対応する通知を発行するためのあるファシリティを含んでよい。このようなファシリティはイベント面208において図2に表されている。例えば、アマゾンAWSでは、このようなファシリティは、とりわけ、AWS Cloudtrailによって提供されてよい。Cloudtrailは、ガバナンス、コンプライアンス、および、AWSアカウントの業務およびリスク監査を可能にするAWSサービスである。ユーザ、役割、またはAWSサービスによって取られるアクションは、CloudTrailにおけるイベントとして記録される。イベントは、AWSマネジメントコンソール、AWSコマンドラインインターフェース、ならびにAWS SDKおよびAPIにおいて取られるアクションを含む。AWSアカウントにアクティビティが生じる時、そのアクティビティはCloudTrailイベントに記録される。CloudTrailコンソールにおけるイベント履歴で最近のイベントを見ることができる。AWSアカウントにおけるアクティビティおよびイベントの進行中の継続する記録のために、トレイルが作成されてよい。CloudTrailによって、ユーザまたはプロセスではAWSインフラストラクチャにわたるアカウントアクティビティを、見る、検索する、ダウンロードする、アーカイブする、解析する、およびこれに応答することが可能になる。トレイルは、メタデータを通して、いくつかある詳細の中で特に、どのアクションを誰がまたは何が行うのか、何のリソースが作用したか、いつイベントが生じたかを識別するように構成されてよい。イベントの記録は、トレイル設定を適切に設定することによって、カスタマイズ可能である。イベントが生じると、トレイル設定は、イベントがトレイル設定に適合するかどうかを判断するために評価される。前から存在するトレイル設定に適合するイベントのみがログ記録される。
【0053】
トレイルはデータおよび管理イベント両方をログ記録するように構成されてよい。データイベントは、リソース上またはリソース内で行われるリソース動作についての見識を与える。これらはまた、データプレーン動作として既知である。管理イベントは、AWSアカウントにおけるリソース上で行われる管理動作についての見識を与える。これらはまた、制御プレーン動作として既知である。データプレーン動作および制御プレーン動作の両方は、イベント面208として図2に表されている。
【0054】
同様に、マイクロソフトのAzureはまた、データプレーンログおよび制御/管理ログ両方を提供する。Azure診断ログなどのデータプレーンログは、Azureリソース利用が部分的に発生したイベントについての情報を提供する。このタイプのログの例は、仮想マシン(VM)におけるWindowsイベントシステム、セキュリティ、およびアプリケーションログ、ならびにAzure Monitorを通して構成される診断ログである。制御/管理ログによって、Azure Resource Managerの作成、更新、および削除の動作についての情報が提供される。このようなログファシリティはまた、イベント面208として図2に表されている。Azureにおける診断設定は、リソースログを要望通りに構成できるようにする。
【0055】
その他のストレージサービス(単数または複数)のAWS、Azureから生じるかどうかにかかわらず、イベント面208は、ユーザが、サービス上で記憶されたデータおよびこのようなデータになされた変更を観測できるように構成されてよい。例えば、ストレージサービスのログ記録機能性は、いくつかある可能なイベントの中で特に、データの作成、ファイルのオープンもしくはクローズ、ファイルの移動、書き込み動作、削除動作、および/またはストレージサービスにわたる一貫性についてモニタリングされるデータに影響する任意の他の動作をログ記録するように構成されてよい。1つの実施形態では、それぞれのストレージサービスのイベント面208は、根本的なストレージに関連している、選択されたイベントの通知を生成しかつ送るように構成されてよい。
【0056】
プロパティ取得はB206において図2に示されている。1つの実施形態によると、プロパティ取得B206は、記憶されたデータに関する選択された情報を取得するために根本的なストレージサービスのログ記録サービスに問合せする(および/または該サービスから通知を受信する)ように構成されてよい。例えば、プロパティ取得ブロックB206は、例えば、選択されたメタデータを記憶するS3バケットに問合せするように構成されてよい。アマゾンS3バケットは、AWSのSimple Storage Service(S3)のオブジェクトストレージオファリングで利用可能であるパブリッククラウドストレージリソースである。ファイルフォルダと同様であるアマゾンS3バケットは、データおよびこの記述メタデータからなるオブジェクトを記憶する。このようなメタデータは、例えば、データサイズ、名称、チェックサム、およびユーザ権限などを含んでよい。S3バケットから取り出されたメタデータもしくは他のメタデータレポジトリ、またはその他のデータサービスのログは、1つの実施形態に従って、根本的なストレージにとらわれないように構成されてよい。すなわち、プロパティ取得ブロックB206によって取り出されたメタデータは、いずれのストレージサービス固有のメタデータも含まなくてよいことで、1つのストレージサービス(例えば、AWSなど)上に記憶されたデータのメタデータを、その他のストレージサービス(Azureまたは任意の他のサービスなど)上に記憶されたデータのメタデータと、容易にかつ有意義に比較可能にする。例えば、プロパティ取得ブロックB206は、AWS S3バケットから選択されたメタデータを取り出し(または、これに関する通知を受信し)、かつ、S3と同様のストリーミングストレージサービスであるマイクロソフトのAzureのブロブから同様のメタデータを取り出す(または受信する)ことができる。他の同様のストレージサービスは、例えば、Cloud Pub/Subが、イベント、およびイベントによって影響されるオブジェクトを含む、モニタリングされるデータオブジェクトへの変更についての通知を受信しかつ送る、Google Cloudを含む。いずれの場合でも、プロパティ取得ブロックB206は、1つの実施形態によると、2つ以上のストレージサービスから、選択されたイベント(単数または複数)によって影響されたデータオブジェクトのメタデータを収集するように構成されてよい。1つの実施形態によると、プロパティ取得ブロックB206は、名前空間にわたってパーティション分割されることで、プロパティ取得ブロックB206が2つ以上のノードにわたって分布されるようにしてよい。従って、プロパティ取得ブロックB206のそれぞれのコンポーネントは、データストレージシステムの所定のまたは選択されたパーティションにデリゲートされてよい。1つの実施形態では、パーティション分割はまた、動的であってよく、プロパティ取得ブロックB206の任意のコンポーネントはオンザフライで根本的なストレージの1つまたは複数のパーティションにデリゲートされてよい。プロパティ取得B206が根本的なストレージサービスに問い合わせるまたはイベント面208から通知を受信する頻度は、選択可能である。例えば、メタデータは、規則的なまたは所定の時間間隔でおよび/または所定の基準を満たす際、書き込まれる度に、および/またはデータ点(オブジェクト、ブロック、所定のデータ量)がクローズされる度に、一貫性チェックのために収集されてよい。従って、根本的なストレージサービスの問合せの通知または頻度の粒度は、実施形態に従って、一貫性チェックが実行可能である回数および/または頻度を定めてよい。従って、一貫性チェックは、かなり規則的に間隔があけられてよい、または、データ点をクローズすること、およびストレージサービスにわたるそのデータ点に対する変化の確定など、所定のイベントの発生時に実行されてよい。
【0057】
コーディネータブロックB208は、いくつかのストレージサービスからの収集されたメタデータに関する通知をイベント面B204から受信するために提供されてよい。1つの実施形態によると、コーディネータブロックB208は、異質なクラウド環境にあるデータの間で有意義な比較が行われ得るように分散ストレージシステムまたはサービスの複数のインスタンスの間で同期をとる。1つの実施形態では、このような同期は、グローバルシーケンス番号もしくはGSN、または、分散システムにわたるデータへのオーダリングされた変化を決定するその他のオーダリング機構を使用して実行されてよい。1つの実施形態では、ブロックB208のコーディネータは、異種のストレージシステム(AWSおよびAzureなど)が所定のデータに対する所定の変化を生じさせた時を判断するように構成されてよい。1つの実施形態では、所定の変化はGSNによって識別可能である。すなわち、コーディネータB208は、特定のデータのインスタンスを記憶するストレージシステムの全てが、選択されたGSNによって求められた変化を生じさせることを終了し、かつそれ以来そのデータを再び変化させない時を判断するように構成されてよい。実際は、特定のデータのコピーを記憶する全てのストレージサービスが全てそのデータに対して所定の変化を生じさせた場合、B206におけるプロパティ取得ブロックによって収集されたストレージサービスにとらわれないメタデータは、根本的なデータの等価または非等価を、すなわち、データがストレージシステムにわたって同じであるかどうかを判断するために互いに有意義に比較されてよい。1つの実施形態では、それぞれの変化は、関連のGSNにタグ付けされることで、コーディネータブロックB208は、それぞれのストレージサービス上のデータが、GSNが関連している動作によって変化させられたかどうかを容易に判断することが可能になる。従って、GSNの記録はストレージサービスに常駐してよい。
【0058】
AWS、Azure、Google Cloudなどのストレージサービスは、必ずしも異なる速度で動作するわけではない。ストレージサービスにとらわれないメタデータをプロパティ取得ブロックB206から受信するコーディネータB208は、データのコピーを記憶しかつ変化させる全てのストレージサービスが全てその同じデータに対して同じ変更を行うまで待機するように構成されてよい。実際は、アプリケーションドメインにより、異なるストレージサービスが動作する異なる速度は考慮に入れられなければならない。これを行うために、変更の状態マシン発行アイデンティティ(1つの実装形態では、GSN)が使用可能である。例えば、1つのストレージサービスプロセスが書き込みのシーケンス(x、0)、(x、1)を発行したと想定すると、タプルの第1のコンポーネントが変化の対象であり、タプルの第2のコンポーネントが状態マシンによる変化に対して発行されたアイデンティティであり、別のストレージサービスは(x、0)を発行している。このシナリオのもとで、前者のストレージサービスは後者のストレージサービスより大きく進展する(例えば、より早く合意を処理している)と見られる。このような場合、第1のストレージサービスは(x、0)および(x、1)を実行しているのに対し、第2のストレージサービスは(x、0)のみを実行している場合にxに対してプロパティまたはメタデータを一度比較しようと試みることは、等価性に関するいずれの有用な情報ももたらすことはない。従って、関連のメタデータの有意義な比較を可能にするために、xに対する変化をストレージサービスにわたって安定させるまで待機することは意味がある。この文脈において、データ点xの安定化または確定は、(例えば、1つのストレージサービスにおける)アクティブなプロセスが、コーディネータB208によって判断されるように、(例えば、別のストレージサービスにおいて)1つまたは複数の他のプロセスを超える一連の変化を観測しているようにxに対する変化が存在しない時に存在するといわれる場合がある。1つの実施形態では、(特定のデータをいくつかのストレージサービスにわたって簡潔に安定させているが、その後変化させる時など)誤検知の数を低減させるために、関連のメタデータを、イベント面208に生成させかつプロパティ取得に受信させる変化の領域は、限定される場合がある。実際は、書き込みおよび追記などのデータに対する細かいアクションではなく、コーディネータは、1つの実施形態において、ストレージサービスのそれぞれにおけるデータに対して、GSNなどのマシン発行アイデンティティによってタグ付けされた、クローズ動作が行われた後にのみデータを安定させたかを判断してよい。そうすることによって、例えば、レイテンシ、メタデータのストレージ、計算負荷、およびネットワークトラフィックを含む一貫性チェックと関連付けられたオーバーヘッドが低減される。
【0059】
1コピー等価性の目的は、決定論的システム、同様に順位付けられた変化、および同じ初期条件を仮定すると、それぞれのストレージサービスがデータに対する同じ一連の変化を生じさせると、データがストレージサービスのそれぞれにおいて同じ状態になり、1つのストレージサービスにおけるデータの任意の1つのコピーが、他のストレージサービスにおいて記憶されるこのありとあらゆる他のコピーと等価であるようにすることである。従って、B208におけるコーディネータがストレージサービスのそれぞれから、(例えば、選択されたGSNによって判断されるように)データの特定の状態と関連付けられた、ストレージサービスにとらわれないメタデータを受信する場合、ストレージサービスのそれぞれからのメタデータは根本的なデータのコピーの等価性を判断するために比較されてよい。これを行うために、変化の所与の状態マシン発行アイデンティティ(例えば、選択されたGSNまたは他のオーダリング機構)におけるデータのインスタンスを記憶するストレージサービスのそれぞれからのメタデータは、B210においてプロパティチェックブロックによって比較されるように、コーディネータB208のメタデータコンテナ210に記憶されてよい。しかしながら、状態マシン発行アイデンティティ(GSNまたはその他)の全てがデータ点の変化と関連付けられるわけではないことは留意されたい。実際は、一部はデータへの変更に無関係であり、代わりに、データ点の変化をもたらさない他のハウスキーピング問題に関連している。このような場合、根本的な記憶されたデータが所与の状態マシン発行アイデンティティで確定されているとすれば、メタデータは、1つの名前空間が1つのGSNにある場合があり、かつ別の名前空間が別の異なるGSNにある場合があっても収集可能である。
【0060】
プロパティチェックB210は、1つの実施形態によると、メタデータコンテナ210に記憶されたストレージサービスにとらわれないメタデータを比較することによって根本的なデータの等価性をチェックするように構成されてよい。例えば、AWSに記憶されたファイルAが特定のGSNにおいて書き込まれ、かつAzureなどの別のストレージサービスに記憶された同じファイルAがまた、必ずしも同時にではないが、同じ特定のGSNに書き込まれたと想定すると、AWSに記憶されたファイルAのインスタンスはGSNと関連付けられた動作によって書き込まれた。AWSおよびAzure両方が前述の特定のGSNと関連付けられた動作によってファイルAを変化させることを終了しており、1つの実施形態では、特定のGSNによって求められたものの他にさらにファイルAを変化させていないとコーディネータB208が判断すると、ファイルAと関連付けられたメタデータはメタデータコンテナ210に記憶されてよく、それに基づいて、この記憶されたメタデータは(ここで発展させる例においてAWSおよびAzureに記憶される)ファイルAの異なるインスタンスの等価性を判断するために使用されてよい。プロパティチェックB210の実施形態は、例えば、プロパティ取得モジュールB206によって収集されかつメタデータコンテナ210に記憶された、ブロックサイズ、ファイル名、ファイルサイズ、ユーザ名、権限、チェックサム、および/または、ストレージサービスによって生成された任意の他のメタデータを比較して、高レベルの信頼度(例えば、確実性またはほぼ確実であること)で、異なるストレージサービス上のデータの関連したコピーが実際は同じ(すなわち、等価)であると判断できるように構成されてよい。1つの実施形態によると、比較のために収集されかつ使用されるメタデータは、手近な用途に合わせるように構成可能であってよい。実際は、アプリケーションドメインに応じて、データのユーザまたは所有者は、例えば、チェックサム、または他のプロパティもしくはメタデータよりも、等価性の判断にはそれほど重要でもなく有用でもない場合がある。
【0061】
最後に、プロパティチェック(すなわち、等価であるか等価でないか)の結果は、B212で示唆されるように、あるダウンストリームアクションに対するデータの所有者またはユーザに通信されてよい。例えば、等価性の結果は等価性チェックの実行中継続する履歴を提供するためにログ記録されてよい。1つの実施形態では、プロパティチェックB210によって実行された比較の結果が等価性を指示する限り、要望に応じて、恐らく、一貫性チェックの結果のログ記録の他にさらに行われることは何もない。しかしながら、プロパティチェックによって非等価性が明らかになる(比較されたメタデータが、根本的なデータが異種である可能性があることを指示するように、ある有意義なやり方では異種である)場合、ダウンストリームアクションB212は、何らかの補修アクションまたは他のアクションを必要とする場合がある。このようなアクションは、例えば、1つまたは複数のストレージサービスに記憶されたデータの(GSNまたは他のオーダリング機構によって判断されるような)状態を、プロパティチェックによって等価性が指示された以前の状態にロールバックさせることを含んでよい。これによって、後続のGSNと関連付けられた動作を再実行することが可能になり、恐らく、以前の異常で異なったデータが再び、他のストレージサービス上に記憶されたそのデータの他のインスタンスによる等価性を有するようになる。別の可能なアクションは、例えば、データの1つまたは複数のコピーを無効にし、かつ無効にしたデータを有効であると思われるデータと置き換えることを含んでよい。他のアクションも可能である。
【0062】
例えば、B212における別の可能なダウンストリーム動作は、任意にまたは他のやり方で、データのどのインスタンスがそのデータの「正確な」バージョンであるかを選択することである。そのために、1つの実施形態は、「情報源(source of truth)」であるストレージインスタンスのうちの1つを先に選択することを求める。すなわち、情報源として指定されているストレージサービスは、正確なデータを有するとみなされる場合があり、他のストレージサービスに記憶された非等価のデータのインスタンスのうちのインスタンスは、単に、情報源として指定されるストレージサービスに記憶されるこのバージョンと置き換えられてよい。情報源は代替的には、動的に判断されてよい。AWSが情報源として指定される場合、1つの実施形態によると、AWSに記憶されたデータはAzureに読み書きされてよく、記憶されている非等価の対応するデータを置き換えることによって、少なくとも、対応する関連のメタデータが比較された特定のデータに対して、再びストレージサービスにわたって等価性を有するようにする。他のアクションも可能である。このようなアクションは異なるアプリケーションコンテキストにおいて異なっている場合があるため、このような補修アクションまたはダウンストリームアクションの厳密な性質は説明される実施形態の範囲を超えるものである。
【0063】
可変性/不変性
いくつかのストレージサービスは、不変のストレージサービスを供給することができるが、他のストレージサービスは可変のストレージサービスを供給することができ、一部は両方を供給可能である。ほんの数例を挙げれば、規制された金融サービス組織、医療組織、法的組織は、ビジネス関連データを、少なくとも所定の保持間隔で消去不可能にしかつ修正不可能にする不変状態に維持することを必要とされる場合がある。他の組織または目的として、可変データは標準である。不変データのためのその他の使用は、例えば、第3ストレージおよびオフラインストレージに使用されるストレージを含む。いくつかある利点の中で特に、不変データストレージシステムは、データを、先の文書化状態にロールバック可能にしてよい。可変データは、名称が含意するに、変更可能であってよい、すなわち、いつでも変化させてまたは上書きされてよい。可変データの例には、新しいデータ点が取得されると繰り返し上書きされるセンサデータ、および/または所定の期間データを継続させる必要がない任意の他のアプリケーションが含まれてよい。例えば、AWSおよびAzureストレージBlobは両方共、可変データストレージサービスおよび不変データストレージサービス両方を供給する。HDFSは例えば、データの1つのバージョンのみがいつでも利用可能である点で可変である。
【0064】
ストレージサービスの可変/不変プロパティは、プロパティチェックB210が別個のストレージサービス上に記憶されたデータと関連付けられたメタデータを比較してよい時に影響する場合がある。ストレージサービスが全て不変である場合、全てのストレージサービスがそれぞれ、等価性チェックが行われることになる同じ状態マシン発行アイデンティティ(例えば、GSN)を処理したとすれば、記憶されているデータ点と関連付けられたメタデータは、現在の等価性(さらには、ある過去の所定の状態での等価性)を判断するためにいつでもチェックされてよい。ストレージサービスが全て可変である場合、メタデータが比較されるデータを確定させることを可能にすることが必要であり、それによって、どのストレージサービスも、処理された最後の状態マシン発行アイデンティティより大きい状態マシン発行アイデンティティと関連付けられるデータを変化させるためにコマンドを処理していないようにする。不変データストレージサービスおよび可変データストレージサービス両方を含む異種分散システムにおいて、B210でのプロパティチェックのタイミングにおける制限因子は、1つの実施形態によると、可変データストレージサービスにおけるデータを、プロパティ取得B206が少なくともメタデータを取得するのに十分な長さで確定または安定させているかどうかであり得、それによって、コーディネータB208は同期を判断でき、かつプロパティチェックB210では、収集されかつ記憶されたメタデータを有意義に比較することが可能になる。
【0065】
従って、1つの実施形態によると、可変ストレージを含む異種システム、および可変ストレージサービス(例えば、AWS、HDFS)のみを含む分散システムについて、コーディネータB208は、全ての可変ストレージサービス上の注目データ全てが確定する(十分な時間変更されない)まで待機してから、プロパティ取得B206からメタデータを取得し、かつ取得したメタデータをメタデータコンテナ210に置くように構成されてよい。従って、可変ストレージサービスは潜在的に、B210におけるプロパティチェックがストレージサービスにわたってデータの一貫性を判断することができる前に全ての可変ストレージサービスに記憶された注目データが確定されなければならないため、B210におけるプロパティチェックがどのくらいの頻度で実行可能であるかの制限因子である。
【0066】
潜在的に異種の(例えば、可変および不変両方の)ストレージサービスに記憶されたデータの全ての変化は、例えば、複製状態マシンB202を介してオーダリングされる。しかしながら、この順序性は名前空間にわたってパーティション分割可能である。イベント面B204は、パーティション分割されたアプリケーションが全体的な名前空間ではなく個々の名前空間上でのオーダリングになるように、状態マシンが指令した変化のオーダリングを保つ順番での観測のもとでのストレージへの変化を観測しかつ公開する。イベント面B204から通知を受信すると、プロパティ取得B206は、プロパティチェックB210によるメタデータのチェックを容易にするようにストレージから関連の情報を取得し、このメタデータはメタデータコンテナ210に置かれている。1つの実施形態によると、プロセスにおける全てのアクティブな参加者が同じ変化に対するそれらのメタデータを公開した時にのみ後続の処理が生じる場合があり、それぞれの処理は、1つの実施形態によると、対応する変化に帰する、状態マシンの、異なっていて全体がオーダリングされ綿密に増加する単調値(1つの実施形態では、GSN)によって区別される。他の実施形態では、状態マシン発行アイデンティティは、綿密にかつ単調に減少する値であってよく、その他では、異なるように構成されてよい。全てのアクティブな参加者が特定の変化に対して自身のメタデータを公開した時、プロパティチェックB210は、構成されたプロパティが変化の合成視点に対して真であるとアサートすることで、このプロセスの結果をダウンストリームコンシューマに公開する。
【0067】
このように、1つの実施形態では、例えば、複製状態マシンの適用によって、オーダリングされたアクションを採用する、速度を変化させる非同期プロセスから成る分散システムにおけるデータの継続した等価性を判断しかつ確実にし、この場合、主な目的は、異なっている均質または異種ストレージシステムにわたってデータを複製することである。従って、実施形態によって、根本的なストレージシステムにかかわらず、多クラウド環境におけるデータの一定のモニタリングが可能になり、かつ、そのデータに対する等価性チェックが可能になる。提示された技法は、全体を通して、規模に応じてアプリケーションを促進するように構成可能である。実際は、実施形態のコンポーネント(例えば、少なくとも、イベント面およびプロパティ取得)は、根本的なストレージの別箇の名前空間およびパーティションにデリゲートされてよい。
【0068】
重大な点では、本明細書に示されかつ説明される一貫性チェックは、1つの実施形態によると、データサービスによって、データを取得、変更、およびログ記録するプロセスを停止または減速させることさえも必要なく、実行可能である。実際は、本明細書に示されかつ説明される非同期一貫性チェックは、ストレージサービスにとらわれないメタデータが収集されるストレージサービスのそれぞれにおけるストレージプロセスを妨げることなく実行可能である。上述されるようなコーディネータB208は、監視のもとでのデータと関連付けられたメタデータが、ストレージサービスのいずれかが、データのコピーに変更を加えることを遅らせる必要なく、ストレージサービスにわたって特定の状態で確定されているように徹底する。
【0069】
図3は、1つの実施形態による、分散されかつ潜在的には異種のストレージサービスにわたってデータの一貫性をチェックするコンピュータ実施方法のさらなる態様を示す。ここに示されるように、B302は、(例えば、分散協調エンジンによって提供される)オーダリングされた合意を消費する複製状態マシンを示し、この合意のいくつかは、コンピュータネットワーク304上で(図3において、参照番号306および308のドメイン1および2として示される)ストレージサービスに記憶されたデータを変化させるためのデータ変化動作を含んでよい。例えば、ドメイン1はAWSストレージサービスを含んでよく、ドメイン3はAzureストレージサービスを含んでよい。このような実装形態では、オーダリングされた合意は、不変の(例えば、AWSまたはHDFS)および不変の(Azure)両方に記憶されるデータに適用される。
【0070】
示されるように、複製状態マシンB302は、ある外部ソースから受信した合意を消費する場合があり、このいくつかは、ドメイン1およびドメイン3両方に記憶されるデータを変化させるように構成されてよい。それぞれのストレージサービス306および208は、B302における複製状態マシンによって記憶されたデータの変化の影響を観測し、かつ対応する通知を発行するように構成されるイベント面B310、B316を含んでよい。イベント面B310、B316のそれぞれは、この対応するストレージサービス上に記憶されたデータ、およびこの対応するストレージサービス上に記憶されるようなデータに加えられる変化または変更を観測するように構成されてよい。1つの実施形態では、ドメイン1のイベント面B310およびドメイン2のイベント面B316は、プロパティ取得B314およびB320それぞれに根本的なストレージに関連している選択されたイベントの通知を生成しかつ送る(または利用可能にする)ように構成されてよい。図3に示されるように、本明細書に提示されるモジュールの少なくとも一部は、規模に応じて実施形態のデプロイを容易にするように構成可能であってよい。実際は、図3に示されるように、イベント面B310、B316およびプロパティ取得ブロックB314、B320は、根本的なストレージの名前空間およびパーティションを分離するようにパーティション分割されてよい。
【0071】
プロパティ取得コンポーネントB314およびB320はそれぞれ、記憶されたデータに関する選択された情報を取得するために、根本的なストレージサービスのログ記録サービスを問い合わせる(および/または該サービスから通知を受信する)ように構成可能である。例えば、プロパティ取得ブロックB314は、例えば、選択されたメタデータを記憶するS3バケットから通知を問い合わせるまたは受信するように構成されてよいのに対し、プロパティ取得コンポーネントB320は、例えば、AzureのBlob、Google CloudのPub/Sub、および/または他のサービスからメタデータを含んでいる通知を問い合わせるまたは受信するように構成されてよい。いずれにしても、プロパティ取得ブロックB314およびB320のそれぞれは、1つの実施形態によると、選択されたデータを変えるイベント(単数または複数)によって影響された異質な潜在的に地理的に分離したストレージサービス上に記憶されたデータオブジェクトのメタデータを収集するように構成されてよい。プロパティ取得コンポーネントB314およびB320が、根本的なストレージサービスからの通知を問い合わせるまたは受信する、またはイベント面108からの通知を受信する頻度は、あらかじめ定められてよいまたは完全に選択可能であってよい。例えば、それぞれのドメインにおけるメタデータは、規則的なまたは所定の時間間隔で、および/または所定の基準を満たすと、書き込まれる度におよび/またはデータ点(オブジェクト、ブロック、所定量のデータ)がクローズされる度に一貫性チェックのために収集されてよい。通知の粒度、または根本的なストレージサービスの問合せの頻度は、従って、実施形態に従って、一貫性チェックが実行可能である回数および/または頻度を定めてよい。従って、一貫性チェックは、かなり規則的に間隔があけられてよい、または、データ点をクローズすること、およびドメインにわたるそのデータ点に対する変化の確定など、所定のイベントの発生時に実行されてよい。
【0072】
ドメイン1および2においてストレージサービスからの収集されたメタデータに関する通知は、プロパティ取得コンポーネントB314およびB320によってコンピュータネットワーク314上で送られてよく、かつコーディネータブロックB322によって受信されてよい。1つの実施形態によると、コーディネータB322がドメイン間で必ずしも協調するわけではないため、コーディネータブロックB322は構成可能でなくてもよい。他の実施形態では、コーディネータB322の態様は、ドメインにわたって分布させてよく、かつ一貫性チェックが実行可能であるように、特定のデータが確定されているかどうかを判断するために互いにメッセージを送るように構成されてよい。図3に示されるように、1つの実施形態によると、コーディネータブロックB322は、これらの異質なクラウド環境にあるデータの間で有意義な比較を行うことができるように、ドメイン1および2における分散ストレージシステムまたはサービスのインスタンスの間で同期をとる。1つの実施形態では、このような同期は、グローバルシーケンス番号もしくはGSN、または、分散システムにわたるデータへのオーダリングされた変化を決定するその他のオーダリング機構を使用して実行されてよい。1つの実施形態では、ブロックB322におけるコーディネータは、ストレージサービス312、318が所定の変化を生じさせた時を判断するように構成されてよい。1つの実施形態では、所定の変化はGSNによって識別可能である。すなわち、コーディネータB322は、特定のデータのレプリカを記憶するストレージシステム312、318の全てが、選択されたGSNまたは他のマシン発行アイデンティティによって求められた変化を生じさせることを終了する時を判断するように構成されてよい。実際は、特定のデータのコピーを記憶するストレージサービス312、318の両方がそのデータに対して所定の変化を生じさせた場合、B314およびB320における各プロパティ取得ブロックによって収集されたストレージサービスにとらわれないメタデータは、根本的なデータの等価性または非等価性を、すなわち、データがクラウドストレージ312、318にわたって同じであるかどうかを判断するために互いに有意義に比較されてよい。1つの実施形態では、それぞれの変化は、関連のGSNにタグ付けされることで、コーディネータブロックB322は、それぞれのストレージサービス上のデータが、GSNが関連している動作によって変化させられたかどうかを容易に判断することが可能になる。従って、GSNの記録はストレージサービス312、318のそれぞれに常駐してよい。
【0073】
ストレージサービス312、318は、同じ変化を同時に処理するようにロックステップで動作する可能性は低い。プロパティ取得ブロックB314およびB320からストレージサービスにとらわれないメタデータを受信するコーディネータB322は、データのコピーを記憶しかつ変化させるストレージサービス312、318が全て、同じデータに対する同じ変化を生じさせるまで、待機するように構成されてよい。1つの実施形態では、それぞれの変化と関連付けられたGSNを使用して、データを確定したまたは安定させた時およびデータを確定したまたは安定させたかどうかを判断してよい。
【0074】
プロパティチェックB326は、1つの実施形態によると、コーディネータB322のメタデータコンテナ324に記憶されたストレージサービスにとらわれないメタデータを比較することによって根本的なデータの等価性をチェックするように構成されてよい。プロパティチェックB326の実施形態は、例えば、プロパティ取得モジュールB314、B320によって収集されかつコーディネータB322のメタデータコンテナ324に記憶された、ブロックサイズ、ファイル名、ファイルサイズ、ユーザ名、権限、チェックサム、および/または、ストレージサービス312、318によって生成された任意の他のメタデータを比較して、異なるストレージサービス312、318に常駐するデータの関連したコピーが実際は同じ(すなわち、等価)であるかどうかをコーディネータB322が判断できるように構成されてよい。図3にも示されるように、プロパティチェック(すなわち、等価であるか等価でないか)の結果は、B328で示唆されるように、あるダウンストリームアクションに対するデータの所有者またはユーザに通信されてよい。このようなアクションは、例えば、1つまたは複数のストレージサービスに記憶されたデータの(GSNまたは他のオーダリング機構によって判断されるような)状態を、プロパティチェックによって等価性が指示された以前の状態にロールバックさせることを含んでよい。これによって、後続のGSNと関連付けられた動作を再実行することが可能になり、恐らく、以前の異常なデータが再び、他のストレージサービス上に記憶されたそのデータの他のインスタンスによる等価性を有するようにする。別の可能なアクションは、例えば、データの1つまたは複数のコピーを無効にし、かつ無効にしたデータを有効であると思われるデータと置き換えることを含んでよい。他のアクションも可能である。
【0075】
例えば、B328における可能なダウンストリーム動作は、任意にまたは他のやり方で、データのどのインスタンスがそのデータの「正確な」バージョンであるかを選択することを含んでよい。例えば、「情報源」はストレージサービス312であってよい。すなわち、ストレージサービス312は、情報源として指定されていてよく、かつ正確なデータを有するとみなされる場合があり、(図3の318に示されるような)別のストレージサービスに記憶された非等価のデータのインスタンスは、単に、ストレージサービス312に記憶されるこのバージョンと置き換えられてよい。従って、図3は、異質なストレージサービス上に記憶されたデータと関連付けられたメタデータが一貫性に関して比較される場合がある時のアービターとしてコーディネータB322を使用して、潜在的に異なっているストレージシステムが変化に対して観測されている2つのドメインを示す。
【0076】
重大な点では、実施形態は、構成、およびその結果として、観測可能であり、かつこの変化がオーケストレーション技術、例えば、状態マシン複製に対してオーダリングされる任意のストレージシステムに対するパーティション分割およびアプリケーションを可能にする。実施形態は、異なっている均質または異種ストレージシステムにわたって生じたデータを複製するビッグデータのデプロイに対するスケーラビリティを特徴とする。
【0077】
実施形態は、イベントに基づいてよく、すなわち、作成、追記、および/またはクローズ要求の発生時に選択的にトリガされてよい。このアプローチによって、当該データを、単一のデータ点の粒度でパーティション分割された各々の観測されたシーケンスで安定させる時にのみ行われてよい精確な一貫性チェックの大規模なスループットが容易になる。実施形態はとりわけ、ストレージシステム内のランダムな点に対して変化を生じさせるシステムに合わせられるが、実施形態はまた、長時間実行している変化に適用可能であるが、場合によっては、一貫性チェックが「クローズ」イベントの発生時にのみ生じる時、結果が遅延するという犠牲を払っている。
【0078】
図4は、1つの実施形態によるコンピュータ実施方法のフローチャートである。ここに示されるように、ブロックB402は、第1の複数の複製状態マシンによって、第1のタイプの第1のデータストレージサービスに記憶されたデータに変化を生じさせるためのオーダリングされた合意のシーケンスを実行することを求める。同様に、ブロックB404は、第2の複数の複製状態マシンによって、第2のタイプの第2のデータストレージサービスに記憶されたデータに変化を生じさせるためのオーダリングされた合意のシーケンスを実行することを求める。ブロックB406に示されるように、第1のデータストレージサービスに記憶された変化済みデータの第1のメタデータは、変化済みデータの第2のメタデータが第2のデータストレージサービスに記憶可能であるように、受信されかつ記憶されてよい。ブロックB408に示されるように、第1のメタデータに対応する第1のデータストレージサービスに記憶されたデータ、および第2のメタデータに対応する第2のデータストレージサービスに記憶されたデータを両方共、オーダリングされた合意のシーケンスの所定のものに従って変化させた後、確定させるまたは安定させる(例えば、選択された時間変更されない)時を判断するために、受信した第1のメタデータおよび第2のメタデータを使用して第1のデータストレージサービスと第2のデータストレージサービスとの間の同期が実行されてよい。次いで、B410に示されるように、第1のメタデータに対応する第1のデータストレージサービスに記憶されたデータ、および第2のメタデータに対応する第2のデータストレージサービスに記憶されたデータが、オーダリングされた合意のシーケンスの所定のものに従って確定されていると判断された時、記憶された第1のメタデータおよび第2のメタデータの比較が実行されてよい。B412に示されるように、選択されたアクションはさらにまた、比較の結果に応じて実行されてよい。
【0079】
さらなる実施形態によると、オーダリングされた合意のシーケンスは一意の綿密にオーダリングされたグローバルシーケンス番号を使用してオーダリングされてよい。コンピュータ実施方法はまた、第1の複数の状態マシンおよび第2の複数の状態マシンによって、分散協調エンジン、または変化オーダリング証印の他の適切なソースからの一意の綿密にオーダリングされたグローバルシーケンス番号を受信することを含んでよい。1つの実施形態では、第1のデータストレージサービスの第1のタイプは、第2のデータストレージの第2のタイプも同様に、可変または不変のどちらであってもよい。1つの実施形態では、第1のデータストレージデバイスおよび第2のデータストレージサービスのうちのいずれかは均質または異種であってよい。コンピュータ実施方法はさらに、記憶されているデータが有効であるとみなされるように、情報源として第1のデータストレージサービスを指定することを含んでよい。実際は、記憶された第1のメタデータおよび第2のメタデータの比較が、第2のメタデータに対応する第2のデータストレージサービスに記憶されたデータが、第1のメタデータに対応する第1のデータストレージサービスに記憶されたデータと矛盾することを指示する時、選択されたアクションは、第2のメタデータに対応する第2のデータストレージサービスに記憶されたデータを第1のメタデータに対応する第1のデータストレージサービスに記憶されたデータと置き換えることを含んでよい。第1のデータストレージサービスおよび第2のデータストレージサービスに記憶されたデータが両方共確定される時を判断するように同期をとることは、クローズ動作がデータに対して実行されているのを待機することを含んでよい。1つの実施形態では、先に説明したステップまたは機能性のうちの少なくともいくつかは、少なくとも、第1のデータストレージサービスおよび第2のデータストレージサービス、ならびに/または、コンピューティングデバイスもしくはこれの外部のプロセスにわたって構成可能である。
【0080】
1つの実施形態は、メモリと、プロセッサと、プロセッサによって生成された複数のプロセスであって、該プロセスはストレージサービスにわたって一貫性チェックを可能にするように構成される、複数のプロセスと、を含むコンピューティングデバイスを含んでよい。複数のプロセスは、第1の複数の複製状態マシンによって、オーダリングされた合意のシーケンスを実行して、第1のタイプの第1のデータストレージサービスに記憶されたデータに変化を生じさせ、第2の複数の複製状態マシンによって、オーダリングされた合意のシーケンスを実行して、第2のタイプの第2のデータストレージサービスに記憶されたデータに変化を生じさせ、第1のデータストレージサービスに記憶された変化済みデータの第1のメタデータを受信かつ記憶し、および第2のデータストレージサービスに記憶された変化済みデータの第2のメタデータを受信かつ記憶し、第1のメタデータに対応する第1のデータストレージサービスに記憶されたデータおよび第2のメタデータに対応する第2のデータストレージサービスに記憶されたデータが両方共、オーダリングされた合意のシーケンスの所定のものに従って変化させた後に確定された時を判断するために、受信した第1のメタデータおよび第2のメタデータを使用して第1のデータストレージサービスと第2のデータストレージサービスとの間の同期をとり、第1のメタデータに対応する第1のデータストレージサービスに記憶されたデータおよび第2のメタデータに対応する第2のデータストレージサービスに記憶されたデータが、オーダリングされた合意のシーケンスの所定のものに従って確定されたと判断された時に記憶された第1のメタデータおよび第2のメタデータの比較を実行し、ならびに、比較の結果に応じて選択されたアクションを実行するための処理論理を含んでよい。
【0081】
さらに別の実施形態は、命令のシーケンスを表すデータが記憶されている非一時的な機械可読媒体であって、該命令は、コンピューティングデバイスによって実行される時、第1の複数の複製状態マシンによって、第1のタイプの第1のデータストレージサービスに記憶されたデータに変化を生じさせるためにオーダリングされた合意のシーケンスを実行すること、第2の複数の複製状態マシンによって、第2のタイプの第2のデータストレージサービスに記憶されたデータに変化を生じさせるためにオーダリングされた合意のシーケンスを実行すること、第1のデータストレージサービスに記憶された変化済みデータの第1のメタデータを受信かつ記憶し、および第2のデータストレージサービスに記憶された変化済みデータの第2のメタデータを受信かつ記憶すること、第1のメタデータに対応する第1のデータストレージサービスに記憶されたデータおよび第2のメタデータに対応する第2のデータストレージサービスに記憶されたデータが両方共、オーダリングされた合意のシーケンスの所定のものに従って変化させた後に確定された時を判断するために、受信した第1のメタデータおよび第2のメタデータを使用して第1のデータストレージサービスと第2のデータストレージサービスとの間で同期をとること、第1のメタデータに対応する第1のデータストレージサービスに記憶されたデータおよび第2のメタデータに対応する第2のデータストレージサービスに記憶されたデータが、オーダリングされた合意のシーケンスの所定のものに従って確定されたと判断された時に、記憶された第1のメタデータおよび第2のメタデータの比較を実行すること、ならびに、比較の結果に応じて選択されたアクションを実行すること、によって、コンピューティングデバイスに、均質または異種データストレージサービスに記憶されたデータの一貫性をチェックさせる、非一時的な機械可読媒体である。
【0082】
物理ハードウェア
図5は、実施形態が実施可能であるコンピューティングデバイスのブロック図を示す。図5のコンピューティングデバイスは、情報を通信するためのバス501または他の通信機構、および情報を処理するためにバス501と結合される1つまたは複数のプロセッサ502を含んでよい。コンピューティングデバイスは、プロセッサ(複数可)502によって実行される情報および命令を記憶するためにバス501に結合される(メインメモリと称される)ランダムアクセスメモリ(RAM)または他の動的ストレージデバイス504をさらに含んでよい。メインメモリ(有形かつ非一時的であり、この用語は本明細書では、信号そのものおよび波形を含まない)504はまた、プロセッサ502による命令の実行中に、一時的な変数または他の中間情報を記憶するために使用されてよい。図5のコンピューティングデバイスは、プロセッサ(複数可)502に対する静的情報および命令を記憶するためにバス501に結合される読み出し専用メモリ(ROM)および/または他の静的ストレージデバイス506も含んでよい。磁気ディスクおよび/またはソリッドステートデータストレージデバイスなどのデータストレージデバイス507は、例えば、図1図4に対して示されかつ開示される機能性を実行するために必要とされることが考えられる情報および命令を記憶するためにバス501に結合されてよい。コンピューティングデバイスはまた、コンピュータユーザに情報を表示するためのディスプレイデバイス521にバス501を介して結合されてよい。英数字および他のキーを含む英数字入力デバイス522は、情報およびコマンド選択をプロセッサ(複数可)502に通信するためにバス501に結合されてよい。別のタイプのユーザ入力デバイスは、方向情報およびコマンド選択をプロセッサ(複数可)502に通信するための、およびディスプレイ521上のカーソル移動を制御するための、マウス、トラックボール、またはカーソル方向キーなどのカーソル制御523である。図5のコンピューティングデバイスは、通信インターフェース(例えば、モデム、ネットワークインターフェースカード、またはNIC)508を介してネットワーク526に結合されてよい。
【0083】
示されるように、ストレージデバイス507は、磁気ディスク530、不揮発性半導体メモリ(EEPROM、Flashなど)532、531で示唆されるような、磁気ディスクおよび不揮発性半導体メモリ両方を含むハイブリッドデータストレージデバイスなどの直接アクセスデータストレージデバイスを含んでよい。参照符号504、506、および507は、1つまたは複数のコンピューティングデバイスによって実行される時、本明細書に説明されかつ示される分散システムおよび方法の態様を実施する命令のシーケンスを表すデータが記憶されている有形の非一時的なコンピュータ可読媒体の例である。これらの命令のいくつかは、クライアントコンピューティングデバイスにローカルに記憶可能である一方、これらの命令のその他は、リモートに記憶(および/または実行)され、かつネットワーク526上でクライアントコンピューティングに通信可能である。他の実施形態では、これらの命令の全ては、クライアントまたは他のスタンドアロンコンピューティングデバイスにローカルに記憶されてよく、さらに他の実施形態では、これらの命令の全ては(例えば、1つまたは複数のリモートサーバに)リモートに記憶されかつ実行され、この結果はクライアントコンピューティングデバイスに通信される。なお別の実施形態では、命令(処理論理)は、528で示されるような、別の形態の有形の非一時的なコンピュータ可読媒体上に記憶可能である。例えば、参照符号528は、光(またはその他のストレージ技術)ディスクとして実装されてよく、このディスクは、1つまたは複数のコンピューティングデバイスに記憶されている命令をロードするための適したデータキャリアを構成することで、本明細書に説明されかつ示される実施形態の1つまたは複数に対してコンピューティングデバイス(複数可)を再構成してよい。他の実装形態では、参照符号528は暗号化ソリッドステートドライブとして具現化されてよい。他の実装形態は可能である。
【0084】
本発明の実施形態は、異質なストレージサービスに記憶された複製データの一貫性をチェックするためのコンピューティングデバイスの使用に関する。1つの実施形態によると、本明細書に説明される方法、デバイス、およびシステムは、メモリ504に含まれている、本明細書に示されかつ説明されるコンピュータ実施方法の態様を具現化する命令のシーケンスを実行するプロセッサ(複数可)502に応答して1つまたは複数のコンピューティングデバイスによって提供されてよい。このような命令は、データストレージデバイス507、または528で示されるような別の(光、磁気などの)データキャリアなどの別のコンピュータ可読媒体からメモリ504に読み取られてよい。メモリ504に含まれている命令のシーケンスの実行によって、プロセッサ(複数可)502は、本明細書に説明されるステップを行いかつ機能性を有する。代替的な実施形態では、ハードワイヤード回路網は、説明される実施形態を実施するためのソフトウェア命令の代わりにまたはこれらと組み合わせて使用されてよい。よって、実施形態は、ハードウェア回路網およびソフトウェアの任意の特定の組み合わせに限定されない。実際は、任意の適したコンピュータシステムが、本明細書に説明される機能性を実施することができることは、当業者には理解されるべきである。コンピューティングデバイスは、所望の機能を果たすように作用する1つまたは複数のマイクロプロセッサを含んでよい。1つの実施形態では、マイクロプロセッサ(単数または複数)によって実行される命令は、マイクロプロセッサ(複数可)に、本明細書に説明されるステップを行わせるように動作可能である。命令は、任意のコンピュータ可読媒体に記憶されてよい。1つの実施形態では、これら命令は、マイクロプロセッサに外付けされたまたはマイクロプロセッサと一体化した不揮発性半導体メモリ上に記憶されてよい。別の実施形態では、命令は、マイクロプロセッサによる実行の前に、ディスク上に記憶され、かつ揮発性半導体メモリに読み取られてよい。
【0085】
上記の詳細な説明の一部分では、ローカル処理ユニット、ローカル処理ユニット用のメモリストレージデバイス、ディスプレイデバイス、および入力デバイスを含むコンピュータコンポーネントを含むことができるコンピューティングデバイスによる動作のプロセスおよび象徴的表象を説明している。さらに、このようなプロセスおよび動作は、例えば、リモートファイルサーバ、コンピュータサーバ、およびメモリストレージデバイスを含む、異種分散コンピューティング環境におけるコンピュータコンポーネントを利用してよい。これらの分散コンピューティングコンポーネントは、通信ネットワークによってローカル処理ユニットにアクセス可能であってよい。
【0086】
コンピュータによって行われるプロセスおよび動作は、ローカル処理ユニットおよび/またはリモートサーバによるデータビットの操作、およびローカルまたはリモートメモリストレージデバイスの1つまたは複数に常駐しているデータ構造内のこれらのビットのメンテナンスを含む。これらのデータ構造は、物理編成をメモリストレージデバイス内に記憶されたデータビット群に与え、かつ電磁スペクトル素子を表す。
【0087】
本明細書に説明されかつ示されるコンピュータ実施方法といったプロセスは、一般的に、所望の結果をもたらすコンピュータ実行ステップのシーケンスであると定められてよい。これらのステップは、一般的に、物理量の物理操作を必要とする。通常、必然ではないが、これらの量は、記憶、転送、組み合わせ、比較、あるいは操作が可能である電気、磁気、または光信号の形態を取ることができる。従来、当業者は、これらの信号を、ビットもしくはバイト(これらが二値論理レベルを有する時)、画素値、仕事、値、エレメント、記号、文字、項、数、点、記録、オブジェクト、画像、ファイル、ディレクトリ、またはサブディレクトリなどと称する。しかしながら、これらのおよび同様の用語がコンピュータ動作に適切な物理量と関連付けられるものとし、これらの用語が単に、コンピュータの動作の範囲内かつ間に存在する物理量に適用される従来のラベルであることは留意されるべきである。
【0088】
コンピュータ内の操作が、追加する、比較する、移動する、位置付ける、置く、照明する、除去する、および改変するなどの用語で称されることが多いことも理解されるべきである。本明細書に説明される動作は、コンピュータと対話する人間のもしくは人工知能エージェントのオペレータまたはユーザによって提供されるさまざまな入力と併せて行われる機械動作である。本明細書に説明される動作を行うために使用される機械は、ローカルもしくはリモートの汎用デジタルコンピュータまたは他の同様のコンピューティングデバイスを含む。
【0089】
さらに、本明細書に説明されるプログラム、プロセス、方法などが、いずれの特定のコンピュータまたは装置にも関連してもいないし限定されてもおらず、いずれの特定の通信ネットワークアーキテクチャにも関連してもいないし限定されてもいないことは留意されたい。もっと正確に言えば、本明細書に説明される教示に従って構成されるプログラムモジュールと共に、さまざまなタイプの汎用ハードウェア機が使用可能である。同様に、読み出し専用メモリなどの不揮発性メモリに記憶されたハードワイヤード論理またはプログラムを有する固有のネットワークアーキテクチャにおける専用のコンピュータシステムによって本明細書に説明される方法ステップを行うための特殊装置を構成することが有利であると証明され得る。
【0090】
ある特定の例示の実施形態が説明されているが、これらの実施形態は例としてのみ提示されており、本明細書に開示される実施形態の範囲を限定することは意図されていない。よって、前述の説明には、任意の特定の特徴、特性、ステップ、モジュール、またはブロックが必要であるまたは不可欠であると含意するように意図されるものは何もない。実際は、本明細書に説明される新規な方法およびシステムは、さまざまな他の形態で具現化されてよく、さらに、本明細書に説明される方法およびシステムの形態におけるさまざまな省略、代用、および変更は、本明細書に開示される実施形態の趣旨から逸脱することなくなされてよい。
図1
図2
図3
図4
図5