特許第5695324号(P5695324)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

▶ ネイバー コーポレーションの特許一覧

特許5695324スプリットブレイン状況におけるメジャーグループを決定するための方法、システム、及びコンピュータ読み取り可能な記録媒体
<>
  • 特許5695324-スプリットブレイン状況におけるメジャーグループを決定するための方法、システム、及びコンピュータ読み取り可能な記録媒体 図000007
  • 特許5695324-スプリットブレイン状況におけるメジャーグループを決定するための方法、システム、及びコンピュータ読み取り可能な記録媒体 図000008
  • 特許5695324-スプリットブレイン状況におけるメジャーグループを決定するための方法、システム、及びコンピュータ読み取り可能な記録媒体 図000009
  • 特許5695324-スプリットブレイン状況におけるメジャーグループを決定するための方法、システム、及びコンピュータ読み取り可能な記録媒体 図000010
  • 特許5695324-スプリットブレイン状況におけるメジャーグループを決定するための方法、システム、及びコンピュータ読み取り可能な記録媒体 図000011
  • 特許5695324-スプリットブレイン状況におけるメジャーグループを決定するための方法、システム、及びコンピュータ読み取り可能な記録媒体 図000012
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5695324
(24)【登録日】2015年2月13日
(45)【発行日】2015年4月1日
(54)【発明の名称】スプリットブレイン状況におけるメジャーグループを決定するための方法、システム、及びコンピュータ読み取り可能な記録媒体
(51)【国際特許分類】
   G06F 11/20 20060101AFI20150312BHJP
【FI】
   G06F11/20 310F
