(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-07-04
(45)【発行日】2024-07-12
(54)【発明の名称】複数のパーティショングループ間のハートビート通信のランダム化
(51)【国際特許分類】
G06F 11/20 20060101AFI20240705BHJP
G06F 13/10 20060101ALI20240705BHJP
G06F 16/27 20190101ALI20240705BHJP
G06F 3/06 20060101ALI20240705BHJP
H04L 67/145 20220101ALI20240705BHJP
【FI】
G06F11/20 669
G06F13/10 340A
G06F16/27
G06F3/06 301M
H04L67/145
(21)【出願番号】P 2023507340
(86)(22)【出願日】2020-08-03
(86)【国際出願番号】 US2020044704
(87)【国際公開番号】W WO2022031258
(87)【国際公開日】2022-02-10
【審査請求日】2023-02-22
(73)【特許権者】
【識別番号】520155228
【氏名又は名称】ヒタチ ヴァンタラ エルエルシー
(74)【代理人】
【識別番号】110000279
【氏名又は名称】弁理士法人ウィルフォート国際特許事務所
(72)【発明者】
【氏名】ラッシュ, デイビッド, ジュニア.
(72)【発明者】
【氏名】グリマルディ,ケビン カヌエッテ
【審査官】坂東 博司
(56)【参考文献】
【文献】特開2010-277467(JP,A)
【文献】特表2012-504807(JP,A)
【文献】米国特許出願公開第2011/0178985(US,A1)
【文献】国際公開第2010/137229(WO,A1)
【文献】特開2013-190955(JP,A)
【文献】特開2007-106337(JP,A)
【文献】米国特許出願公開第2017/0270176(US,A1)
【文献】米国特許第9069827(US,B1)
【文献】米国特許第9984140(US,B1)
【文献】梶原 顕伍,Raftに基づく分散データベースの性能解析,情報処理学会 研究報告 システムソフトウェアとオペレーティング・システム(OS) 2017-OS-140 [online] ,日本,情報処理学会,2017年05月09日,1~9,CS-NG-2017-00449-013,ISSN 2188-8795
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/20
G06F 13/10
G06F 16/27
G06F 3/06
H04L 67/145
(57)【特許請求の範囲】
【請求項1】
システムであって、
互いに通信可能な複数の計算装置を含み、各計算装置は、前記複数の計算装置にわたって分散された複数のパーティションへと区分化されたメタデータデータベースの少なくとも1つのパーティションを維持し、前記複数の計算装置の第1計算装置は、
前記第1計算装置は前記複数のパーティションの第1パーティションに対応する少なくとも第1パーティショングループのリーダであると決定することであって、前記第1パーティショングループは前記複数の計算装置の少なくとも1つの他の計算装置を含む、決定すること、
前記第1パーティショングループ内の前記少なくとも1つの他の計算装置に送信されるハートビート通信のための第1時間閾値を決定すること、
前記ハートビート通信を送信するための前記第1時間閾値の前のランダム時点を選択すること、及び
前記選択されたランダム時点に従い、前記第1パーティショングループ内の前記少なくとも1つの他の計算装置に前記ハートビート通信を送信すること を含む操作を実行するための実行可能命令により構成され
、
前記ハートビート通信を送信するための前記第1時間閾値の前の前記ランダム時点を選択することは、
前記第1時間閾値に対応する上限時間と下限時間との間のランダム時点を選択することであって、前記下限時間は前記上限時間の少なくとも半分である、選択すること
を含む、システム。
【請求項2】
前記操作は、
前記ハートビート通信が送信された時点を決定すること、及び
前記ハートビート通信が送信された前記時点に少なくとも基づいて次のハートビート通信のための前記上限時間及び前記下限時間を決定すること
を更に含む、請求項
1に記載のシステム。
【請求項3】
システムであって、
互いに通信可能な複数の計算装置を含み、各計算装置は、前記複数の計算装置にわたって分散された複数のパーティションへと区分化されたメタデータデータベースの少なくとも1つのパーティションを維持し、前記複数の計算装置の第1計算装置は、
前記第1計算装置は前記複数のパーティションの第1パーティションに対応する少なくとも第1パーティショングループのリーダであると決定することであって、前記第1パーティショングループは前記複数の計算装置の少なくとも1つの他の計算装置を含む、決定すること、
前記第1パーティショングループ内の前記少なくとも1つの他の計算装置に送信されるハートビート通信のための第1時間閾値を決定すること、
前記ハートビート通信を送信するための前記第1時間閾値の前のランダム時点を選択すること、及び
前記選択されたランダム時点に従い、前記第1パーティショングループ内の前記少なくとも1つの他の計算装置に前記ハートビート通信を送信すること を含む操作を実行するための実行可能命令により構成され
、
前記操作は、
前記第1計算装置が前記複数のパーティションの第2パーティションに対応する第2パーティショングループのリーダであると決定することであって、前記第2パーティショングループは前記複数の計算装置の複数の第2計算装置を含む、決定すること、
前記第2パーティショングループ内の前記複数の第2計算装置に送信される別のハートビート通信のための第2時間閾値を決定することであって、前記第2時間閾値は、前記複数の第2計算装置に送信された前のハートビート通信のタイミングに基づき、前記第1時間閾値と異なる、決定すること、
前記他のハートビート通信を送信するための、前記第2時間閾値の前の別のランダム時点を選択すること、及び
前記選択された他のランダム時点に従い、前記第2パーティショングループ内の前記複数の第2計算装置に前記他のハートビート通信を送信すること
を更に含む、記載のシステム。
【請求項4】
前記複数の第2計算装置の前記第2計算装置の1つは、前記第1パーティショングループ内に含まれ、前記ハートビート通信及び前記他のハートビート通信の両方を受信し、
前記ハートビート通信及び前記他のハートビート通信は、前記ランダム時点及び前記他のランダム時点
のランダム選択により、異なる時点において受信される可能性が高い、
請求項
3に記載のシステム。
【請求項5】
システムであって、
互いに通信可能な複数の計算装置を含み、各計算装置は、前記複数の計算装置にわたって分散された複数のパーティションへと区分化されたメタデータデータベースの少なくとも1つのパーティションを維持し、前記複数の計算装置の第1計算装置は、
前記第1計算装置は前記複数のパーティションの第1パーティションに対応する少なくとも第1パーティショングループのリーダであると決定することであって、前記第1パーティショングループは前記複数の計算装置の少なくとも1つの他の計算装置を含む、決定すること、
前記第1パーティショングループ内の前記少なくとも1つの他の計算装置に送信されるハートビート通信のための第1時間閾値を決定すること、
前記ハートビート通信を送信するための前記第1時間閾値の前のランダム時点を選択すること、及び
前記選択されたランダム時点に従い、前記第1パーティショングループ内の前記少なくとも1つの他の計算装置に前記ハートビート通信を送信すること を含む操作を実行するための実行可能命令により構成され
、
前記第1計算装置は第2パーティショングループ内のフォロワとして指定され、前記操作は、
前記第1計算装置によって、前記第2パーティショングループのリーダ計算装置から第1ハートビート通信を受信すること
を更に含み、
前記第2パーティショングループの前記リーダ計算装置は、選出タイムアウト閾値未満である上限時間の中で選択されるランダム選択タイミングに基づいて前記第1ハートビート通信を送信する、
システム。
【請求項6】
前記操作は、前記第2パーティショングループの前記リーダ計算装置から前記第1ハートビート通信を受信することに少なくとも部分的に基づき、前記第1計算装置での前記選出タイムアウト閾値のタイミングをリセットすることを更に含む、請求項
5に記載のシステム。
【請求項7】
システムであって、
互いに通信可能な複数の計算装置を含み、各計算装置は、前記複数の計算装置にわたって分散された複数のパーティションへと区分化されたメタデータデータベースの少なくとも1つのパーティションを維持し、前記複数の計算装置の第1計算装置は、
前記第1計算装置は前記複数のパーティションの第1パーティションに対応する少なくとも第1パーティショングループのリーダであると決定することであって、前記第1パーティショングループは前記複数の計算装置の少なくとも1つの他の計算装置を含む、決定すること、
前記第1パーティショングループ内の前記少なくとも1つの他の計算装置に送信されるハートビート通信のための第1時間閾値を決定すること、
前記ハートビート通信を送信するための前記第1時間閾値の前のランダム時点を選択すること、及び
前記選択されたランダム時点に従い、前記第1パーティショングループ内の前記少なくとも1つの他の計算装置に前記ハートビート通信を送信すること を含む操作を実行するための実行可能命令により構成され
、
前記第1計算装置は第2パーティショングループ内のフォロワとして指定され、前記操作は
前記第2パーティショングループのリーダ計算装置からのハートビート通信の受信を待つこと、及び
前記第2パーティショングループの前記リーダ計算装置からハートビート通信が受信されなかった期間について選出タイムアウト閾値が満了することに少なくとも基づき、前記第1計算装置によって、前記第2パーティショングループの新たなリーダの選出を開始するための少なくとも1つの通信を送信すること
を更に含む、システム。
【請求項8】
前記複数のパーティション
のパーティショングループはRaft合意アルゴリズムに従ってRaftグループとしてそれぞれ構成され、各Raftグループは選ばれたリーダ計算装置及び少なくとも1つのフォロワ計算装置を含む、請求項1に記載のシステム。
【請求項9】
システムであって、
互いに通信可能な複数の計算装置を含み、各計算装置は、前記複数の計算装置にわたって分散された複数のパーティションへと区分化されたメタデータデータベースの少なくとも1つのパーティションを維持し、前記複数の計算装置の第1計算装置は、
前記第1計算装置は前記複数のパーティションの第1パーティションに対応する少なくとも第1パーティショングループのリーダであると決定することであって、前記第1パーティショングループは前記複数の計算装置の少なくとも1つの他の計算装置を含む、決定すること、
前記第1パーティショングループ内の前記少なくとも1つの他の計算装置に送信されるハートビート通信のための第1時間閾値を決定すること、
前記ハートビート通信を送信するための前記第1時間閾値の前のランダム時点を選択すること、及び
前記選択されたランダム時点に従い、前記第1パーティショングループ内の前記少なくとも1つの他の計算装置に前記ハートビート通信を送信すること を含む操作を実行するための実行可能命令により構成され
、
前記操作は、一様ランダム分布に少なくとも部分的に基づいて前記ランダム時点を選択することを更に含む、システム。
【請求項10】
前記システムはネットワークストレージと通信し、
前記メタデータデータベースは前記ネットワークストレージによって記憶されるオブジェクトに対応するキーバリューのペア情報を含む、
請求項1に記載のシステム。
【請求項11】
複数の計算装置の第1計算装置により、前記第1計算装置がメタデータデータベースの複数のパーティションの第1パーティションに対応する少なくとも第1パーティショングループのメンバであると決定することであって、前記第1パーティショングループは前記複数の計算装置の少なくとも1つの他の計算装置を含み、前記複数の計算装置の各計算装置は、前記複数の計算装置にわたって分散された複数のパーティションへ前記メタデータデータベースを区分化する前記メタデータデータベースの少なくとも1つのパーティションを維持する、決定すること、
前記第1計算装置により、前記第1パーティショングループ内の前記少なくとも1つの他の計算装置に送信されるハートビート通信のための第1時間閾値を決定すること、
前記第1計算装置により、前記ハートビート通信を送信するための前記第1時間閾値の前のランダム時点を選択すること、及び
前記第1計算装置により、前記選択されたランダム時点に基づき、前記第1パーティショングループ内の前記少なくとも1つの他の計算装置に前記ハートビート通信を送信することを
含み、
前記第1時間閾値に対応する上限時間と下限時間との間の前記ランダム時点を選択することであって、前記下限時間は前記上限時間の少なくとも半分である、選択することを更に含む、方法。
【請求項12】
複数の計算装置の第1計算装置によって実行されると、前記第1計算装置を操作を実行するように構成する命令を記憶する、1又は複数の非一時的コンピュータ可読媒体であって、
前記第1計算装置により、前記第1計算装置がメタデータデータベースの複数のパーティションの第1パーティションに対応する少なくとも第1パーティショングループのメンバであると決定することであって、前記第1パーティショングループは前記複数の計算装置の少なくとも1つの他の計算装置を含み、前記複数の計算装置の各計算装置は前記複数の計算装置にわたって分散された複数のパーティションへ前記メタデータデータベースを区分化する前記メタデータデータベースの少なくとも1つのパーティションを維持する、決定すること、
前記第1計算装置により、前記第1パーティショングループ内の前記少なくとも1つの他の計算装置に送信されるハートビート通信のための第1時間閾値を決定すること、
前記第1計算装置により、前記ハートビート通信を送信するための前記第1時間閾値の前のランダム時点を選択すること、及び
前記第1計算装置により、前記選択されたランダム時点に基づき、前記第1パーティショングループ内の前記少なくとも1つの他の計算装置に前記ハートビート通信を送信すること
を含む操作を実行するように前記第
1計算装置を構成する命令を記憶
し、
前記操作は、前記第1時間閾値に対応する上限時間と下限時間との間の前記ランダム時点を選択することであって、前記下限時間は前記上限時間の少なくとも半分である、選択することを更に含む、1又は複数の非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、データベース及びストレージ管理の技術分野に関する。
【背景技術】
【0002】
マルチパーティション分散データベースは、「計算ノード」とも呼ばれる複数の計算装置間でデータを分散することによって水平拡張性をもたらしてもよい。データがシステムに追加されるとき、計算ノードの数及びパーティションの数を増やすことによって水平拡張を行うことができ、かかる拡張は個々のパーティションのサイズを制御することにより個々のパーティション内のデータへのアクセスを改善する。従って、大量のデータを含むいくつかのシステムは非常に大量のパーティションを有してもよい。
【0003】
いくつかの事例では、個々のパーティションの冗長性及び一貫性を管理するためにRaft(信頼性、複製性、冗長性、及び耐障害性)合意アルゴリズムを使用してもよい。従来のRaftアルゴリズムによれば、Raftグループのリーダは所定の不変スケジュールに従ってRaftグループ内のフォロワに周期的な通信(「ハートビート通信」とも呼ぶ)を送信してもよい。各ノードが参加するRaftグループの数が拡大すると、ハートビート期間内に送信及び/又は受信されるハートビート通信の数も増加する。このことは、ハートビート通信の数が、新たなリーダを選ぶための不要なシーケンス又は他の不所望の結果を誘発し得る輻輳を引き起こし得る状況を招く可能性がある。
【発明の概要】
【課題を解決するための手段】
【0004】
いくつかの実装形態では、複数の計算装置のうちの第1計算装置は第1パーティショングループのメンバであてもよい。例えば第1パーティショングループは、メタデータデータベースの複数のパーティションの第1パーティションに対応してもよい。第1パーティショングループは、少なくとも1つの他の計算装置を含んでもよい。更に、メタデータデータベースが計算装置間で分散される複数のパーティションに区分化されるように、複数の計算装置のそれぞれはメタデータデータベースの少なくとも1つのパーティションを維持してもよい。第1計算装置は、第1パーティショングループ内の他の計算装置に送信されるハートビート通信のための第1時間閾値を決定してもよく、第1時間閾値の前のランダム時点を選択してもよい。第1計算装置は、選択したランダム時点に基づいて第1パーティショングループ内の他の計算装置にハートビート通信を送信してもよい。
【図面の簡単な説明】
【0005】
添付図面に関して詳細な説明を記載する。図中、参照番号の左端の数字はその参照番号が初めて登場する図面を識別する。異なる図面内で同じ参照番号を使用することは同様の又は同一のアイテム又は特徴を示す。
【0006】
【
図1】
図1は、いくつかの実装形態に係る区分データ及びランダム化ハートビート通信を含むシステムのアーキテクチャ例を示す。
【0007】
【
図2】
図2は、いくつかの実装形態に係るシステムの一部の論理構成例を示すブロック図である。
【0008】
【
図3】
図3は、いくつかの実装形態に係る複数のパーティション及びハートビート通信の論理構成例を示すブロック図である。
【0009】
【
図4】
図4は、いくつかの実装形態に係る複数のパーティショングループ内のランダムハートビート通信の一例を示す概略図である。
【0010】
【
図5】
図5は、いくつかの実装形態に係る複数のパーティショングループに関するハートビート通信のための処理例を示す流れ図である。
【0011】
【
図6】
図6は、本明細書に記載されたシステムの機能の少なくともいくつかを実装するために使用されてもよいサービス計算装置の選択コンポーネント例を示す。
【発明を実施するための形態】
【0012】
本明細書のいくつかの実装形態は、複数の計算ノードを含む分散データベース又は他の分散システムの最適効率を実現するために、複数のパーティショングループにわたるハートビート通信をランダム化するための技法及び構成を対象とする。いくつかの実装形態によれば、パーティショングループのリーダはパーティショングループのフォロワに送信するためのハートビート通信のタイミングをランダム化してもよい。いくつかの例では、ランダム化されるタイミングは最長持続ハートビート通信間隔に少なくとも部分的に基づいてもよい。更にいくつかのケースでは、最長持続ハートビート間隔は、パーティショングループのためのハートビートタイムアウト間隔に少なくとも部分的に基づいてもよい。
【0013】
一例として本明細書の実装形態は、パーティショングループのリーダ及びフォロワがRaftアルゴリズム又は他の実装アルゴリズムの要件に依然として準拠しながら、任意の所与の時点において最低数のハートビート通信をそれぞれ送信し処理していることを確実にするために一様に分布するランダム化ハートビート通信を採用してもよい。従って、本明細書の例は各ハートビート通信が成功裏に送信され処理される確率を上げることができる。例えばハートビート通信をランダム化することにより、本明細書の計算ノードは所与の時点においてより少ないハートビート通信を同時に処理し、それにより現在のリーダ装置が実際に適切に機能しているときの新たなリーダの不要な選択を防ぐ或いは最小限に抑えること等により、システムの信頼性及び性能を高めることができる。
【0014】
本明細書のいくつかの例は、複数のパーティションを有する計算ノード上のパーティション内のハートビート通信のための時間をランダム化することを採用する。例えば本明細書のシステムは、ネットワークの輻輳が増加すること及び計算資源を消費することに関して高価であり得る、計算ノード及びパーティションにわたるハートビート通信のタイミングの同期又は他の特定の管理を行わなければならないことを回避するために、ハートビート通信期間のランダム化をリーダ装置に集中させてもよい。更に本明細書のいくつかの例は、Raftコンセンサスアルゴリズムにハートビート通信間隔のランダム化を統合するために特定のノード特性を検討してもよい。
【0015】
本明細書のいくつかの例は、何兆ものオブジェクトに拡張可能であり、複数の地理的位置にわたって採用される能力を有するオブジェクトストレージシステムに実装してもよい。本明細書のシステムは、メタデータの分散データベースとして機能してもよい分散メタデータストアを含んでもよい。いくつかのケースでは、本明細書のシステムは多くの非リレーショナル分散データベースの概念を使用する特定用途向けのメタデータストアを含んでもよい。本明細書で採用するそのような1つの概念は、メタデータのデータをパーティションと呼ばれる複数の管理可能なチャンクへ区分化することを含んでもよい。いくつかの例では、各パーティションは1つのリーダ及び1つ又は複数のフォロワを有するRaftグループ等の計算装置のパーティショングループに対して設定されてもよい。Raftグループは、パーティションのリーダからパーティションのフォロワにデータの更新を複製すること、及びさもなければパーティションが包含するデータの一貫性を管理すること等のために、各パーティションに冗長性を与えるために使用されてもよい。
【0016】
解説目的で、本明細書のいくつかの例ではパーティションは、外部のストレージノード、システム内のストレージノード、クラウドストレージ装置等の1又は複数のストレージノード内に記憶されるデータを記述するメタデータデータベースのメタデータを含んでもよい。但し、本明細書の実装形態はこれらの応用に限定されず、他の種類のデータ、データベース、ストレージ構成等に適用されてもよい。更にいくつかの実装例は、分散メタデータデータベースを使用してデータの記憶を管理するためのクラウドストレージ又は他のネットワークストレージシステムと通信する複数のサービス計算装置の環境において記載される。但し、本明細書の開示に照らして当業者に明らかであるように、本明細書の実装形態は提供する特定の例に限定されず、他の種類の計算システムアーキテクチャ、他の種類のストレージ環境、他の種類のクライアント構成、他の種類のデータ、他の種類の合意アルゴリズム等に拡張されてもよい。例えば本明細書の実装形態は必ずしもRaftグループに限定されず、周期的なハートビート通信をフォロワに送信するリーダを含む他の種類のグループに拡張されてもよい。
【0017】
図1は、いくつかの実装形態に係る区分データ及びランダム化ハートビート通信を含むシステム100のアーキテクチャ例を示す。システム100は、1又は複数のネットワーク106等を介し、少なくとも1のネットワークストレージシステム104と通信可能な、或いはそれらに接続される複数のサービス計算装置102(いくつかの例では「計算ノード」とも呼ぶ)を含む。更にサービス計算装置102は、以下で更に論じるように様々な種類の計算装置の何れかとしてもよい1又は複数のユーザ計算装置108及び1又は複数の管理者計算装置110とネットワーク106上で通信することができる。
【0018】
いくつかの例では、サービス計算装置102は任意の数のやり方で具体化されてもよい1又は複数のサーバを含んでもよい。例えばサービス計算装置102のプログラム、他の機能コンポーネント、及びデータストレージの少なくとも一部は、サーバのクラスタ、サーバファーム、データセンタ、クラウドによってホストされる計算サービス、分散計算システム等の中の少なくとも1つのサーバ上に実装されてもよいが、他のコンピュータアーキテクチャが追加で又は代替的に使用されてもよい。サービス計算装置102の更なる詳細は
図6に関して以下で論じられる。
【0019】
サービス計算装置102は、ストレージ及びデータ管理サービスをユーザ112に提供するように構成されてもよい。幾つかの非限定的な例として、ユーザ112は会社、企業、組織、政府事業体、学術的事業体等のための機能を実行し、また、いくつかの例では非常に大量のデータを記憶することを含んでもよいユーザを含んでもよい。それでもなお本明細書の実装形態は、システム100並びに本明細書に記載の他のシステム及び構成のための或る特定の使用法又は応用に限定されない。
【0020】
ネットワークストレージシステム104は、いくつかの例では「クラウドストレージ」又は「クラウドベースストレージ」と呼ぶことができ、いくつかのケースではサービス計算装置102において利用可能であってもよいローカルストレージよりも安価なギガバイト当たりのストレージソリューションを可能にしてもよい。更にいくつかの例では、ネットワークストレージシステム104は本技術分野で知られている市販のクラウドストレージを含んでもよい一方、他の例では、ネットワークストレージシステム104は、サービス計算装置102に関連するエンティティによってのみアクセス可能なプライベート又はエンタープライズストレージシステム、ストレージアレイ等、又は組み合わせクラウドストレージ及びプライベートストレージを含んでもよい。
【0021】
1又は複数のネットワーク106は、インターネット等の広域ネットワーク、イントラネット等のローカルエリアネットワーク(LAN)、セルラネットワーク等の無線ネットワーク、Wi-Fi等のローカル無線ネットワーク、及び/又はBLUETOOTH(登録商標)等の短距離無線通信、ファイバチャネル、光ファイバ、イーサネット、又は他の任意のかかるネットワークを含む有線ネットワーク、直接の有線接続、又はそれらのものの任意の組み合わせを含む任意の適切なネットワークを含んでもよい。従って、1又は複数のネットワーク106は有線通信技術及び/又は無線通信技術の両方を含んでもよい。そのような通信に使用されるコンポーネントはネットワークの種類、選択された環境、又はその両方に少なくとも部分的に依存し得る。そのようなネットワーク上で通信するためのプロトコルはよく知られており、本明細書では詳しくは論じない。従って、サービス計算装置102、ネットワークストレージシステム104、ユーザ装置108、及び管理装置110は有線接続又は無線接続及びその組み合わせを使用する1又は複数のネットワーク106上で通信することができる。
【0022】
加えて、サービス計算装置102は1又は複数のネットワーク107上で互いに通信することが可能であってもよい。いくつかのケースでは、1又は複数のネットワーク107はLAN、プライベートネットワーク等であってもよい一方、他のケース、1又は複数のネットワーク107は上記で論じたネットワーク106の何れかを含んでもよい。
【0023】
各ユーザ装置108は、デスクトップ、ラップトップ、タブレット計算装置、モバイル装置、スマートフォン、ウェアラブル装置、端末、及び/又はネットワーク上でデータを送信可能な他の任意の種類の計算装置等の任意の適切な種類の計算装置であってもよい。ユーザ112は、個々のユーザアカウント、ユーザログイン資格情報等によってユーザ装置108に関連付けられてもよい。更にユーザ装置108は、1又は複数のネットワーク106によって、別個のネットワークによって、又は他の任意の適切な種類の通信接続によってサービス計算装置102と通信することができてもよい。本明細書の開示の利益を得る当業者に数多くの他の改変形態が明らかになる。
【0024】
更に各ユーザ装置108は、ネットワークストレージシステム104上に記憶するためのユーザデータを送信するために及び/又はデータ要求118によってネットワークストレージシステム104から記憶済みデータを受信するために等、サービス計算装置102上で実行可能なユーザウェブアプリケーション116と通信する等のために、ユーザ装置108上で実行され得るユーザアプリケーション114の個々のインスタンスを含んでもよい。いくつかのケースではアプリケーション114はブラウザを含んでもよく又はブラウザを介して動作してもよい一方、他のケースではアプリケーション114は1又は複数のネットワーク106上でのユーザウェブアプリケーション116及び/又はサービス計算装置102との通信を可能にする通信機能を有する他の任意の種類のアプリケーションを含んでもよい。
【0025】
システム100内で、ユーザ112は自らの個々のユーザ装置108が通信しているサービス計算装置102にデータを記憶し、及びサービス計算装置102からデータを受信してもよい。従って、サービス計算装置102はユーザ112及び個々のユーザ装置108にローカルストレージを提供してもよい。定常状態運用中、サービス計算装置102と周期的に通信するユーザ108がいる場合がある。
【0026】
加えて管理者装置110は、デスクトップ、ラップトップ、タブレット計算装置、モバイル装置、スマートフォン、ウェアラブル装置、端末、及び/又はネットワーク上でデータを送信可能な他の任意の種類の計算装置等の任意の適切な種類の計算装置としてもよい。管理者120は、個々の管理者アカウント、管理者ログイン資格情報等によって管理者装置110に関連付けられてもよい。更に管理者装置110は、1又は複数のネットワーク106、107によって、別個のネットワークによって、及び/又は他の任意の適切な種類の通信接続を介してサービス計算装置102と通信可能であってもよい。
【0027】
更に各管理者装置110は、複数のサービス計算装置102を管理するためにサービス計算装置102上で実行されるプログラムと通信するために等、管理者装置110上で実行されてもよい管理者アプリケーション122の個々のインスタンスを含んでもよい。一例として管理者アプリケーション122は、システム100を管理するための管理命令を送信するために、並びに管理要求126等によってネットワークストレージシステム104上に記憶するための管理データを送信するために及び/又はネットワークストレージシステム104から記憶済み管理データを受信するために等、サービス計算装置102上で実行可能な管理ウェブアプリケーション124と通信してもよい。いくつかのケースでは、管理者アプリケーション122はブラウザを含んでもよく又はブラウザによって動作してもよい一方、他のケースでは管理者アプリケーション122は1又は複数のネットワーク106上でのサービス計算装置102上で実行される管理ウェブアプリケーション124又は他のプログラムとの通信を可能にする通信機能を有する他の任意の種類のアプリケーションを含んでもよい。
【0028】
サービス計算装置102は、ネットワークストレージシステム104に記憶されるデータを送信するために及びネットワークストレージシステム104から要求されたデータを取り出すために等、ネットワークストレージシステム104へのゲートウェイを提供してもよいストレージプログラム130を実行してもよい。加えてストレージプログラム130は、データ保持期間、データ保護レベル、データ複製等を管理するために等、システム100によって記憶されるデータを管理してもよい。
【0029】
サービス計算装置102は、複数のデータベース(DB)パーティション134(1)~134(N)に分割されてもよく、及び複数のサービス計算装置102にわたって分散されてもよいデータベース(DB)132を含んでもよい。一例として、DB132はネットワークストレージシステム104に記憶されるオブジェクトデータ136を管理するために使用されてもよい。DB132は、個々のオブジェクトに関する情報、個々のオブジェクトにどのようにアクセスするのか、オブジェクトデータ136のためのストレージ保護レベル、ストレージ保持期間、オブジェクト所有者情報、オブジェクトサイズ、オブジェクトタイプ等、オブジェクトデータ136に関する多数のメタデータを記憶してもよく、或いは含んでもよい。更に、DB管理プログラム138は、DB132に新たなサービス計算装置102を追加すること、新たなオブジェクトが記憶され、古いオブジェクトが削除され、オブジェクトが移行される等としてDB132の更新を調整すること等のために、DB132を管理し維持してもよい。加えていくつかの例では、そのDB管理プログラム138はサービス計算装置102のそれぞれの上のパーティション134のサイズをモニタしてもよい。例えばDB管理プログラム138は、パーティション134がパーティションサイズ閾値、トラフィックボリューム閾値、応答レイテンシ閾値等に達すること等に基づいてパーティション134を分割する命令を送信することに決めてもよい。
【0030】
パーティション134は、サービス計算装置102の複数のものにわたって分散される複数のパーティションを含んでもよい。いくつかの例では、パーティション134(1)~134(N)を含む複数のサービス計算装置102は、複数のサービス計算装置102においてDB132の冗長性を提供するために等、区分データを管理するためのRaft合意アルゴリズム構成内のRaftグループとして構成されてもよい。本明細書の区分化されたDB132は、メタデータを区分化し、複数のDB計算ノードとして機能する別個のサービス計算装置102にわたってメタデータを分散させることによって拡張性を提供してもよい。
【0031】
更にサービス計算装置102は、その個々のサービス計算装置102によって記憶されるデータを管理するために、及び本明細書のサービス計算装置102による他の機能を実行するために個々のサービス計算装置102によって実行されるノード管理プログラム146を含んでもよい。例えばノード管理プログラム146は、個々のサービス計算装置102がリーダ装置であるパーティションのためのランダム又は擬似ランダムハートビート通信(HBC)150を生成するランダムハートビート(HB)通信モジュール148をふくんでもよい。個々のノード上のノード管理プログラム146は、生成されたハートビート通信150を対応するパーティションの個々のフォロワ装置に送信してもよい。加えてノード管理プログラム146は、個々のノードがフォロワパーティションを保持する他のリーダ装置から受信されるハートビート通信150を受信し処理してもよい。
【0032】
本明細書のいくつかの例では、各パーティション134は、パーティション内に記憶されたデータの冗長なバックアップを提供するために等、Raft合意アルゴリズムに従って動作するように構成されてもよい。例えばRaftアルゴリズムは、各サービス計算装置102が個々のパーティション内のデータに対する同じ変更に合意することを確実にする。Raftグループは選ばれたリーダによってコンセンサスを達成し、例えば特定のパーティションを含むRaftグループ内の特定のサービス計算装置102は特定のパーティションに関するリーダ又はフォロワであってもよい。リーダは、区分データに対する変更をフォロワサービス計算装置102に複製することを担ってもよい。リーダは、リーダ装置がリーダシップの役割を維持する限り指定された時間枠の中で継続的に等、フォロワに対してハートビート通信150を送信することによって自らの存在を自らのフォロワに定期的に知らせてもよい。
【0033】
サービス計算装置102の少なくとも一部は、パーティションマップエントリとRaftグループとの間のパーティションマッピングを維持してもよい。サービス計算装置102がクライアントから要求を受信すると、どのRaftグループに要求が属するのかを決定するためにパーティションマッピングが調べられてもよい。サービス計算装置102が特定の要求に関するマッピングを有さない場合、エラーを要求しているクライアントに返してもよい。そうでなければ要求は、正しいRaftグループに転送されてもよい。サービス計算装置102がそのRaftグループのリーダである場合、要求はサービス計算装置によってサービスされる。そうではなく、サービス計算装置がそのRaftグループのフォロワであるような場合等はRaftグループのリーダの接続情報を含むエラーが要求したクライアントに返される。従って、要求したクライアントに、返されるエラーメッセージ内でどのサービス計算装置に要求をリダイレクトするのかに関する情報が提供される。
【0034】
Raftアルゴリズムは、様々な機能を実行するために2種類の遠隔手続き呼出し(RPC)を採用してもよい。RPCの1つの種類は、選挙中に投票を集めてRaftグループの新たなリーダを選ぶ間に投票を集めるために1又は複数の候補ノードによって送信されてもよいRequestVotes RPCである。第2の種類のRPCは、ログエントリ又はフォロワ装置への他のデータの更新を複製するためにリーダ装置によって使用されてもよいAppendEntries RPCである。加えて、AppendEntries RPCは、リーダが依然としてリーダであることをフォロワに知らせるための及びフォロワが引き続き動作しているかどうかを確認するためのハートビートメカニズムとしても使用されてもよい。例えばハートビート通信150に応答がある場合そのフォロワは稼働中であり、ない場合そのフォロワは故障していると見なしてもよい。典型的には、ハートビート通信150はデータの更新を含まない。
【0035】
Raftグループのリーダとしての権限を保つために、リーダ装置はハートビート通信150を周期的に送信して自らのフォロワ装置に統治権を表明する。ハートビート通信150が選出タイムアウト閾値の間にフォロワ装置の1又は複数によって受信されない場合、フォロワ装置はリーダ選出を開始してもよい。例えばタイムアウトしたフォロワ装置は自らの状態を候補状態に変更し、リーダになるために自らに投票し、過半数を確立してリーダになることを試みるためにRequestVotes RPCを発行してもよい。候補ノードは、Raftグループ内のサービス計算装置102から過半数の投票を得ることによってリーダになる。選ばれた候補は自らの状態をリーダに更新し、Raftグループ内の他のノードに新たなリーダを通知するためにハートビート通信150を送信し始める。
【0036】
ノードは典型的にはフォロワ装置として開始し、リーダからのハートビート通信150を予期する。フォロワは、選出タイムアウト閾値と呼ばれる幾らかの時間にわたりこのハートビート通信を待つ。フォロワ装置がタイムアウト閾値のうちにハートビート通信150を受信しない場合、そのノードはリーダが機能していないと見なし、上記で論じたように候補状態に移行する。このプロセスはシステム100内の全てのRaftグループ内で繰り返されてもよく、リーダが選ばれること並びに複数のRaftグループ及びパーティションの一部又は全てによって同様のタイミングでハートビート通信が送信されることをもたらしてもよい。更に、選出のタイムアウトが起こるのを回避するためにフォロワの全てが同じ時間窓の中でハートビート通信150を受信しなければならないので、フォロワのそれぞれのためのハートビート通信期限が効果的にクラスタ化されてもよい。従ってシステム100のサイズが増加すると、単一の物理ノード上の個々のRaftグループがほぼ同じタイミングのクラスタ化されたハートビート通信期限に落ち着く傾向があってもよい。
【0037】
加えていくつかのケースでは、1又は複数のRaftグループのリーダ及び/又は1若しくは複数の他のRaftグループのフォロワになること等により、システム100内の複数のサービス計算装置102が複数のRaftグループを扱ってもよい。システムが開始されるとき、サービス計算装置102は典型的には緊密にクラスタ化されたハートビート通信期限を有してもよい。更に、現在の負荷に合わせて自動で拡張及び/又は調節するためにシステム100が行うアクションは、多くのRaftグループに即座に影響を及ぼしてもよく、そのことはシステムの規模が増加するにつれてサイズが増加するハートビート通信のクラスタも形成し得る。加えていくつかの例では、パーティション内に記憶されるメタデータのサイズが閾値サイズを上回る場合に等、Raftグループに関連するパーティションが2以上のパーティションに分割されてもよい。一例として、Raftグループはシャットダウンされ、2つの新たなRaftグループが形成されてもよい。それらの2つの新たなRaftグループは同時に作成されるので、一緒にクラスタ化されたハートビート通信期限を有してもよい。更に、パーティションを分けることがそれらの2つの新たなRaftグループにわたってメタデータが一様に分散されることをもたらす場合、それらの新たなRaftグループも同時に分けられる可能性が高く、クラスタ化されたハートビート通信期限を有する4つのRaftグループをもたらしてもよい。
【0038】
クラスタ化されたハートビート通信期限は複数のハートビート通信150が同じノードに同時に届けられる原因となる場合があり、そのことは処置の遅延及び不要な選出のタイムアウトを招き得る。従って本明細書の実装形態は、各リーダ装置によって送信されるハートビート通信150のタイミングをランダム化することによって上記の問題に対する技術的解決策を提供する。例えばランダムタイミングは、いくつかのケースでは選出タイムアウト閾値に基づいてもよい、指定の最短時間と指定の最長時間との間の範囲から選択されてもよい。個々のRaftグループそれぞれの各リーダ装置によるハートビート通信のランダムタイミングは、ハートビート通信期限のクラスタ化及びその結果生じる不要な選出のタイムアウトを効果的に減らし又はなくす。ハートビート通信150のランダム化されたタイミングの更なる詳細を以下で論じる。
【0039】
いくつかのケースでは、サービス計算装置102はサイト152において1又は複数のグループ、クラスタ、システム等に構成されてもよい。加えていくつかのケースでは、データの複製、災害復旧保護等を提供するために、複数のサイト152が互いに地理的に分散されてもよい。更にいくつかのケースでは、複数のサイト152の連合を提供するために等、複数の異なるサイト152におけるサービス計算装置102は互いに安全に通信するように構成されてもよい。
【0040】
図2は、いくつかの実装形態に係るシステムの一部の論理構成200の一例を示すブロック図である。いくつかの例では、本明細書の開示の利益を得る当業者に明らかであるように、論理構成200が上記で論じたシステム100又は他の様々な可能な計算システムアーキテクチャの何れかに対応してもよい。この例では、複数のパーティショングループ202は、第1パーティショングループ202(1)及び第2パーティショングループ202(2)を含んで示されている。いくつかの例では、各パーティショングループ202はRaft合意アルゴリズムに従って動作するように構成されるRaftグループに対応してもよいが、本明細書の実装形態は必ずしもRaftアルゴリズムに限定されない。第1パーティショングループ202(1)は、パーティショングループ202(1)の現在のリーダとしての第1サービス計算装置102(1)、フォロワとしての第2サービス計算装置102(2)、及び別のフォロワとしての第3サービス計算装置102(3)を含む。同様に第2パーティショングループ202(2)は、パーティショングループ202(2)の現在のリーダとしての第2サービス計算装置102(2)、フォロワとしての第1サービス計算装置102(1)、及び別のフォロワとしての第3サービス計算装置102(3)を含む。
【0041】
第1パーティショングループ202(1)は第1パーティションメタデータを管理し、第2パーティショングループ202(2)は第1パーティションメタデータと異なる第2パーティションメタデータを管理する。例えば第1パーティションメタデータは上記で論じたメタデータデータベース132からのメタデータの第1部分であってもよい一方、第2パーティションメタデータはメタデータデータベース132からのメタデータの異なる部分の第2であってもよい。更に、各パーティショングループ202のリーダはそのパーティションのメタデータの機能するバージョンを維持してもよいのに対し、フォロワはリーダが維持するメタデータの冗長コピーを維持してもよい。従って、第1パーティショングループ202(1)に関して、第1サービス計算装置102(1)は第1パーティションメタデータのリーダバージョン204(1)を維持し、第2サービス計算装置102(2)は第1パーティションメタデータのフォロワコピー204(2)を維持し、第3サービス計算装置102(3)は第1パーティションメタデータの別のフォロワコピー204(3)を維持する。同様に第2パーティショングループ202(2)に関して、第2サービス計算装置102(2)は第2パーティションメタデータのリーダバージョン206(1)を維持し、第1サービス計算装置102(1)は第2パーティションメタデータのフォロワコピー206(2)を維持し、第3サービス計算装置102(3)は第2パーティションメタデータの別のフォロワコピー204(3)を維持する。
【0042】
一例として、第1パーティショングループのリーダとして動作している第1サービス計算装置102(1)が第1パーティションメタデータのリーダバージョン204(1)に対する更新を行う場合、リーダはフォロワ装置102(2)及び102(3)のそれぞれにデータ更新208を送信してもよい。従って、第2サービス計算装置102(2)及び第3サービス計算装置102(3)は、リーダ装置によって維持されている第1パーティションメタデータのリーダバージョン204(1)との一貫性を維持するために、第1パーティションメタデータ204(2)及び204(3)のそれぞれのコピーを更新してもよい。第2パーティショングループ202(2)も同様に機能してもよい。
【0043】
システム200内で、210に示すように、システム200は追加のパーティショングループ(
図2には不図示)を作成するためにパーティショングループを動的にスケーリングすることによって動的にスケーリングされてもよい。例えば上記で論じたように、メタデータのサイズがサイズ閾値を上回る場合、アクセス負荷が負荷閾値を上回る場合、又はアクセス時間がアクセス時間閾値を上回る場合等、2つ以上の新たなパーティショングループを作成するために、1又は複数のパーティショングループ202のデータは分けられてもよく、1又は複数の追加のサービス計算装置102(不図示)に移動されてもよい。
【0044】
個々のパーティショングループ202内の個々のサービス計算装置102により、パーティショングループ202によって記憶されるメタデータを編成するために1又は複数のスキーマが適用されてもよい。いくつかの実装形態では、各スキーマ(例えばデータベース、データ、又はその一部の編成又は構造)は1又は複数のパーティションから始まってもよい。上記で論じたように、特定のパーティションが大きくなるにつれてパーティションは2つの新たなパーティションに動的に分割されてもよく、それらの新たなパーティションは追加の別個のサービス計算装置102に分散すされてもよく、それによりそのスキーマのスループットが実質的に2倍にされ得る。スキーマのいくつかの非限定的な例は、バケットスキーマテーブル212、オブジェクトスキーマテーブル214、ユーザスキーマテーブル216等を含んでもよい。スキーマテーブル212~216の各組は、対応する個々のメタデータを個々のスキーマによって指定される特定のやり方で編成されるようにしてもよい。
【0045】
本明細書のいくつかの例は、水平拡張性を実現可能なRaftアルゴリズムベースの区分化及び分散化されたデータベースを含んでもよい。例えばより多くのデータが取り込まれれば取り込まれるほど、パーティションは大きくなり続け、本明細書の実装形態に従い、パーティショングループ202の区分データを継続的に動的に分けて新たなパーティショングループ202を形成してもよい。これにより、パーティション内のデータが離散的なパーティショングループ202内の全てのサービス計算装置102にわたって分散されることが可能になり、複数のサービス計算装置102に対する負荷をより均等に分散されるようにする。更に、複数のサービス計算装置102により多くの計算装置が追加されると、パーティション及びパーティショングループ202の数は増加し続け、追加の計算ノードがシステム200に追加されると、パーティションはシステム200にわたって弾力的に及び無制限に広げられてもよい。
【0046】
従って220に示すように、本明細書の例は複数のサービス計算装置102にわたる分散パーティション構成でメタデータの一貫性の強いコピーを記憶することにより、分散され高可用なメタデータを提供する。いくつかのケースでは、分散されたパーティション内の分散データの一貫性はRaft合意アルゴリズムを使用して維持されてもよいが、フォロワ装置にハートビート通信を送信するリーダを含む他のアルゴリズムも使用されてもよい。例えばリーダは、クライアント装置(
図2には不図示)からの読み取り及び書き込みトランザクションを扱ってもよく、自らのフォロワ装置にデータ更新を提供してもよい。リーダ計算装置102が故障した場合、フォロワ計算装置102の1つがリーダとして選ばれてもよく、読み取り及び書き込みトランザクションを取り扱うことを引き継いでもよい。本明細書のシステムのクライアント計算装置は、どの計算ノードがリーダかを発見し、その計算装置に要求を支持することができる。パーティショングループ202のリーダが変わる場合、クライアントは新たなリーダに自動でルートされてもよい。
【0047】
図3は、いくつかの実装形態に係る複数のパーティショングループ及びハートビート通信の論理構成300の一例を示すブロック図である。いくつかの例では、本明細書の開示の利益を得る当業者に明らかであるように、論理構成300は上記で論じたシステム100の一部又は他の様々な可能な計算システムアーキテクチャの何れかに対応してもよい。上記で述べたように、本明細書のいくつかの例では各パーティショングループはパーティションの冗長なバックアップを提供するためにRaft合意アルゴリズムに従って動作するように構成されたRaftグループであってもよい。或いはパーティショングループは、パーティショングループが、記載したようなリーダ、フォロワ、及びハートビート通信を含む別のアルゴリズムに従って動作してもよい。
【0048】
実装されるとき、Raftアルゴリズムは、各サービス計算装置102が個々のパーティショングループの個々のパーティション内のデータに対する同じ変更に合意することを確実にする。パーティショングループは選ばれたリーダを介して合意を達成する。リーダは、区分データの変更をパーティショングループ内のフォロワ計算装置に複製することに対して責任があってもよい。リーダは、選出タイムアウト閾値に基づくタイミング内にそれぞれのフォロワ装置にハートビート通信を送信することにより、自らの存在をフォロワ装置に定期的に知らせてもよい。フォロワが選出タイムアウト閾値内にハートビート通信をリーダから受信しない場合、フォロワはフォロワの中から新たなリーダを選ぶためのプロセスを開始してもよい。
【0049】
本明細書のいくつかの例では、本明細書の分散データベース内に個々のデータパーティションを維持する各パーティショングループは、3つのパーティショングループメンバを含んでもよい。例えばリーダは、パーティションに関するクライアントに対するデータアクセス応答(例えば読み取り、書き込み等)を扱ってもよいのに対し、フォロワは高い可用性及び冗長性を実現するためにパーティション内のデータ及びデータに対する任意の更新を複製してもよい。リーダパーティションを維持するサービス計算装置102は、リーダパーティションデータの変更をサービス計算装置102の他のものによって維持されるフォロワパーティションに複製してもよい。如何なるサービス計算装置102も、自らが管理するパーティションの何れかのリーダになることができる。
【0050】
図示の例には、論理構成300を与えるための複数のサービス計算装置102(1)、102(2)、及び102(3)が含まれている。例えば、サービス計算装置102(1)上の第1パーティションリーダ304(1)並びにサービス計算装置102(2)及び102(3)それぞれの上の2つの第1パーティションフォロワ304(2)及び304(3)を含む第1パーティションが作成され、サービス計算装置102(2)上の第2パーティションリーダ308(2)並びにサービス計算装置102(1)及び102(3)それぞれの上の2つの第2パーティションフォロワ308(1)及び308(3)を含む第2パーティションが作成され、サービス計算装置102(1)上の第3パーティションリーダ310(1)並びにサービス計算装置102(2)及び102(3)それぞれの上の2つの第3パーティションフォロワ310(2)及び310(3)を含む第3のパーティションが作成され、サービス計算装置102(3)上の第4パーティションリーダ312(3)並びにサービス計算装置102(1)及び102(2)それぞれの上の2つの第4パーティションフォロワ312(1)及び312(2)を含む第4パーティションが作成されていると仮定する。更に、この例では3つのサービス計算装置及び4つのパーティションしか示されていないが、他の例では数十の、数百の、更には数千のサービス計算装置102及びパーティションがあってもよい。
【0051】
リーダの場合にクライアント要求に応答するために及び/又はフォロワの場合にリーダのデータとの一貫性を保つために等、各サービス計算装置はメタデータを更新するために自らの記憶済みのメタデータにアクセスしてもよい。いくつかの例では、メタデータは、第1パーティション~第4パーティションのためのメタデータとして区分化されたキーバリューメタデータ314であってもよい。例えばサービス計算装置102(1)はキーバリューメタデータ314(1)を維持し、サービス計算装置102(2)はキーバリューメタデータ314(2)を維持し、サービス計算装置102(3)はキーバリューメタデータ314(3)を維持する。更にいくつかの例では、キーバリューメタデータ314はキー空間範囲の組等に応じて構成されるキーバリューペアであってもよい。一例として、文字キーの場合、第1パーティションはA~Cのキー範囲を含んでもよく、第2パーティションはD~Fのキー範囲を含んでもよい、第3パーティションはG~Iのキー範囲を含んでもよく、第4パーティションはJ~Lのキー範囲を含んでもよく、その後も同様に続く。或いはキーバリューを割り当てるためにハッシュ関数が使用される場合、個々のパーティションのためのキー範囲は数値の範囲であってもよい。従って、各パーティションは、パーティションを管理しているサービス計算装置が責任を負うパーティション識別子及び1組のキー空間範囲が与えられてもよい。更に本明細書の実装形態は、或る特定のデータ編成の構成、メタデータデータベース内に維持されるメタデータの種類等に限定されない。
【0052】
本明細書の一部の実装形態によれば、個々のパーティショングループのリーダ装置として機能しているとき、サービス計算装置102(1)、102(2)、及び102(3)のそれぞれは個々のフォロワ装置にハートビート通信(HBC)を送信してもよい。従って、第1パーティション304のリーダとして動作しているとき、サービス計算装置102(1)はサービス計算装置102(2)及び102(3)に第1パーティションのハートビート通信HBC1を送信する。同様に、第3パーティション310のリーダとして動作しているとき、サービス計算装置102(1)はサービス計算装置102(2)及び102(3)に第3パーティションのハートビート通信HBC3を送信する。更に、第2パーティション308のリーダとして動作しているとき、サービス計算装置102(2)はサービス計算装置102(1)及び102(3)に第2パーティションのハートビート通信HBC2を送信する。加えて、第4パーティション312のリーダとして動作しているとき、サービス計算装置102(3)はサービス計算装置102(1)及び102(2)に第2パーティションのハートビート通信HBC4を送信する。
【0053】
更に、フォロワとして機能しているとき、サービス計算装置102(1)、102(2)、及び102(3)のそれぞれは、個々のリーダ装置によって送信される個々のHBCを受信する。従って、サービス計算装置102(1)はHBC2及びHBC4を受信し処理し、サービス計算装置102(2)はHBC1、HBC3、及びHBC4を受信し処理し、サービス計算装置102(3)はHBC1、HBC3、及びHBC2を受信し処理する。いくつかの例では、受信されたハートビート通信を処理することは、選出タイムアウト閾値の時間をリセットすることを含んでもよい。
【0054】
上記で述べたように、Raftアルゴリズムの場合は、ハートビート通信は空のAppendEntries RPCであってもよい。更に、各パーティショングループのリーダはローカルログ内でコミットされるインデックス(
図3には不図示)を維持してもよく、ハートビート通信内を含む全てのAppendEntries RPC内でその情報を送信してもよい。パーティションのフォロワが自らのローカルログ内でそのインデックスを有するエントリを見つけない場合、フォロワは要求を拒否してもよい。従って、AppendEntries RPCが成功裏に返される場合、リーダは自らのログとフォロワのログとが同一であることを知る。
【0055】
ほぼ同時に処理するために個々のハートビート通信HBC1~HBC4が個々のサービス計算装置102(1)、102(2)、及び102(3)に絶え間なく到達する場合のように、個々のハートビート通信HBC1~HBC4のクラスタ化処理を防ぐために、個々のリーダサービス計算装置は個々のパーティションに関してハートビート通信が自らのフォロワに送信されるタイミングをランダム化してもよい。更に、タイミングをランダム化することは、ハートビート通信が頻繁に送信され過ぎないように、最長持続ハートビート通信間隔を条件としてもよく、更に最短の間隔を条件としてもよい。一例として、本明細書のいくつかの実装形態は一様に分布したランダム化ハートビート通信を採用してもよい。この技術は、リーダ装置及びフォロワ装置がRaftアルゴリズムの要件を依然として満たしながら、任意の所与の時点において最低数のハートビート通信を送信し処理することを確実にしてもよい。従って、この技術は各ハートビート通信が成功裏に送信され、受信され、処理される確率を高める。
図4に関して幾つかの具体例を以下で論じる。
【0056】
図4は、いくつかの実装形態に係る複数のパーティショングループに関するランダムハートビート通信400の一例を示す概略図である。例えば
図4の例は、上記で論じた
図3の論理構成300に基づいてもよい。従って、各パーティショングループは異なるパーティションを表しながら、各サービス計算装置102はRaftグループ構成等にある複数の別個のパーティショングループの一部であってもよい。上記で説明したように、最長持続ハートビート間隔の影響を受け、リーダはハートビート通信が自らのフォロワに送信される時点をランダム化する。一様に分布したランダム化ハートビートタイミングを使用することにより、リーダ及びフォロワはRaftアルゴリズム又は適用されている他のアルゴリズムの条件を引き続き満たしながら、任意の所与の時点において最低数のハートビートを送信し処理することができる。
【0057】
図示の例では、上のボックス402は、個々のハートビート通信(HBC)を送信するための各パーティショングループの個々のリーダのタイムラインの例を含む。例えばサービス計算装置102(1)は、第1パーティションリーダとして、リーダになった後の第1ランダム時点404に第1パーティションのハートビート通信HBC1(1)を送信してもよい。次にサービス計算装置102(1)は、第1パーティションリーダとして、第1時点404の後であり次のハートビート通信を送信するための最短時間と最長時間との間のランダム時点406において次の第1パーティションのハートビート通信HBC1(2)を送信する。一例として、選出タイムアウト閾値が800msであり、最短時間が300msであり、最長時間が400msであると仮定する。従って次のHBC1(2)は、第1時点404の300msから400ms後のランダム時点406において送信されてもよい。同様に、次の第1パーティションのハートビート通信HBC1(3)は、時点406の300msから400ms後のランダム時点408に送信されてもよい。更に、第1パーティションリーダが選ばれた後に第1HBCを送信するためのランダム時点は、次のHBC1(2)、次のHBC1(3)、及びその後送信される他の全てのHBCをランダムに送信するための時間範囲と異なる時間範囲(例えば0ms~100ms)からランダムに選択されてもよい。
【0058】
上記で述べたように、いくつかのケースでは、HBCを送信するランダム時点を選択するための時間範囲の最長時間及び最短時間は、選出タイムアウト閾値に基づいてもよい。例えば最長時間(この例では400ms)は、選出タイムアウト閾値(この例では800ms)の半分又はそれ未満であるように選択されてもよい。従ってこの構成に基づき、フォロワが1つのハートビート通信を逃しながらも選出タイムアウトを回避するように第2ハートビート通信を時間内に依然として受信し、それにより新たなリーダを選ぶための選出プロセスを不要に開始するのを防ぐことができる。
【0059】
更に、本明細書の実装形態は、或る特定の選出タイムアウト閾値、又は次のHBCを送信するための最長時間及び最短時間の或る特定の範囲に限定されない。例えば選出タイムアウト閾値が1600msであると仮定すると、一例として、ランダムタイミングでHBCを送信するのに適切な範囲は、600ms~800msの間であってもよい。この形態は、前のHBCがリーダによって送信された前の時点から600ms後の及び800ms前のタイムライン上の任意の点においてHBCが生じてもよいようにハートビートをランダム化しながら、リーダがハートビートを頻繁に送信し過ぎていないことを確実にする。例えばフォロワ装置における輻輳を増加させる傾向がある多過ぎる頻度でHBCを送信することを回避するために、最短時間範囲を最長時間の約1/2~3/4に制限することが望ましくてもよい。
【0060】
上記で論じた第1パーティションの例と同様に、サービス計算装置102(2)は、第2パーティションリーダとして、選ばれた後に第1HBC2(1)を送信するための第1間隔(0<t1<100ms)からランダムに選択された時点である第1時点410に最初のHBC2(1)を送信し、第1時点410の後の第2間隔(300<t2<400)から選択された第2時点412に次のHBC2(2)を送信し、第2時点412の後の第2間隔(300<t3<400)から選択された第3時点414に次のHBC2(3)を送信し、サービス計算装置102(1)は、第3パーティションリーダとして、選ばれた後に第1HBC3(1)を送信するための第1間隔(0<t1<100ms)からランダムに選択される時点である第1時点416において最初のHBC3(1)を送信し、第1時点416の後の第2間隔(300<t2<400)から選択された第2時点418に次のHBC3(2)を送信し、第2時点418の後の第2間隔(300<t3<400)から選択される第3時点420に次のHBC3(3)を送信し、サービス計算装置102(3)は、第4パーティションリーダとして、選ばれた後に第1HBC4(1)を送信するための第1間隔(0<t1<100ms)からランダムに選択される時点である第1時点422において最初のHBC4(1)を送信し、第1時点422の後の第2間隔(300<t2<400)から選択された第2時点424において次のHBC4(2)を送信し、第2時点424の後の第2間隔(300<t3<400)から選択される第3時点426に次のHBC4(3)を送信する。
【0061】
加えていくつかの例では、異なるパーティションは、異なる選出タイムアウト閾値及び/又はランダム時点を選択するための異なる時間間隔の範囲が割当てられてもよい。例えば第1パーティションはランダム時点を選択するための時間間隔(300<t<400)を有してもよいのに対し、第2パーティションはランダム時点を選択するための時間間隔(275<t<375)を有してもよい。本明細書の開示の利益を得る当業者に数多くの他の改変形態が明らかになる。
【0062】
加えて一例として、ランダム時点を選択するために一様ランダム分布が使用されてもよい。但し、本明細書で採用されたランダム時点は或る特定のランダム性アルゴリズムによって決定されることに限定されず、ランダム又は擬似ランダム時点、ランダム又は擬似ランダム数等を生成するための数多くの知られている技術の何れかを使用して決定されてもよい。従って、本明細書の「ランダム」という用語はランダム値生成技法及び擬似ランダム値生成技法の両方を含む。
【0063】
図4では、下のバックス430は、リーダ装置から受信されるハートビート通信を処理する一例を含む。この例では、上記で論じたようにサービス計算装置102(1)は、第2パーティショングループ及び第3パーティショングループ内のフォロワとして、第2パーティションリーダ及び第3パーティションリーダによって送信されたハートビート通信を受信する。例えばサービス計算装置102(1)は、上記で論じた時点410にHBC2(1)の送信、ネットワークレイテンシ、及び受信に関する幾らかの追加時間を加えた時点に対応してもよい時点432に、最初の第2パーティションのハートビート通信HBC2(1)を受信すると仮定する。同様に、サービス計算装置102(1)は最初の第3パーティションのハートビート通信HBC3(1)を時点434に受信する。互いの近い時間のうちに行われる伝送について概して一貫したネットワークレイテンシを仮定し、時点434はこの例である、は個々の伝送時点410及び416間のオフセットの時間と同様の時間だけ時点432から概してオフセットされる。従ってHBC2(1)及びHBC3(1)が異なる時点において受信され、それによりサービス計算装置102(1)において異なるタイミングに従って処理され得る。同様に、他のハートビート通信HBC2(2)はHBC3(2)が受信される時点438と異なる時点436に受信され、HBC2(3)はHBC3(3)が受信される時点442と異なる時点440に受信される。フォロワとして動作する他のサービス計算装置102(2)及び102(3)(
図4には不図示)によって受信された他のハートビート通信は、ハートビート通信を送信するランダムタイミングによって同様にずらされ或いは間隔を空けられてもよく、それによりHBCのクラスタ化又は個々のサービス計算装置102(2)及び102(3)においてハートビート通信を処理するための他の輻輳を回避することができる。
【0064】
図5は、いくつかの実装形態に係る複数のパーティショングループに関するハートビート通信のためのプロセス例を示す流れ図である。このプロセスは、論理流れ図の中のブロックの集合として示され、それらは一連の操作を表し、その一部又は全てはハードウェア、ソフトウェア、又はその組み合わせによって実装されてもよい。ソフトウェアの文脈において、ブロックは、1又は複数のプロセッサによって実行されるとき、列挙される操作を実行するようにプロセッサをプログラムする1又は複数のコンピュータ可読媒体上に記憶されるコンピュータ実行可能命令を表してもよい。概してコンピュータ実行可能命令は、特定の機能を実行し又は特定のデータ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造等を含む。ブロックが記載された順序は限定として解釈すべきではない。記載するブロックの任意の個数は、このプロセス又は代替的プロセスを実装するために任意の順序で及び/又は並列に組み合わせることができ、ブロックの全てを実行しなければならないわけではない。本明細書の例の中で記載される環境、枠組み、及びシステムに関してプロセスを解説目的で説明するが、このプロセスは多岐にわたる他の環境、枠組み、及びシステム内で実装されてもよい。
図5では、
図1に関して論じたノード管理プログラム146及びランダムハートビート通信モジュール148を実行することによって等、プロセス500が1又は複数のサービス計算装置102によって少なくとも部分的に実行されてもよい。
【0065】
502で、計算装置は、複数の計算装置にわたって分散された複数のパーティションを提供するために、複数の計算装置にわたりメタデータデータベースを区分してもよい。例えばアクセス可能性、冗長性、及び一貫性を改善するために、メタデータデータベースのメタデータは複数のパーティションに区分化され、複数の計算装置にわたって分散されてもよい。
【0066】
504で、計算装置は、複数のパーティションに対応する複数のパーティショングループを形成してもよく、各パーティショングループは複数の計算装置のうちの複数の計算装置を含む。例えば複数の計算装置は、1又は複数の計算装置が故障した場合のデータの冗長性を提供するために同じデータを記憶してもよい。
【0067】
506で、計算装置は、各グループ内の1つの計算装置がリーダとして動作し、そのパーティショングループ内の他の計算装置がフォロワとして動作するようにパーティショングループを構成してもよい。一例として、パーティショングループは、Raft合意アルゴリズムに従ってRaftグループとして構成されてもよいが、本明細書の他の例ではハートビート通信を採用する他のアルゴリズムが使用されてもよい。
【0068】
508で、計算装置は、自らのグループ内の他の計算装置にハートビート通信を送信するための上限時間閾値及び下限時間閾値を決定するように各グループ内のリーダが構成されるように、複数の計算装置を構成してもよい。いくつかの例では、上限時間閾値は選出タイムアウト閾値の半分であってもよい。更にいくつかの例では、下限時間閾値は上限時間閾値の半分、3分の2、4分の3等であってもよい。
【0069】
510で、個々のパーティショングループ内の個々のリーダ計算装置は上限時間閾値と下限時間閾値との間のランダム時点を選択する。一例として、ランダム時点を選択するために一様ランダム分布を使用されてもよい。他の例では、他の任意の知られている乱数値発生器又は擬似乱数値発生器が上限時間閾値と下限時間閾値との間のランダム時点を選択するために使用されてもよい。
【0070】
512で、個々のパーティショングループ内の個々のリーダ計算装置は、選択されたランダム時点に従って個々のパーティショングループ内の他の計算装置にハートビート通信を送信する。
【0071】
514で、個々のパーティショングループ内の個々のリーダ計算装置は、ハートビート通信が送信された時点に基づいて次のハートビート通信を送信するために基づく次の上限時間閾値及び下限時間閾値を決定する。
【0072】
516で、個々のパーティショングループ内の個々のリーダ計算装置は、自らが引き続き個々のパーティショングループのリーダであるかどうかを決定する。引き続きリーダである場合、このプロセスは510に戻り、個々のリーダ計算装置は上限時間閾値と下限時間閾値との間の次のランダム時点を選択する。他方で、個々の計算装置がもはやリーダではない場合、このプロセスは518に進む。
【0073】
518で、もはやリーダではない個々の計算装置は現在のリーダからのハートビート通信を待つ。選定タイムアウト閾値に達する前にハートビート通信が受信されなかった場合、個々の計算装置は選択手続きを開始してもよい。
【0074】
本明細書に記載したプロセスの例は解説目的で示したプロセスの例に過ぎない。本明細書の開示に照らして数多くの他の改変形態が当業者に明らかになる。更に、本明細書の開示はプロセスを実行するのに適した枠組み、アーキテクチャ、及び環境のいくつかの例を記載したが、本明細書の実装形態は図示し解説した具体例に限定されない。更に、本開示は記載し図中に示した様々な実装例を提供する。但し本開示は、本明細書に記載し示した実装形態に限定されず、当業者に知られる又は当業者に知られることになる他の実装形態に及び得る。
【0075】
図6は、本明細書に記載したシステムの機能の少なくとも一部を実装するために使用されてもよいサービス計算装置102の選択されたコンポーネント例を示す。サービス計算装置102は、任意の数のやり方で具体化され得る1若しくは複数のサーバ又は他の種類の計算装置を含んでもよい。例えばサーバの場合、プログラム、他の機能コンポーネント、及びデータは、単一のサーバ、サーバのクラスタ、サーバファーム、又はデータセンタ、クラウドによってホストされる計算サービス等の上に実装されてもよいが、他のコンピュータアーキテクチャを追加で又は代わりに使用してもよい。複数のサービス計算装置102は一緒に又は別々に位置し、例えば仮想サーバ、サーババンク、及び/又はサーバファームとして組織化されてもよい。記載した機能は単一のエンティティ若しくは企業のサーバによって提供されてもよく、又は複数の異なるエンティティ若しくは企業のサーバ及び/又はサービスによって提供されてもよい。
【0076】
図示の例では、サービス計算装置102は、1又は複数のプロセッサ602、1又は複数のコンピュータ可読媒体604、及び1又は複数の通信インタフェース606を含み又はそれらに関連付けられてもよい。各プロセッサ602は単一の処理ユニット又はいくつかの処理ユニットであってもよく、単一の若しくは複数の計算ユニット又は複数の処理コアを含んでもよい。プロセッサ602は、1又は複数の中央処理装置、マイクロプロセッサ、マイクロコンピュータ、マイクロコントローラ、デジタル信号プロセッサ、ステートマシーン、論理回路、及び/又は動作命令に基づいて信号を操作する任意の装置として実装することができる。一例としてプロセッサ602は、本明細書に記載したアルゴリズム及びプロセスを実行するように特にプログラムされ又は構成された任意の適切な種類の1又は複数のハードウェアプロセッサ及び/又は論理回路を含んでもよい。プロセッサ602は、コンピュータ可読媒体604内に記憶されるコンピュータ可読命令を取り出して実行するように構成してもよく、それは、本明細書に記載した機能を実行するようにプロセッサ602をプログラムしてもよい。
【0077】
コンピュータ可読媒体604は、コンピュータ可読命令、データ構造、プログラムモジュール、又は他のデータ等の情報を記憶するための任意の種類の技術に実装された揮発性メモリ及び不揮発性メモリ、及び/又は取外し可能媒体及び取外し不能媒体を含んでもよい。例えばコンピュータ可読媒体604は、これだけに限定されないが、RAM、ROM、EEPROM、フラッシュメモリ又は他のメモリ技術、光学ストレージ、ソリッドステートストレージ、磁気テープ、磁気ディスクストレージ、RAIDストレージシステム、ストレージアレイ、ネットワーク接続ストレージ、ストレージエリアネットワーク、クラウドストレージ、又は所望の情報を記憶するために使用することができ計算装置によってアクセス可能な他の任意の媒体を含んでもよい。サービス計算装置102の構成にもよるが、コンピュータ可読媒体604は、言及するとき非一時的コンピュータ可読媒体がエネルギ、搬送波信号、電磁波、及び/又は信号自体等の媒体を除外する限りにおいて、有形の非一時的媒体であってもよい。いくつかのケースでは、コンピュータ可読媒体604はサービス計算装置102と同じ位置にあってもよい一方、他の例ではコンピュータ可読媒体604はサービス計算装置102と部分的に離れていてもよい。例えばいくつかのケースでは、コンピュータ可読媒体604は
図1に関して上記で論じたネットワークストレージ104内のストレージの一部を含んでもよい。
【0078】
コンピュータ可読媒体604は、プロセッサ602によって実行可能な任意の数の機能コンポーネントを記憶するために使用されてもよい。多くの実装形態においてこれらの機能コンポーネントは、プロセッサ602によって実行可能であり、実行時に本明細書ではサービス計算装置102によるものとする動作を実行するようにプロセッサ602をとりわけプログラムする命令又はプログラムを含む。コンピュータ可読媒体604内に記憶される機能コンポーネントは、他のサービス計算装置102及びクライアント装置からの通信を受信しそれに応答すること、Raftアルゴリズム又は他の適切なアルゴリズムに従って操作を実行すること、パーティションの分割及びマージを行うこと等のために、サービス計算装置102上のパーティションを管理するために個々のサービス計算装置102によって実行されてもよいノード管理プログラム146を含んでもよい。ノード管理プログラム146は、上記で論じたように、パーティションモジュールリーダに上限境界と下限境界との間のランダム時点においてハートビート通信を生成させるように実行されてもよいランダムハートビート通信モジュールを含む。サービス計算装置102の1又は複数の中に記憶される追加の機能コンポーネントは、ユーザウェブアプリケーション116、管理ウェブアプリケーション124、ストレージプログラム130、及びデータベース管理プログラム138を含んでもよく、それらのそれぞれは1又は複数のコンピュータプログラム、アプリケーション、実行コード、又はその一部を含んでもよい。更に、この例ではこれらのプログラムは一緒に示されているが、使用中、これらのプログラムの一部又は全ては別個のサービス計算装置102上で実行されてもよい。
【0079】
加えてコンピュータ可読媒体604は、本明細書に記載の機能及びサービスを実行するために使用されるデータ、データ構造、及び他の情報を記憶してもよい。例えばコンピュータ可読媒体604は、キーバリューのペア等のメタデータを含んでもよいDBパーティション134を含んでいるメタデータデータベース132を記憶してもよい。更に、この例ではこれらのデータ構造は一緒に示されているが、使用中、これらのデータ構造の一部又は全てが別個のサービス計算装置102上に記憶されてもよい。サービス計算装置102は他の機能コンポーネント及びデータも含み又は維持してもよく、かかる機能コンポーネント及びデータは、プログラム、ドライバ等、及び機能コンポーネントによって使用され又は生成されるデータを含んでもよい。更に、サービス計算装置102は他の多くの論理的、プログラム的、及び物理的なコンポーネントを含んでもよく、そのうち上記で記載したものは本明細書の解説に関係する例に過ぎない。
【0080】
1又は複数の通信インタフェース606は、1又は複数のネットワーク106、107等による他の様々な装置との通信を可能にするための1又は複数のソフトウェア及びハードウェアコンポーネントを含んでもよい。例えば通信インタフェース606は、本明細書の他の箇所で更に挙げるようにLAN、インターネット、ケーブルネットワーク、セルラネットワーク、無線ネットワーク(例えばWi-Fi)及び有線ネットワーク(例えばファイバチャネル、光ファイバ、イーサネット)、直接接続、並びにBLUETOOTH(登録商標)等の近距離通信等のうちの1又は複数を介しての通信を可能にしてもよい。
【0081】
本明細書に記載した様々な命令、方法、及び技術は、コンピュータ可読媒体上に記憶され、本明細書のプロセッサによって実行されるコンピュータプログラム及びアプリケーション等のコンピュータ実行可能命令の全般的な脈絡で検討されてもよい。概して、プログラム及びアプリケーションという用語は交換可能に使用されてよく、特定のタスクを実行するための又は特定のデータ型を実装するための命令、ルーチン、モジュール、オブジェクト、コンポーネント、データ構造、実行コード等を含んでもよい。これらのプログラム、アプリケーション等はネイティブコードとして実行されてもよく、又は仮想マシン若しくは他のジャストインタイムコンパイル実行環境等においてダウンロードされ実行されてもよい。典型的には、プログラム及びアプリケーションの機能は様々な実装形態において所望の通りに組み合わされ又は分散されてもよい。これらのプログラム、アプリケーション、及び技術の実装はコンピュータ記憶媒体上に記憶されてもよく、又は何らかの形の通信媒体を介して伝送されてもよい。
【0082】
本主題は、構造上の特徴及び/又は方法論的な行為に固有の言語によって説明されてきたが、添付の特許請求の範囲に定める本主題は記載した特定の特徴又は動作に必ずしも限定されないことを理解すべきである。むしろ特定の特徴及び行為は、特許請求の範囲を実装する形態の例として開示されている。