【請求項の数】12
【全頁数】16
(21)【出願番号】特願2010-21344(P2010-21344)
(22)【出願日】2010年2月2日
(65)【公開番号】特開2010-186472(P2010-186472A)
(43)【公開日】2010年8月26日
【審査請求日】2013年1月15日
(31)【優先権主張番号】10-2009-0011636
(32)【優先日】2009年2月12日
(33)【優先権主張国】KR
(73)【特許権者】
【識別番号】505205812
【氏名又は名称】ネイバー コーポレーション
【氏名又は名称原語表記】NAVER Corporation
(74)【代理人】
【識別番号】110000408
【氏名又は名称】特許業務法人高橋・林アンドパートナーズ
(72)【発明者】
【氏名】沈 卓 吉
【審査官】 ▲高▼橋 正▲徳▼
(56)【参考文献】
【文献】 特開2001−117895(JP,A)
【文献】 特開2008−192139(JP,A)
【文献】 特開平11−338843(JP,A)
【文献】 特開2005−258946(JP,A)
【文献】 特表2005−515713(JP,A)
【文献】 特開2004−342079(JP,A)
【文献】 特表2001−521222(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/16−11/20
(57)【特許請求の範囲】
【請求項1】
ネットワークベースの分散環境において、複数のノードで構成された初期グループが第1グループと第2グループに分離された場合、前記複数のノードのうち少なくとも一つのノードが、前記第1のグループまたは前記第2グループのうちからメジャーグループを決定するための方法であって、
前記第1グループのノード数と前記第2グループのノード数とを比較し、
前記ノード数の差が所定の基準値を超える場合、前記第1グループ及び前記第2グループのうち、より多くのノードを含むグループを前記メジャーグループと決定し、
前記第1グループのノード数と前記第2グループのノード数との差が、前記所定の基準値以下である場合、前記第1グループのノード及び前記第2グループのノードの履歴情報を取得し、履歴テーブルに保存された前記履歴情報を用いて、前記第1グループまたは前記第2グループをメジャーグループと決定する
ことを特徴とするメジャーグループの決定方法。
【請求項2】
前記履歴情報は、前記第1グループのノード及び前記第2グループのノードが前記初期グループに合流した時点の情報を含むことを特徴とする請求項1に記載のメジャーグループの決定方法。
【請求項3】
前記履歴情報を用いて、前記第1グループまたは前記第2グループをメジャーグループと決定することは、前記第1グループ及び前記第2グループのうち、前記初期グループに合流した時点が最も早いノードが含まれたグループを前記メジャーグループと決定することを特徴とする請求項2に記載のメジャーグループの決定方法。
【請求項4】
前記履歴情報を用いて、前記第1グループまたは前記第2グループをメジャーグループと決定することは、前記第1グループ及び前記第2グループのうち、前記初期グループにおいてマスターノードであったノードが含まれたグループを前記メジャーグループと決定することを特徴とする請求項1に記載のメジャーグループの決定方法。
【請求項5】
前記第1グループ及び前記第2グループは、前記初期グループが少なくとも2回分離されることにより生成され、
前記履歴情報を用いて、前記第1グループまたは前記第2グループをメジャーグループと決定することは、前記第1グループ及び前記第2グループが、最近、共通に属していたグループがメジャーグループであった場合にのみ、前記第1グループまたは前記第2グループをメジャーグループと決定することを特徴とする請求項1に記載のメジャーグループの決定方法。
【請求項6】
特定のデータに対する読みまたは書き作業は、前記メジャーグループに属するノードに対してのみ許容されることを特徴とする請求項1に記載のメジャーグループの決定方法。
【請求項7】
前記特定のデータは、前記分散環境におけるロック情報であることを特徴とする請求項6に記載のメジャーグループの決定方法。
【請求項8】
前記履歴情報は、前記複数のノードのそれぞれに複製された履歴テーブルに含まれた情報であることを特徴とする請求項1に記載のメジャーグループの決定方法。
【請求項9】
前記履歴テーブルは、前記複数のノードのそれぞれが、前記初期グループに合流した時点に関する情報を含むことを特徴とする請求項8に記載のメジャーグループの決定方法。
【請求項10】
請求項1から9のいずれか一項に記載のメジャーグループの決定方法を実行するためのコンピュータプログラムを記録するコンピュータ読み取り可能な記録媒体。
【請求項11】
複数のノードで構成される分散環境管理システムであって、
前記複数のノードの履歴テーブルに保存された履歴情報を含み、
前記複数のノードの少なくとも一つは、初期グループが第1グループと第2グループに分離された場合には、前記第1グループのノード数と前記第2グループのノード数とを比較し、
前記第1グループのノード数と前記第2グループのノード数との差が、所定の基準値を超える場合、前記第1グループ及び前記第2グループのうち、より多くのノードを含むグループを前記メジャーグループと決定し、
前記第1グループのノード数と前記第2グループのノード数との差が、所定の基準値以下である場合、前記履歴情報かを用いて、前記第1グループまたは前記第2グループをメジャーグループと決定することを特徴とする分散環境管理システム。
【請求項12】
前記履歴情報には、前記複数のノードのそれぞれが、前記初期グループに合流した時点に関する情報、及び前記複数のノードのそれぞれが、最近、属していたグループの状態に関する情報が含まれることを特徴とする請求項11に記載の分散環境管理システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ネットワークベースの分散コンピューティング環境(または、分散環境)で発生するスプリットブレイン(Split−Brain)状況におけるメジャーグループを決定するための方法、システム、及びコンピュータ読み取り可能な記録媒体に関する。より詳しくは、スプリットブレイン状況におけるノードの履歴情報を参照してメジャーグループを決定するための方法、システム、及びコンピュータ読み取り可能な記録媒体に関する。
【背景技術】
【0002】
現在のIT環境では、多様なネットワークベースの分散システムを効率よく管理し、統制することができる方法が必要である。分散環境では、複数のコンピュータを物理的かつ論理的に接続し、このように接続された複数のコンピュータの処理能力を用いて、巨大な計算問題を解決することが一般的である。この際、分散環境に参加するコンピュータまたはプロセスが数十個レベルであれば、分散環境を管理する運営者によって分散環境が適切に維持され得るが、分散環境が数千個または数万個のコンピュータまたはプロセスを含む規模である場合は、これを総体的に同期化し、調整することができるソリューションとして管理システムが必要とされているといえる。
【0003】
管理システムにおいて最も重要な条件は、耐故障性(fault tolerance)の保障といえるが、特に、クラスターを構成するそれぞれのノード間のリンクの不安定によって、ネットワークが異常に分離される障害状況での対処が最も重要なものの一つである。
【0004】
図1は、スプリットブレイン状況を例示した図である。図1において、分散環境管理システムは、5つのサーバで構成されるクラスターを含み、クラスターを構成するそれぞれのサーバは、リアルタイムでデータを複製し、同一の状態情報を保持しているものと仮定して示した。
【0005】
図1の状態において、スプリットブレインが発生し、クラスターが2つのサーバグループに分けられる場合、グループ♯1のサーバは、グループ♯2の全てのサーバがダウンした(すなわち、不能状態に陥った)とみなし、同時にグループ♯2のサーバも、グループ♯1のサーバがダウンしたとみなすだろう。したがって、ネットワーク上の前記2つのグループが自身をメジャーグループと判断し、クライアントは、前記自身をメジャーグループと判断した2つのグループにそれぞれ接続して作業を行うようになる。例えば、グループ♯1に接続したクライアントグループ♯1は、平素通り読みまたは書き作業を行い、グループ♯2に接続したクライアントグループ♯2も、読みまたは書き作業を行うようになる。
【0006】
しかしながら、上記のような状況では、以降、スプリットブレインが復旧され、分けられた2つのグループが再び一つに合わせられなければならない場合、どのグループのデータが正しいデータであり、どのグループのデータが削除されなければならないかを判断する方法がなかった。すなわち、従来の技術によると、スプリットブレイン状況において、サービスの連続性やデータの整合性に問題が生じるという短所があった。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】韓国公開特許第2000‐0076513号公報
【特許文献2】韓国公開特許第2004‐0073274号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
本発明は、上述した従来技術の問題点を解決することをその目的とする。
【0009】
また、分散コンピューティングに参加する複数のコンピュータを総体的に同期化し、調整することができるソリューションを提供することを他の目的とする。
【0010】
また、スプリットブレインが発生した状況でも、サービスの連続性とデータの整合性を最大限に保障することをまた他の目的とする。
【課題を解決するための手段】
【0011】
上記目的を達成するために、本発明の一実施形態によると、ネットワークベースの分散環境において、複数のノードで構成された初期グループが分離されて生成された2つ以上のグループのうちから、メジャーグループを決定するための方法であって、第1グループのノード数と第2グループのノード数とを比較し、前記第1グループのノード及び前記第2グループのノードの履歴情報を取得し、前記ノード数の比較結果及び前記履歴情報の少なくともいずれかを用いて、前記第1グループまたは前記第2グループをメジャーグループと決定する方法が提供される。
【0012】
本発明の他の実施形態によると、複数のノードで構成される分散環境管理システムであって、前記複数のノードの履歴情報を含み、前記複数のノードの少なくとも一つは、初期グループが2つ以上のグループに分離される場合、前記分離された各グループのノード数及び前記履歴情報の少なくともいずれかを用いて、前記2つ以上のグループのうち一つをメジャーグループと決定する分散環境管理システムが提供される。
【0013】
その他、本発明を具現するための他の方法、システム、及び、前記方法を実行するためのコンピュータプログラムを記録するためのコンピュータ読み取り可能な記録媒体がさらに提供される。
【発明の効果】
【0014】
本発明によると、分散コンピューティングに参加する複数のコンピュータを総体的に同期化し、調整することができるソリューションが提供される。また、スプリットブレインが発生した状況でも、サービスの連続性とデータの整合性を最大限に保障することができるようになる。
【図面の簡単な説明】
【0015】
図1】スプリットブレイン状況を例示した図である。
図2】本発明の一実施形態による分散環境を概略的に示す図である。
図3】分散環境管理システム200が提供するロック機能を例示した図である。
図4】スプリットブレイン状況にコーラムアルゴリズムを適用した様子を示す図である。
図5】履歴テーブルに基づいた動的コーラム方式を適用してスプリットブレインを解決する過程を例示した図である。
図6】スプリットブレイン発生時、メジャーグループを決定する方法を例示した図である。
【発明を実施するための形態】
【0016】
後述する本発明についての詳細な説明は、本発明が実施可能な特定の実施形態を例示として示す添付図面を参照する。これらの実施形態は、当業者が本発明を十分に実施することができるように詳細に説明される。本発明の様々な実施形態は、互いに異なるが、相互排他的である必要はない。例えば、ここに記載されている特定の形状、構造及び特性は、一実施形態と関連して、本発明の精神を逸脱しない範囲内で他の実施形態に具現されてもよい。また、それぞれの開示された実施形態内の個別構成要素の位置または配置は、本発明の精神を逸脱しない範囲内で変更され得る。従って、後述する詳細な説明は、限定的な意味として解釈されてはならず、本発明の範囲は、適切に説明されれば、その請求項が主張するものと均等な全ての範囲と共に、添付の請求項によってのみ限定される。図面において、類似した参照符号は、いくつかの側面にわたって同一または類似の機能を表す。
以下、本発明の属する技術の分野における通常の知識を有する者が、本発明を容易に実施することができるようにするため、添付した図面に基づき、本発明の好適な実施形態について詳述する。
【0017】
全体システムの構成
図2は、本発明の一実施形態による分散環境を概略的に示す図である。
【0018】
図2に示すように、本発明の一実施形態による全体システムは、通信網100と、分散環境においてロックサービスを提供する分散環境管理システム200と、分散環境管理システム200が提供するサービスを用いる複数のクライアント300と、で構成される。
【0019】
先ず、通信網100は、有線及び無線等のようなその通信の様態によらずに構成され、ローカルエリアネットワーク(LAN:Local Area Network)、都市規模ネットワーク(MAN:Metropolitan Area Network)、広域ネットワーク(WAN:Wide Area Network)等、多様な通信網で構成されてもよい。
【0020】
本発明の一実施形態によると、分散環境管理システム200は、数個のサーバ(以下では、主に「ノード」と表す)で構成されてもよく、多様なシステム資源を共有する複数のクライアント300間において、データの整合性が保障されるようにするため、クライアント300にロックサービスを提供することができる。
【0021】
また、分散環境管理システム200は、クライアント300が分散環境管理システム200内の特定ノードと通信可能に、セッションを生成/維持/解除する機能を行い、クライアント300と通信する特定ノードに障害が発生した場合、クライアント300が待機中である他のノードと通信可能にスイッチングサービスを提供することができる。
【0022】
また、分散環境管理システム200は、複数のノード間の同期化を行い、様々なイベントを処理する機能を行うことができる。
【0023】
本発明の一実施形態によると、分散環境管理システム200は、クラスターマネージャー、イベントマネージャー、及び場合に応じてクライアントライブラリ(図示せず)を含めてもよい。
【0024】
本発明の一実施形態によると、クラスターマネージャーは、分散環境管理システム200のノードの集合であるクラスター内の全ノードを管理する機能を行うことができる。より具体的には、クラスターマネージャーは、クラスター内のノードを管理する機能と、クライアントライブラリと通信しながらロック動作を処理する機能を行うことができる。また、クライアント300において、特定の経路またはデータに対してロック動作を行おうとすると、クラスターマネージャーは、要求したクライアント300が該当ロック動作の権限を持っているか否かを確認し、即時に(いわゆる、ノンブロッキングモード)ロック取得の有無を真(True)または偽(False)の値として返還することができる。また、クラスターマネージャーは、クライアント300のロック動作処理またはロック動作に伴うイベント処理に関する機能を行うことができるが、例えば、ロックの類型に応じて、該当経路またはデータにロックがかかったことを他のクライアント300に知らせるためのイベントを生成し、これを、イベントマネージャーに伝達する機能を行うことができる。
本発明の一実施形態によると、クライアントライブラリとの通信は、マスタークラスターマネージャーを通じてのみ行われ、他の補助クラスターマネージャーは、マスタークラスターマネージャーの状態情報のレプリカをリアルタイムで保持することができる。マスタークラスターマネージャーの障害時は、補助クラスターマネージャーのうち、新たなマスタークラスターマネージャーが選出される。
【0025】
次に、本発明の一実施形態によると、イベントマネージャーは、クラスターマネージャーと同様に、一つのマスターイベントマネージャーと複数の補助イベントマネージャーとで構成され、イベントが通知されるべきクライアント300のリストを管理し、イベントが発生する場合、該当クライアント300にイベントに対する通知を伝達する機能を行うことができる。より具体的には、イベントマネージャーは、大別してロックイベントと汎用イベントのような2つのイベントを行うことができる。前記イベントの処理過程をより詳述すると、先ず、ロックイベントの場合、マスタークラスターマネージャーがロックイベントに関する情報をマスターイベントマネージャーに伝達し、イベントマネージャーは、登録された複数のクライアント300にマルチキャスト方式でイベントを伝送する方式で処理されてもよい。次に、汎用イベントの場合、ロック動作にかかわらず、クライアント300が、一般のパブリッシュ・サブスクライブ方式で、イベントマネージャーにイベントの生成を要求または登録し、イベントマネージャーからイベントを伝達される方式で処理されてもよい。
【0026】
また、本発明の一実施形態によると、クライアントライブラリは、クライアント300が分散環境管理システム200のロックサービス及びイベントサービスを容易に用いることができるように、ライブラリの形態で提供されるプログラムであって、その少なくとも一部が分散環境管理システム200内に含まれるものであってもよい。勿論、必要に応じて、クライアントライブラリの少なくとも一部がクライアント300内に含まれてもよい。
【0027】
本発明の一実施形態によると、クライアント300は、クライアントライブラリが提供する機能を用いて、分散環境管理システム200と通信するようになる。より具体的には、クライアントライブラリは、遠隔で分散環境管理システム200が提供するサービスを用いるように、クライアント300に提供されるライブラリの集合である。本発明の一実施形態によると、使用者は、このライブラリを、自身のプログラム内にプラグインとして組み込んで使うことができ、初期化の場合は、プロキシオブジェクトを生成し、クラスターに接続して、RPC形態でロック作業を行うこともできる。クライアントライブラリは、遠隔のクラスター内で発生するマスターノードの選出、フェイルオーバー、メンバー変更等の多様な状況を抽象化することにより、使用者が、単に安全であり抽象化した遠隔サービスを、ローカルサービスを用いる場合と同様に使用することができるよう、助ける機能を行う。
【0028】
ロックサービスの提供
分散環境では、複数のプロセスまたはスレッドが一つの作業を協働して行うことが多いが、プロセスまたはスレッドに含まれた複数のトランザクションが一つのデータに対して同時に読みまたは書き作業を行う場合、誤った結果をもたらすことがあるので、複数のトランザクションから共通にアクセス可能なデータの保護が必要である。これは、分散環境に含まれたそれぞれのコンピュータが互いにデータを共有する場合も、同様である。したがって、分散環境において、一つのトランザクションによって用いられるデータに、他のトランザクションがアクセスできないようにするロック機能も必要とされ得る。
【0029】
したがって、以下では、本発明の一実施形態によって、分散環境管理システム200がクライアント300に提供するロックサービスについて詳述する。
【0030】
図3は、分散環境管理システム200が提供するロック機能を例示した図である。一方、図3は、一つのサービスが3つのクライアント300において同時に実行される状況を仮定して示している。
【0031】
図3を参照すると、クライアント1(310)、クライアント2(320)、及びクライアント3(330)が、共有データに対する読みまたは書き作業を行おうとする場合、本発明の一実施形態による分散環境管理システム200のマスタークラスターマネージャーに、該当データに対するロックを要求することができることが分かる。図3のクライアント1(310)がロックを要求するとき、クライアント2(320)及びクライアント3(330)が、該当データに対するロックを要求していなければ、クライアント1(310)は、あまり無理なくロックを取得することができる。しかし、図3に示すように、少なくとも2つ以上のクライアントが競争的にロックを要求していれば、そのうち一つのクライアントにのみロックが付与される。
【0032】
それぞれのクライアント310、320、330が競争的にロックを要求する場合に備えるための一つの方法として、それぞれのクライアント310、320、330がロックを取得するまで、分散環境管理システム200に持続的にロックを要求することを想定することができるが、これは、以下のようなプログラムコードを用いて実現されてもよい。
【0033】
特定のクライアント300にロックが付与されると、マスタークラスターマネージャーは、該当クライアント300のロック情報をデータベースまたはメモリ等のような保存装置に記録することができる。
【0034】
また、上述したように、マスタークラスターマネージャーによって更新されたロック情報は、周期的または非周期的に補助クラスターマネージャーに複製されるので、マスタークラスターマネージャーに記録された情報と補助クラスターマネージャーに記録された情報との間の整合性が維持される。
【0035】
本発明の一実施形態によると、分散環境管理システム200から取得されたロックは、該当ロックを要求したプロセスまたはスレッドにのみ使用が許可される。また、本発明の他の実施形態によると、分散環境管理システム200から取得されたロックは、該当ロックを取得したクライアント300内の全てのプロセスまたはスレッドに使用が許可されてもよい。
【0036】
スプリットブレイン状況におけるマスターノードの選出
上述したように、分散コンピューティングの条件として、耐故障性の保障が必須であるといえるが、本発明の一実施形態によると、分散環境に参加するクライアント300のロック情報及びクライアント300に対するイベント通知処理は、分散環境管理システム200に含まれたクラスターマネージャー及びイベントマネージャーによって管理されるので、クラスターマネージャーまたはイベントマネージャーに障害が発生する場合、分散環境に参加した全てのクライアント300の作業が正常に行われなくなるという問題点が生じる。
【0037】
したがって、本発明の分散環境管理システム200は、複数のクラスターマネージャーを含み、そのうちの一つをマスタークラスターマネージャーと設定し、クライアントとの直接的な通信を行わせるのに対して、その他の補助クラスターマネージャーは、マスタークラスターマネージャーのロック情報を複製して保存することにより、マスタークラスターマネージャーに障害が発生しても、補助クラスターマネージャーのうち一つを用いて、サービスの連続性やデータの整合性が保障されるようにすることができる。上記のような構成は、イベントマネージャーにも、同様に適用されてもよい(以下では、マスタークラスターマネージャーとマスターイベントマネージャーを包括する意味として「マスターノード」との用語を用いる)。
【0038】
もっとも、上記のような構成のみでは、スプリットブレインに適切に対処することができない。これは、上述したように、スプリットブレイン状況で分けられたそれぞれのグループは、他のグループのノードが全てダウンしたものと判断するようになるので、それぞれのグループ毎にマスターノードが生成され、したがって、障害が復旧された後、それぞれのグループに属していたノード間のデータの整合性に問題が生じるからである。
【0039】
したがって、以下では、本発明の一実施形態によって、スプリットブレイン状況でマスターノードを選出する方法について、かかる問題の解決を含め、より詳細に説明する。
【0040】
1.コーラムに基づくマスターノード選出
本発明の一実施形態によると、分散環境管理システム200は、スプリットブレインが感知される場合、コーラムアルゴリズムを適用してマスターノードを選出するようになる。以下では、図4を参照して、より具体的に説明する。
【0041】
図4は、スプリットブレイン状況にコーラムアルゴリズムを適用した様子を示す図である。
【0042】
図4を参照すると、全7つのノードで構成されたクラスターにスプリットブレインが発生し、4つのノードを含むグループAと3つのノードを含むグループBに分けられたことが分かる。
【0043】
上記のような状況において、グループAは、全ノード数(すなわち、7つ)の過半数に該当するノードを確保しているので、コーラムを満足し、メジャーグループに分類される。これにより、メジャーグループに含まれたノードのうち一つが、マスターノードに指定され、該当マスターノードを介してクライアント300との通信が行われる。また、マスターノードは、データに対する読みまたは書き作業を許容される。
【0044】
これに対して、グループBは、全ノード数の過半数に該当するノードを確保していないので、マイナーグループに分類される。このようなマイナーグループからはマスターノードが選出されない。
【0045】
スプリットブレイン状況において、それぞれのグループが、自身がメジャーグループであるかマイナーグループであるかを判断するためには、スプリットブレインが発生する前の初期グループに、どれほど複数のノードが存在したかに関する情報が、スプリットブレインが発生した後のそれぞれのグループの少なくとも一つのノードに保存されていなければならないが、本発明の一実施形態によると、マスターノードに保存された情報は、これに対応している補助ノードに複製されるので、初期グループに、どれほど複数のノードが存在したかに関する情報をマスターノードに保存することにより、前記要求が達成され得る。
【0046】
次に、図4のように、スプリットブレインが発生した状況において、再度スプリットブレインが発生して、グループAが、3つのノードを含むグループA1と1つのノードを含むグループA2に分類され、グループBが、2つのノードを含むグループB1と1つのノードを含むグループB2に分離された状況を仮定してみると、いずれのグループも、初期グループに属していたノードの過半数に該当する4つ以上のノードを含んでいないので、コーラムを満足するグループを特定することができないという問題が生じる。
【0047】
このような問題点を解決するために、本発明の一実施形態によると、コーラムは、グループを構成するノード数の変化に応じて動的に再設定されてもよい。より具体的には、動的コーラムを具現するためには、先ず、グループの再設定時間を設定しなければならない。本発明の一実施形態によると、グループの再設定時間は、30秒に設定されてもよいが、この場合、グループ内のノードの数が30秒間変わらないと、この時点を基準としてグループが再設定される。グループが再設定されることにより、コーラムの算定の基準となるグループ内のノード数が初期化され、よって、コーラムも変更されるようになる。
【0048】
上述した例の場合、最初のスプリットブレインが発生する前には、グループに含まれたノードの総数が7であるので、コーラムは4に設定される。その後、第一のスプリットブレインが発生すると、グループAの場合、4つのノードが含まれるので、コーラムが3に再設定され、グループBの場合、3つのノードが含まれるので、コーラムが2に再設定される。これにより、第二のスプリットブレインが発生しても、グループA1及びグループB1がコーラムを満足するようになる。
【0049】
しかし、グループB1の場合、第一のスプリットブレインが発生した時点でマイナーグループに分類されたので、たとえ、第二のスプリットブレインが発生して、過半数のノードを確保したとしても、メジャーグループに分類されず、グループA1のみがメジャーグループに分類される。このため、マスターノードは、スプリットブレインが発生する前のグループにどれほど複数のノードが存在したかに関する情報と共に、スプリットブレインが発生する前に該当グループがメジャーグループであったかマイナーグループであったかに関する情報も一緒に保存してもよい。
【0050】
以下、図4を参照して、スプリットブレインが復旧された場合の処理について説明する。マイナーグループであったグループBに含まれたノードは、メジャーグループであるグループAに含まれたノードから最新の状態情報を取り込んでアップデートを行い、これにより、7つの全てのノードが再度一つのグループとして機能できる。
【0051】
上記の方法で、スプリットブレイン状況でも、データ整合性が保障されるようになる。
【0052】
しかし、上記のようにコーラムアルゴリズムのみを採用すると、いくつかの場合において、サービスの連続性やデータの整合性を保障できないという短所がある。例えば、6つのノードで構成されたグループが、それぞれ3つのノードを含む2つのグループに分離される場合、いずれのグループも、過半数のノードを含まないので、サービスが持続できない。また、持続的なスプリットブレインにより、それぞれ1つのノードを含むグループが生成した場合も、同様にサービスが持続されない。すなわち、静的な方式でコーラムを適用するときは、特に、サービスの連続性の側面において、以下のような制約がある。
‐初期グループの総ノード数:2N+1
‐コーラムの最小数:N+1
‐書き作業が可能な最小限のノード個数=コーラムの個数=N+1(Nは整数)
【0053】
2.履歴に基づくマスターノードの選出
本発明の一実施形態によると、分散環境管理システム200は、履歴テーブルを用いて、データの整合性を保障すると共に、サービスの連続性をさらに高度化することができる。
【0054】
本発明の一実施形態によると、履歴テーブルは、最初にグループが構成される時点でのノードID情報、グループ合流時点情報、ノード状態情報、及びグループ状態情報を含めてもよい。下記表は、履歴テーブルに保存されるデータを例示的に示している。
【0055】
上記のような履歴テーブルは、グループが最初に構成されるときに生成されてもよく、グループの機能が終了するまで維持されてもよい。前記履歴テーブルにおいて、第三のフィールドであるノード状態情報は、新たなマスターノードが選出されるたびにマスターまたはスレーブに変更され、グループ状態情報は、スプリットブレインが発生することにより、メジャーまたはマイナーに変更されてもよい。
【0056】
本発明の一実施形態による分散環境管理システム200は、スプリットブレインにより、一つのグループが同一のノード数を有する2つのグループに分離された場合、前記履歴テーブルを用いてメジャーグループを決定することができる(もちろん、前記履歴テーブルは、必ず同一のノード数を有する2つのグループのうち、メジャーグループを決定する場合のみならず、ノード数の差が所定の基準値以下である2つのグループのうち、メジャーグループを決定する場合も用いられることは、当業者にとって容易に理解される)。より具体的には、スプリットブレインが発生する前にメジャーグループに属しており、グループに合流した時点が最も早いノードが含まれたグループを、新たなメジャーグループと決定することができる。また、本発明の一実施形態によると、グループに合流した時点が最も早いノードを、当該グループのマスターノードと決定してもよい。それでも、コーラムを満足する唯一のグループがない場合は、スプリットブレインが発生する直前のグループ状態がメジャーであり、直近においてマスターに選出されたノード(すなわち、グループに合流した時点が最も早いノード)のあるグループを、新たなメジャーグループと決定してもよい。
【0057】
図5は、履歴テーブルに基づいた動的コーラム方式を適用してスプリットブレインを解決する過程を例示した図である。以下では、図5に示すステップによって履歴テーブルが変更する過程を記述することにより、履歴テーブルに基づいた動的コーラム方式をより具体的に説明する。
【0058】
ステップ1:スプリットブレインが発生する前の、6つのノードで構成されたグループであって、であり、全てのノードがメジャーグループに属している。Node#1のグループ合流時点が最も早いので、マスターノードに選出される。
【0059】
ステップ2:スプリットブレインが発生し、同一の数のノードを有する2つのグループに分離される。障害以前にメジャーグループに属していたノードのうち、グループ合流時点が最も早いノードは、Node#1であるので、左グループがメジャーグループと決定され、右グループは、マイナーグループに変更される。
【0060】
ステップ3〜4:ステップ2を経て、メジャーグループは、Node#1、Node#3、及びNode#5を含むグループに再設定され(これにより、コーラムは2に再設定される)、以降、再度スプリットブレインが発生し、Node#1を含むグループとNode#3及びNode#5を含むグループに分離される。Node#3及びNode#5を含むグループが、コーラムを満足するので、メジャーグループと決定され、Node#1を含むグループは、マイナーグループに変更される。一方、Node#3のグループ合流時点が最も早いので、新たなマスターノードに選出される。
【0061】
ステップ5:2つのノード(Node#3及びNode#5)で構成されたグループに再度スプリットブレインが発生し、2つのグループに分けられる。ステップ2におけると同様に、以前にメジャーグループに含まれていたノードのうち、グループ合流時点が最も早いNode#3が属しているグループが新たなメジャーグループと決定される。
【0062】
このように履歴テーブルを活用することにより、グループが、同一のノードを含む2つのグループに分離される場合、または、持続的な障害により単に1つのノードを含むグループのみが存在する場合も、サービスの連続性を保障することができるようになる。
【0063】
図6は、スプリットブレイン発生時、メジャーグループを決定する方法を例示した図である。スプリットブレインが発生し、2つ以上のグループに分けられた場合、分散環境管理システムは、既存のグループにあった全ノード数、及び分けられたそれぞれのグループに該当するノード数を確認して比較する。また、上述した履歴テーブルを活用して、分けられたそれぞれのグループのノードの履歴情報を確認する。履歴情報の具体例については詳細に上述したので、省略する。図面上では、便宜上、ノード数を確認及び比較するステップが、ノード履歴情報の確認ステップよりも先に行われるように示されているが、前記2つのステップの実行順序は特に限定されない。すなわち、この順序は、図示されているものと反対に行われてもよく、また、2つのステップがそれぞれ同時に行われてもよい。前の2つのステップから出たノード数の比較結果及び確認された履歴情報の少なくとも一つを用いて、2つ以上に分けられたそれぞれのグループのうち、どのグループがメジャーグループであるかを決定することができる。
【0064】
上述した本発明による実施形態は、多様なコンピュータ構成要素を介して実行され得るプログラム命令語の形態で実現され、コンピュータ読み取り可能な記録媒体に記録されてもよい。前記コンピュータ読み取り可能な記録媒体は、プログラム命令語、データファイル、データ構造等を単独または組み合わせて含むことができる。前記コンピュータ読み取り可能な記録媒体に記録されるプログラム命令語は、本発明のために特別に設計され構成されたものであり、または、コンピュータソフトウェア分野の当業者に公知で使用可能なものであってもよい。コンピュータ読み取り可能な記録媒体の例としては、ハードディスク、フロッピー(登録商標)ディスク、及び磁気テープのような磁気媒体、CD−ROM、DVDのような光記録媒体、フロプティカルディスクのような磁気‐光媒体、及びROM、RAM、フラッシュメモリ等のようなプログラム命令語を保存して実行するように特別に構成されたハードウェア装置が挙げられる。プログラム命令語の例としては、コンパイラによって作られるような機械語コードのみならず、インタープリター等を用いてコンピュータによって実行可能な高級言語コードも含まれる。前記ハードウェア装置は、本発明による処理を行うために、一つ以上のソフトウェアモジュールとして作動するように構成されてもよく、その逆も同様である。
【0065】
以上、本発明が、具体的な構成要素等のような特定事項と、限定された実施形態及び図面によって説明されているが、これは、本発明のさらなる全般的な理解のためのものであるだけで、本発明が上記した実施形態に限定されるものではなく、本発明の属する分野における通常の知識を有する者であれば、このような記載から様々な修正及び変形を図ることができる。
【0066】
従って、本発明の思想は、上述された実施形態に局限されて定められてはならず、後述する特許請求の範囲のみならず、この特許請求の範囲と均等にまたは等価的に変形された全てのものは、本発明の思想の範疇に属するものと言える。
【符号の説明】
【0067】
100 通信網
200 分散環境管理システム
300 クライアント
図1
図2
図3
図4
図5
図6