JP2016143162A - データ処理システムおよびサーバ - Google Patents
データ処理システムおよびサーバ Download PDFInfo
- Publication number
- JP2016143162A JP2016143162A JP2015017369A JP2015017369A JP2016143162A JP 2016143162 A JP2016143162 A JP 2016143162A JP 2015017369 A JP2015017369 A JP 2015017369A JP 2015017369 A JP2015017369 A JP 2015017369A JP 2016143162 A JP2016143162 A JP 2016143162A
- Authority
- JP
- Japan
- Prior art keywords
- data processing
- processing unit
- server
- data
- application
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Abstract
【課題】単一ノードで動作するアプリケーションを非改造で(または改造するための工数を削減し)、同一の実行環境を持つ複数のノード上で並列実行させること。【解決手段】端末群とネットワークを介して通信可能なデータ処理システムは、相互通信可能な複数のサーバを有し、複数のサーバの各々は、端末群のうち担当範囲の端末からの要求に応じたデータ処理を実行可能なデータ処理部と、担当範囲と担当範囲の端末にアクセス可能なサーバとを関連付けたマスタ情報を他のデータストアとの相互通信により共有化するデータストアと、各マスタ情報にアクセス可能であり、かつ、各データ処理部を制御してデータ処理を実行可能な分散処理部と、を有し、分散処理部は、自マスタ情報にアクセスし、自マスタ情報で担当範囲に関連付けられているサーバが自サーバであるか否かを解析し、分散処理部がデータ処理部を制御できる資格ありと決定する。【選択図】図1
Description
本発明は、データ処理を実行するデータ処理システムおよびサーバに関する。
アプリケーションを高信頼化する手法として、特許文献1、2の方法に示されるような、同一の実行環境をもつ複数のノードで処理を多重化(冗長化)する方法が提案されている。特許文献1(要約、[0017]、[0018])の耐障害システムは、構成要素の故障は避けられないという観点から、同一の実行環境を持つ複数のノード上で、プログラムを並列実行させることで、プログラムレベルでの耐障害性を持たせるシステムである。特許文献1の耐障害システムは、環境情報(プロセッサや、プロセス、メモリ、ディスク等の使用状態、入出力インタフェースやネットワークの状態、電源供給の有無、各デバイスの温度など)の比較によって異常ノードを検出する。
特許文献2([0008]、[0019])のクラスタ構成データベースは、分散構成データベースで、構成データベースの一貫性コピーがクラスタの各アクティブノードで保持される。クラスタの各ノードは構成データベースのそれ自体のコピーを保持し、構成データベースの動作はいずれのノードからでも行うことができる。構成データベースの更新は、ロックステップの方法で各ノードに自動的に伝達される。いずれかのノードでエラーが発生すると、構成データベースは、クラスタの各ノードの一貫性データを確保するために再構成プロトコルを使う。クラスタ構成データベースは、ノード間の一貫性データを確実なものにするために2つのレベルの一貫性フレームワークを使う。構成データベースの各ローカル・コピーは、独自の一貫性記録を使って一意に構成データベースの各コピーを識別し、スタンプする。構成データベースの各ローカル・コピーの一貫性は、その一貫性記録で検証される。さらに、クラスタ構成データベースは、2相コミットプロトコルを使い、構成データベースの更新コピーがノード間で一貫性のあることを保証する。
特許文献3([0008]、[0010])のPaxosアルゴリズムは、与えられたステップに対してどのコマンドが実行されるべきかを判定するための1つのメカニズムである。Paxosアルゴリズムは、スピリットブレイン等のデータの一貫性の問題を解決し、前述の2相コミットプロトコルよりも処理量が少ないことを特徴とする。
近年、さまざまな分野のミッションクリティカルシステムにおいて、多くの障害事例が報告されており、ミッションクリティカルシステムのさらなる高信頼化が求められている。高信頼システムを実現する方法として、システムを構成する(単一ノードで動作する)アプリケーションのデータおよび処理の冗長化が考えられる。しかしながら、特許文献1、2を適用するには、以下の課題があった。
特許文献1は、処理のインプットが同じであることを前提としているため並列実行の結果が同じになるが、インプットとして複数のノードにあるデータを利用する場合は結果が必ずしも同じになるとは限らない。一般的に、データに関する高信頼化手法として、データを複製して、複数サーバで保持する高信頼化する方式が広く採用されている(分散ファイルシステム、分散キーバリューストア、データグリッド、分散RDB等)。
このような分散型のデータストアでは、各データストアに格納されているデータが同じであること、即ちデータの一貫性(Consistency)を保証することが課題となっている。たとえば、ネットワーク障害によりデータストアが複数グループに分断され、そのグループが別々に動作してしまうこと、いわゆるスピリットブレインの状態が生じると、データの一貫性が保持できない。したがって、特許文献1により、アプリケーションのデータの冗長化を含んだ高信頼化はできない。
特許文献2は、RDBアプリケーション専用の一貫性制御部がデータの一貫性を実現しているため、さまざまなアプリケーションに容易に適用することができない。仮に、あるアプリケーションを冗長化するために、そのアプリケーションを改修した場合、改修作業により信頼性低下リスクが発生する。さらに、スピリットブレイン等のデータの一貫性の問題を解決するには、特許文献3に示したような処理を行う必要があり、開発工数増大にもつながる。
本発明は、単一ノードで動作するアプリケーションを非改造で(または改造するための工数を削減し)、同一の実行環境を持つ複数のノード上で並列実行させることを目的とする。
本願において開示される発明の一側面となるデータ処理システムは、端末群とネットワークを介して通信可能なデータ処理システムであって、前記データ処理システムは、相互通信可能な複数のサーバを有し、前記複数のサーバの各々は、前記端末群のうち担当範囲の端末からの要求に応じたデータ処理を実行可能なデータ処理部と、前記担当範囲と前記担当範囲の端末とアクセス可能なサーバとを関連付けたマスタ情報を保持し、他のデータストアとの相互通信により前記マスタ情報を共有化するデータストアと、前記各サーバの前記データストア内の前記マスタ情報にアクセス可能であり、かつ、前記各データ処理部を制御して、前記データ処理を実行可能な分散処理部と、を有し、前記分散処理部は、自サーバ内の前記データストアに格納されている前記マスタ情報にアクセスし、当該マスタ情報で前記担当範囲に関連付けられているサーバが前記自サーバであるか否かを解析し、解析結果に基づいて前記分散処理部が前記データ処理部を制御できる資格ありと決定することを特徴とする。
本発明の代表的な実施の形態によれば、単一ノードで動作するアプリケーションを非改造で(または改造するための工数を削減し)同一の実行環境を持つ複数のノード上で並列実行させることができる。前述した以外の課題、構成及び効果は、以下の実施例の説明により明らかにされる。
<システム構成>
図1は、本実施例にかかるネットワークシステム100のシステム構成例を示すブロック図である。ネットワークシステム100は、1以上の端末101と、ロードバランサ103およびサーバ群SVsと、がネットワーク102を介して通信可能に接続されたシステムである。端末101は、サーバ群SVsのいずれかのサーバSVi(iは、1以上n以下の整数。nは2以上の整数)にアクセスするコンピュータである。ネットワーク102は、インターネット、LAN(Local Area Network)、WAN(Wide Area Network)などである。有線でも無線でもよい。
図1は、本実施例にかかるネットワークシステム100のシステム構成例を示すブロック図である。ネットワークシステム100は、1以上の端末101と、ロードバランサ103およびサーバ群SVsと、がネットワーク102を介して通信可能に接続されたシステムである。端末101は、サーバ群SVsのいずれかのサーバSVi(iは、1以上n以下の整数。nは2以上の整数)にアクセスするコンピュータである。ネットワーク102は、インターネット、LAN(Local Area Network)、WAN(Wide Area Network)などである。有線でも無線でもよい。
ロードバランサ103は、端末101からのアクセスを分散していずれかのサーバSViに振り分ける。本実施例では、ロードバランサ103が、管理テーブル104を有し、端末101からのアクセスをいずれかのサーバSViに振り分ける例を示す。管理テーブル104は、通常時のアクセス振分け、またはいずれかのサーバSViに障害が発生した場合に、代替サーバに振り分けるためのテーブルである。管理テーブル104については後述する。他に、ロードバランサ103を配置せずに本実施例を実現する方法として、サーバSVi内のアプリケーションハブAHiが管理テーブル104と振分け機能を備える方法や、DNSラウンドロビン(Domain Name System round robin)を利用して、端末101からのアクセス先であるサーバSViを変更して分散する方法がある。
サーバ群SVsは、複数のサーバSV1〜SVnにより構成されるデータ処理システムである。各サーバSViは相互に通信可能である。各サーバSViは各々、アプリケーションハブAHiと、データストアDSiと、アプリケーションAPiと、を有する。サーバSViには他にもプログラムが存在するが、そのようなプログラムを除外する意図はない。
アプリケーションハブAHiは、端末101からのメッセージを含むアクセスをアプリケーションAP1〜APnに分散する分散処理部である。データストアDSiは、アプリケーションAPiからのアクセスによりデータを書き込んだり、読み出したりする。データストアDSiとしては、たとえば、一貫性保証型のキーバリューストア(KVS)が採用される。したがって、データストアDSiは、相互通信により内部に保持するデータを最新状態にし、一貫性を保証する。したがって、どのデータストアDSiも同じデータを保存する。
なお、データストアDSiは、アプリケーションハブAHiやアプリケーションAPiからアクセス可能であれば、サーバSViの外部に存在してもよい。
アプリケーションAPiは、データストアDSiにアクセスして、所定のデータ処理を実行するデータ処理部であり、データ(メッセージ)の入出力を備えるソフトウェアであれば適用可能である。アプリケーションAPiとしては、たとえば、不図示のRDB(リレーショナルデータベース)、メールボックス、オンラインストレージシステム、ユーザ情報の管理サーバ等の制御プログラムが挙げられる。なお、アプリケーションAP1〜APnは、同種のプログラムであれば、バージョンが異なっていてもよいし、互換性を持つ異なるプログラムを複数いれてもよい(例えば、データベースのように共通のアクセスプロトコル(SQL)をもつアプリケーションであって、プログラム自体は別の場合でもよい。)。これらは、アプリケーションのバージョンアップ時の不具合抽出や、アプリケーションを変更する際の過渡期の不具合抽出に利用することができる。
これにより、端末101からのメッセージ(たとえば、SQL文)に含まれるデータは、アプリケーションハブAHiを介して複数のデータストアDSiに書き込まれるため、アプリケーションAP1〜APnを非改造のままデータをn重化することができる。
<管理テーブル104>
図2は、管理テーブル104の記憶内容例を示す説明図である。管理テーブル104は、図1に示したように、ロードバランサ103が有する。管理テーブル104は、担当範囲フィールド201と、宛先フィールド202と、代行フィールド203と、を有し、各フィールド201〜203の値によりエントリを構成する。なお、管理テーブル104の記憶内容は、事前に設定されてもよいし、アプリケーションハブAHiにより動的に変更されてもよい。
図2は、管理テーブル104の記憶内容例を示す説明図である。管理テーブル104は、図1に示したように、ロードバランサ103が有する。管理テーブル104は、担当範囲フィールド201と、宛先フィールド202と、代行フィールド203と、を有し、各フィールド201〜203の値によりエントリを構成する。なお、管理テーブル104の記憶内容は、事前に設定されてもよいし、アプリケーションハブAHiにより動的に変更されてもよい。
担当範囲フィールド201は、担当範囲を格納する領域である。担当範囲とは、端末101からのメッセージを分散させる単位(パーティション)である。ハッシュテーブルによりメッセージが分散される場合、たとえば、送信元アドレスの末尾2文字のハッシュ値が担当範囲となる。このような担当範囲をパーティションと称す。したがって、管理テーブル104は、パーティションの個数(m個。mは1以上の整数。)分のエントリを有する。
宛先フィールド202は、担当範囲であるパーティションPTj(jは1以上、m以下の整数)の宛先となるサーバSVjを格納する領域である。代行フィールド203は、宛先となるサーバSVjが障害により動作しない場合にサーバSVjに代わってメッセージを受け取るサーバである。ここでは、一例として、宛先サーバSVjの代行サーバを(j+1)番目のサーバSV(j+1)とする。なお、図では省略しているが、複数台の障害に備えて、代行フィールド203に複数のサーバとその代行順序を記述することができる。宛先サーバや代行サーバの番号が末尾番号n(サーバSViの総数)に到達した場合はラウンドロビンでj=1に戻るものとする。
<サーバ群SVsの論理的な接続関係>
図3は、サーバ群SVsの論理的な接続関係を示す説明図である。図3に示すように、アプリケーションハブAHiは、データストアDS1〜DSnにアクセス可能であり、また、アプリケーションAP1〜APnにもアクセス可能である。
図3は、サーバ群SVsの論理的な接続関係を示す説明図である。図3に示すように、アプリケーションハブAHiは、データストアDS1〜DSnにアクセス可能であり、また、アプリケーションAP1〜APnにもアクセス可能である。
<サーバSViのハードウェア構成例>
図4は、サーバSViのハードウェア構成例を示すブロック図である。サーバSViは、プロセッサ401と、記憶デバイス402と、入力デバイス403と、出力デバイス404と、通信インターフェース(通信IF405)と、を有する。プロセッサ401、記憶デバイス402、入力デバイス403、出力デバイス404、および通信IF405は、バス406により接続される。プロセッサ401は、サーバSViを制御する。記憶デバイス402は、プロセッサ401の作業エリアとなる。また、記憶デバイス402は、各種プログラムやデータを記憶する非一時的なまたは一時的な記録媒体である。記憶デバイス402としては、たとえば、ROM(Read Only Memory)、RAM(Random Access Memory)、HDD(Hard Disk Drive)、フラッシュメモリがある。また、記憶デバイスの一部には、データストアDSiが含まれる。
図4は、サーバSViのハードウェア構成例を示すブロック図である。サーバSViは、プロセッサ401と、記憶デバイス402と、入力デバイス403と、出力デバイス404と、通信インターフェース(通信IF405)と、を有する。プロセッサ401、記憶デバイス402、入力デバイス403、出力デバイス404、および通信IF405は、バス406により接続される。プロセッサ401は、サーバSViを制御する。記憶デバイス402は、プロセッサ401の作業エリアとなる。また、記憶デバイス402は、各種プログラムやデータを記憶する非一時的なまたは一時的な記録媒体である。記憶デバイス402としては、たとえば、ROM(Read Only Memory)、RAM(Random Access Memory)、HDD(Hard Disk Drive)、フラッシュメモリがある。また、記憶デバイスの一部には、データストアDSiが含まれる。
入力デバイス403は、データを入力する。入力デバイス403としては、たとえば、キーボード、マウス、タッチパネル、テンキー、スキャナがある。出力デバイス404は、データを出力する。出力デバイス404としては、たとえば、ディスプレイ、プリンタがある。通信IF405は、ネットワーク102と接続し、データを送受信する。
図5は、記憶デバイス402の記憶内容例を示す説明図である。記憶デバイス402は、プログラム格納領域501とデータ領域502とを含む。プログラム格納領域501には、OS(Operating System)511と、アプリケーションハブプログラム512と、データストアプログラム513と、アプリケーションプログラム514と、が格納される。
アプリケーションハブプログラム512は、プロセッサ401により実行されることで、アプリケーションハブAHiとして機能する。データストアプログラム513は、プロセッサ401により実行されることで、データストアDSiを制御する。アプリケーションプログラム514は、プロセッサ401により実行されることで、アプリケーションAPiとして機能する。
なお、本明細書の説明で、アプリケーションハブAHi、データストアDSi、およびアプリケーションAPiの各処理については、便宜的にアプリケーションハブAHi、データストアDSi、およびアプリケーションAPiを主語にして説明するが、実際には、上述したように、アプリケーションハブプログラム512、データストアプログラム513、およびアプリケーションプログラム514をプロセッサ401に実行させることで、アプリケーションハブAHi、データストアDSi、およびアプリケーションAPiの各処理が実行されることになる。
データ領域502には、データストアDSiとアプリケーション同期情報SYCとが格納される。データストアDSiには、マスタ情報Mと履歴情報Hが格納される。
マスタ情報Mは、各パーティションPTjについての管理情報である。マスタ情報Mは、そのサーバSViが担当するパーティションPTjについての管理情報を保持する。また、データストアDSiは相互通信により一貫性を保証するため、マスタ情報Mはネットワークシステム100内で共有され、そのサーバSViが担当しないパーティションPTjについての管理情報も保持する。
履歴情報Hは、端末101からのメッセージの集合である。具体的には、メッセージの宛先のサーバSVkに障害が発生した場合に、当該障害が発生してから復旧するまでの間に到達した当該サーバSVkを宛先とするメッセージの集合である。復旧した場合、アプリケーションハブAHiは、復旧したサーバSVkに履歴情報Hi内のメッセージをトランザクションIDの古い順に送信する。これにより、復旧後も早期に一貫性を保証することができる。マスタ情報Mおよび履歴情報Hは、データストアプログラム513により制御される。
アプリケーション同期情報SYCは、アプリケーションハブAHiが担当するパーティションPTjについて、アプリケーションAPi間の同期状態を管理する情報である。アプリケーション同期情報SYCは、アプリケーションハブプログラム512により制御される。
<マスタ情報M>
図6は、マスタ情報Mの記憶内容例を示す説明図である。マスタ情報Mは、担当範囲フィールド601と、格納場所フィールド602と、対象アプリケーションセットフィールド603と、同期情報フィールド604と、を有し、各フィールド601〜604の値によりエントリを構成する。なお、パーティションPTjのエントリをマスタ情報Mjと称す。アプリケーションハブAHiは、マスタ情報Mjにアクセスし、自分の担当するパーティションPTjを決定する。
図6は、マスタ情報Mの記憶内容例を示す説明図である。マスタ情報Mは、担当範囲フィールド601と、格納場所フィールド602と、対象アプリケーションセットフィールド603と、同期情報フィールド604と、を有し、各フィールド601〜604の値によりエントリを構成する。なお、パーティションPTjのエントリをマスタ情報Mjと称す。アプリケーションハブAHiは、マスタ情報Mjにアクセスし、自分の担当するパーティションPTjを決定する。
担当範囲フィールド601は、担当範囲を格納する領域である。格納場所フィールド602は、当該エントリであるマスタ情報Mjの格納場所を規定する領域であり、正常時フィールド621と障害時フィールド622とを有する。正常時フィールド621は、正常時におけるマスタ情報Mjの格納場所(担当)であるサーバSVjの識別情報を格納する領域である。障害時フィールド622は、障害発生時におけるマスタ情報Mjの格納場所であるサーバSVjの識別情報を格納する領域であり、複数台の障害に備えて、複数のサーバSVとその代行順序を記述することができる。
格納場所フィールド602は、マスタ情報Mjの格納場所であると同時にアプリケーションハブAHiの担当するパーティションPTjを決定する。アプリケーションハブAHiは、マスタ情報Mj内に、自分のいるサーバSViに対応するパーティションPTjがあれば、自分の担当分として処理する。逆に、アプリケーションハブAHiが、自分の担当しているパーティションPTjのマスタ情報Mjにアクセスするには、自サーバSVj内のマスタ情報用の格納領域にアクセスすればよい。正常時は、マスタ情報Mjの各項目に変更を加えることができるのはアプリケーションハブAHiだけである。
たとえば、パーティションPTjを担当するサーバSVjが正常時には、サーバSVjに存在するマスタ情報Mjが利用される。一方、パーティションPTjを担当するサーバSVjに障害が発生した時には、サーバSV(j+1)に存在するマスタ情報M(j+1)が利用される。
本実施例では、正常時フィールド621との障害時フィールド622の対応関係は、データストアDS(一貫性保証型KVS)により決定されている。たとえばデータストアDSjが保持するマスタ情報Mjの複製は、データストアDSj+1、DSj+2により保持される。データストアDSjの障害時には、データストアDSj+1が保持する複製であるマスタ情報Mjが利用される。これにより、データストア処理が継続される。このとき、アプリケーションハブAHiは、自分のサーバSVj内にマスタ情報Mjがあるか否かで自分の担当を判断できるため、格納場所フィールド602を保持しないで、データストアDSjの機能だけでも本実施例を実施することが可能である。
対象アプリケーションセットフィールド603は、対象アプリケーションセットを格納する領域である。対象アプリケーションセットとは、パーティションPTjを担当するアプリケーションハブAHiが、パーティションPTjからのメッセージを分散するアプリケーションの組み合わせである。たとえば、パーティションPTjの場合、対象アプリケーションセットは、アプリケーションAP1−j〜APn−jである。アプリケーションAP1−j〜APn−jは、パーティションPTjについてのアプリケーションAP1〜APnのプロセスまたはスレッドである。
同期情報フィールド604は、対象アプリケーションセットの同期情報を規定する領域であり、状態フィールド641と、開始時刻フィールド642と、最終マスタ情報取得要求時刻フィールド643と、トランザクションIDフィールド644と、を有する。正常時において、マスタ情報Mjの同期情報フィールド604を制御するのは、対応するアプリケーションハブAHiである。
状態フィールド641は、対象アプリケーションセットにより実行されるサービスの状態を、アプリケーションハブAHiが格納する領域である。すなわち、状態フィールド641の値は、対象アプリケーションセットの使用状態を示す。開始時刻フィールド642は、サービスの開始時刻を格納する領域である。たとえば、アプリケーションハブAHiがパーティションPTjから最初に受信したメッセージの受信時刻である。最終マスタ情報取得要求時刻フィールド643は、最終マスタ情報取得要求時刻を格納する領域である。最終マスタ情報取得要求時刻は、マスタ情報取得要求を最後に取得した時刻である。
トランザクションIDフィールド644は、対象アプリケーションセットのアプリケーションごとのトランザクションIDを格納する領域である。トランザクションIDは、各メッセージに含まれる連続的な固有のIDである。トランザクションIDは、送信順にインクリメントされる。トランザクションIDは、端末からの要求(メッセージ)の順序を特定する情報である。パーティションPTjにおいて、対象アプリケーションセットであるアプリケーションAP1−j〜APn−jの各トランザクションIDの値TIDjが同一の値であれば、アプリケーションAP1−j〜APn−jは同期していることになる。一方、アプリケーションAP1−j〜APn−jの各トランザクションIDの値TIDjの少なくとも1つでも他のトランザクションIDの値TIDjと異なる場合、同期していないことになる。データストアDSiは、最終マスタ情報取得要求時刻のタイミングで、図7のトランザクションIDフィールド705からトランザクションIDを取得して、トランザクションIDフィールド644に格納する。
<アプリケーション同期情報SYCj>
図7は、アプリケーション同期情報SYCjの記憶内容例を示す説明図である。アプリケーション同期情報SYCjは、アプリケーションハブAHiが保持する、アプリケーションハブAHi内の詳細な同期情報である。アプリケーション同期情報SYCjは、アプリケーションハブAHiが、担当するパーティションPTjの対象アプリケーションセットであるアプリケーションAP1−j〜APn−jにおいて、コネクションの有無とトランザクションIDおよび同期状態とを管理する情報である。
図7は、アプリケーション同期情報SYCjの記憶内容例を示す説明図である。アプリケーション同期情報SYCjは、アプリケーションハブAHiが保持する、アプリケーションハブAHi内の詳細な同期情報である。アプリケーション同期情報SYCjは、アプリケーションハブAHiが、担当するパーティションPTjの対象アプリケーションセットであるアプリケーションAP1−j〜APn−jにおいて、コネクションの有無とトランザクションIDおよび同期状態とを管理する情報である。
アプリケーション同期情報SYCjは、担当範囲フィールド701と、格納場所フィールド702と、対象アプリケーションセットフィールド703と、コネクション情報フィールド704と、トランザクションIDフィールド705と、を有し、各フィールド701〜705の値によりエントリを構成する。
担当範囲フィールド701、格納場所フィールド702(正常時のみ)、対象アプリケーションセットフィールド703、および、トランザクションIDフィールド705については、マスタ情報Mのフィールド601〜603、644と同一であるため、説明を省略する。
コネクション情報フィールド704は、コネクション情報を格納する領域である。コネクション情報は、アプリケーションハブAHiが、対象アプリケーションセットのアプリケーションAPiに対してコネクションを張るときに生成される情報であり、たとえば、アプリケーションハブAHiが、当該アプリケーションAPiと通信するチャネルを一意に特定するチャネル番号である。たとえば、アプリケーションハブAHiは、担当範囲PTjのメッセージをアプリケーションAP1−jに接続する時点で、コネクション情報C1−jであるチャネルIDをコネクション情報フィールド704に格納する。アプリケーションハブAHiは、データ一貫性保証するためのメッセージの送信順序保証を、コネクション情報フィールド704により実現する。
なお、トランザクションIDフィールド705の値は、アプリケーションハブAHiから各アプリケーションAPiにメッセージが送信される都度、当該メッセージに含まれるトランザクションIDに更新される。したがって、正常時は、同期しているため、どのトランザクションIDも同じ値となる。一方、あるサーバSVk(k≠i)に障害が発生した場合には、アプリケーションハブAHiは、当該サーバSVk内のアプリケーションAPk−jと通信できなくなるため、アプリケーションAPk−jのトランザクションIDだけ更新されなくなる。
同期状態706は、対象アプリケーションセットの同期ができているか否かの状態、および同期できていない場合のエラー要因を格納する領域である。アプリケーションハブAHjは、これらのアプリケーション同期情報SYCjを元に、マスタ情報Mjを更新する。負荷状態707は、対象アプリケーションセット毎の直近の平均応答時間、応答待ちの要求数、期間のアクセス頻度を格納する領域である。
<シーケンス例>
図8は、サーバ群SVsの内部のシーケンス例を示す説明図である。ステップS801からステップS804は、アプリケーションハブAHiがマスタ情報Mを定期的に取得解析することにより、担当すべきパーティションPTのマスタに昇格させるか否かを確認するシーケンス例である。ステップS805は、アプリケーションハブAHiが担当すべきパーティションPTのマスタに昇格するシーケンス例である。
図8は、サーバ群SVsの内部のシーケンス例を示す説明図である。ステップS801からステップS804は、アプリケーションハブAHiがマスタ情報Mを定期的に取得解析することにより、担当すべきパーティションPTのマスタに昇格させるか否かを確認するシーケンス例である。ステップS805は、アプリケーションハブAHiが担当すべきパーティションPTのマスタに昇格するシーケンス例である。
ステップS801:データストアDS1〜DSnは、データ一貫性保証のため、各データストアDS1〜DSnを監視する相互通信を行う。ステップS801は、たとえば、定期的に実行される。ステップS801では、マスタ情報M1〜Mnの一部の情報を含めることにより、各データストアDS1〜DSnが同期できているかを厳密に管理することが可能である。
ステップS802:アプリケーションハブAHiは、自サーバSVi内のデータストアDSiにマスタ情報取得要求を送信する。ステップS802も、たとえば、定期的に実行される。マスタ情報取得要求は、データストアDSiからマスタ情報Miを取得するための情報である。
ステップS803:データストアDSiは、ステップS802の応答をアプリケーションハブAHiに返す。
ステップS804:アプリケーションハブAHiは、マスタ情報取得要求の応答(ステップS803)を受信すると、マスタ情報解析処理を実行する。詳細については図9で後述する。
ステップS805:アプリケーションハブAHiは、マスタ情報解析処理(ステップS804)の結果により、昇格処理を実行する。昇格処理(ステップS805)とは、担当範囲のパーティションPTjのマスタになる、すなわち、アプリケーションハブAHiがアプリケーションを実行可能な状態にする処理である。アプリケーションハブAHiは、昇格処理(ステップS805)によりマスタに昇格すると、アプリケーション同期情報SYCjを生成する。
昇格処理(ステップS805)では、アプリケーションハブAHiは、他のアプリケーションハブから更新されないようにマスタ情報Miを昇格中状態に更新し(ステップS850)、対象アプリケーションセットのアプリケーションAPkの同期状態を確認し(ステップS851)、同期状態でなければ同期化要求を、履歴情報を持つデータストアに送信する(ステップS852)。
次にデータストアDSiは、履歴情報をアプリケーションAPiに送信する(ステップS853)。ここで、データストアDSiは、履歴情報を送信する処理において、シェルプログラム等のデータストアDSiと異なるプログラムを利用する。データストアDSiは、履歴情報からデータを取得し、取得したデータをアプリケーションAPiに送信してもよい。
アプリケーションハブAHiは、アプリケーションAPiの同期完了を確認し(ステップS854)、マスタ情報Miを昇格中状態からサービス中に更新する(ステップS855)。なお、上記昇格処理では各ステップに正常応答を示す(ACK)が送信されているが、図では割愛している。また、アプリケーションAPiが新規に起動したサーバSVi内のアプリケーションであれば、履歴情報の送信は行わない。なお、昇格処理(ステップS805)の詳細については、図10で後述する。
図9は、図8に示したマスタ情報解析処理(ステップS804)の詳細な処理手順例を示すフローチャートである。アプリケーションハブAHiは、取得したマスタ情報Mi内の正常時フィールド621に自分のサーバSViの識別情報があるか解析する(ステップS901)。自サーバSViの識別情報が記述されたマスタ情報Miがない場合(ステップS901:No)、アプリケーションハブAHiは、マスタ情報解析処理(ステップS804)を終了する。
一方、マスタ情報Mi内に自分のサーバSViが記述されたマスタ情報Miがある場合(ステップS901:Yes)、アプリケーションハブAHiは、マスタ情報Miの状態641を参照して、昇格すべきサービス状態であるか否かを判定する(ステップS902)。具体的には、サーバSViの識別情報が正常時フィールド621に記述されていて、かつマスタ情報Miの状態フィールド641が代行中である場合(代行中から正常に昇格すべき場合)、サーバSViが正常時フィールド621または障害時フィールド622に記述されていて、サービス停止状態の場合(サービス停止中から復旧すべき場合、または新規に起動したサーバのサービスを開始する場合)である。昇格すべきサービス状態である場合(ステップS902:Yes)、ステップS904に進む。
一方、昇格すべきサービス状態でなかった場合でも(ステップS902:No)、状態フィールド641がサービス中で正常状態であっても更新されていない場合がある。したがって、アプリケーションハブAHiは、最終マスタ情報取得要求時刻から規定時間経過しているかを判定する(ステップS903)。最終マスタ情報取得要求時刻から規定時間経過していた場合(ステップS903:Yes)、障害が発生している可能性が高いため、ステップS904に進む。最終マスタ情報取得要求時刻から規定時間経過していない場合(ステップS903:No)、正常稼働している状態であるのでマスタ情報解析処理(ステップS804)を終了する。
ステップS904では、アプリケーションハブAHiは、昇格処理を実行することを決定して(昇格処理のフローチャートは図10で説明する)、マスタ情報解析処理(ステップS804)を終了する。
図10は、図8に示した昇格処理(ステップS805)の詳細な処理手順例を示すフローチャートである。アプリケーションハブAHiは、他のアプリケーションハブから更新されないようにマスタ情報Miを昇格中状態に更新し(ステップS1001)、対象アプリケーションセットの各アプリケーションAPiの同期状態を確認する(ステップS1002)。同期状態の確認とは、マスタ情報Miの対象アプリケーションセットの各アプリケーションのトランザクションIDの同一性を確認する処理である。
アプリケーションAPiが同期状態であれば(ステップS1003:Yes)、アプリケーションハブAHiは、マスタ昇格するためにマスタ情報Miの状態フィールド641をサービス中に変更し、当範囲のパーティションからのメッセージの受付を開始するマスタ昇格処理を行う(ステップS1004)。
一方、同期状態でなければ(ステップS1003:No)、アプリケーションハブAHiは、同期化要求を、履歴情報を持つデータストアDSiに送信する(ステップS1011)。このとき、同期化要求を受信したデータストアDSiは、履歴情報をアプリケーションAPiに送信する。履歴情報は、障害中に蓄積されたメッセージである。アプリケーションハブAHiは、当該メッセージを、同期状態でないアプリケーションAPiに送信することで、アプリケーション同期情報SYCjにおける復旧したアプリケーションのトランザクションIDフィールド705を更新する。
次に、アプリケーションハブAHiは、アプリケーションAPiへ同期完了確認を送信して、同期状態を判定する(ステップS1012)。具体的には、アプリケーションハブAHiは、対象アプリケーションセットの全アプリケーションが同一のトランザクションIDとなるのを確認する。同期状態であれば(ステップS1012:Yes)、マスタ昇格処理を行う(ステップS1004)。一方、同期状態でない場合、即ち同期化要求に失敗した場合は(ステップS1012:No)、アプリケーションハブAHiは、マスタ昇格処理を中止し(ステップS1013)、マスタ情報Miの状態フィールド641の昇格中を元の状態に戻して、昇格処理を終了する。また、同期状態でない場合(ステップS1012:No)、同期化要求(S1011)をリトライしてもよい。
<障害発生時のシーケンス>
つぎに、障害発生時のシーケンス例について説明する。端末101から送信されるメッセージには、データを更新するメッセージと、データを取得するメッセージがある。アプリケーションが、たとえば、RDBの制御プログラムである場合、データを更新するメッセージには、RDBへの更新対象のデータが含まれる。一方、データを取得するメッセージには、データが含まれない。
つぎに、障害発生時のシーケンス例について説明する。端末101から送信されるメッセージには、データを更新するメッセージと、データを取得するメッセージがある。アプリケーションが、たとえば、RDBの制御プログラムである場合、データを更新するメッセージには、RDBへの更新対象のデータが含まれる。一方、データを取得するメッセージには、データが含まれない。
以下の図11および図12では、正常に動作しているサーバSViのアプリケーションハブの処理を中心に、サーバSVkで障害が発生した場合のシーケンスを説明する。本例では、サーバSViはサーバSVkの代行サーバとする。以降メッセ―ジの種類別にシーケンスを説明する。
図11は、アプリケーションの障害発生時におけるネットワークシステム100でのシーケンス例1を示す説明図である。図11は、データを更新するメッセージが端末101から送信された場合のシーケンス例である。
ステップS1101:端末101は、ロードバランサ103を介して、担当になったアプリケーションハブAHiにメッセージを送信する。
ステップS1102:アプリケーションハブAHiは、メッセージ(ステップS1101)を受信すると、メッセージ判別処理を実行する。メッセージ判別処理(ステップS1102)は、上述したメッセージの種類(更新または取得)を判別する処理である。図12では、更新と判別されたものとする。なお、アプリケーションハブAHiは、受信したメッセージについてメッセージ変換をおこなってもよい。具体的には、たとえば、アプリケーションハブは、メッセージのヘッダに、アプリケーションハブAHiの識別情報を挿入する。これにより、中継したアプリケーションハブをメッセージから特定することができる。
ステップS1103:アプリケーションハブAHiは、対象アプリケーションセットのアプリケーションAP1−j〜APn−jにメッセージを送信する。
ステップS1104:アプリケーションAP1−j〜APn−jはそれぞれ、アプリケーションハブAHiにメッセージの受信完了を示すACKを返す。ただし、アプリケーションAPk−jでは障害が発生しているため、アプリケーションAPk−jは、メッセージを受信できない。
ステップS1105:アプリケーションハブAHiは、同期判定処理を実行する。同期判定処理(ステップS1105)は、タイムアウトになるまでに、アプリケーションAP1−j〜APn−jの中の少なくとも1つからACKの内容を解析し、アプリケーションが正常に処理を完了した状態であるか判定する処理である。また、同期判定処理(ステップS1105)は、どのアプリケーションが同期できなかったか、すなわち、どのアプリケーションで障害が発生したかを判定する。本例の場合、アプリケーションAP1−j〜APn−jのうちアプリケーションAPkのみからACKが返ってこない。そして、アプリケーションハブAHiは、上記処理結果をアプリケーション同期情報SYCjに記憶する。
ステップS1106:アプリケーションハブAHiは、同期判定処理(ステップS1105)で正常状態であると判定された場合に、メッセージが処理されたことを示すACKを端末101に返す。なお、ACKには、どのアプリケーションで障害が発生したかを示す情報を含めてもよい。ACKは、ロードバランサ103を経由するため、ロードバランサ103は、ACKの中身を確認することにより、どのアプリケーションで障害が発生したかをACKから特定することができる。
ステップS1107:アプリケーションハブAHiは、障害の発生したアプリケーションAPkの代行先であるデータストアDSiを判定する。代行先のデータストアDSiは、ロードバランサ103と同じルール(管理テーブル104を参照)で決定されているため、アプリケーションは代行先のデータストアDSiを判定することができる。
ステップS1108:アプリケーションハブAHiは、アプリケーションAPk−jが用いているデータストアDSkの代行先であるデータストアDSiにメッセージを送信する。ここで、送信されるメッセージは、2種類ある。
1つは、アプリケーションハブAHiの送信先である対象アプリケーションセットに含まれており、サーバSVkの障害によりアプリケーションハブAHiと通信できなくなったアプリケーションAPk−j宛の現在進行中のメッセージである。
もう1つは、本来障害が発生していなければ、アプリケーションハブAHkからアプリケーションAPk−jに送信されていた過去のメッセージである。当該メッセージは、代行により、データストアDSiに送信される。
ステップS1109:データストアDSiは、送信されてきたメッセージ(ステップS1108)を履歴情報として格納する。
ステップS1110:データストアDSiは、履歴情報を格納したことを示すACKをアプリケーションハブAHiに返す。
図12は、アプリケーションの障害発生時におけるネットワークシステム100でのシーケンス例2を示す説明図である。図12は、データを取得するメッセージが端末101から送信された場合のシーケンス例である。図11と同一処理については同一ステップ番号を付す。
ステップS1101:端末101は、ロードバランサ103を介して、担当になったアプリケーションハブAHiにメッセージを送信する。
ステップS1102:アプリケーションハブAHiは、メッセージ(ステップS1101)を受信すると、メッセージ判別処理を実行する。メッセージ判別処理(ステップS1102)は、上述したメッセージの種類(更新または取得)を判別する処理である。図12では、取得と判別されたものとする。なお、アプリケーションハブAHiは、受信したメッセージについてメッセージ変換をおこなってもよい。具体的には、たとえば、アプリケーションハブAHiは、メッセージのヘッダに、アプリケーションハブAHiの識別情報を挿入する。これにより、中継したアプリケーションハブAHiをメッセージから特定することができる。
ステップS1203:アプリケーションハブAHiは、転送先を選択する。メッセージの種類が、データを取得するメッセージである場合、アプリケーションハブAHiは、対象アプリケーションセットのすべてのアプリケーションAP1−j〜APn−jにメッセージを送信する必要はない。したがって、アプリケーションハブAHiは、対象アプリケーションセットの中から、アプリケーション同期情報SYCjで同期状態にあり、かつ、障害が発生したアプリケーションAPk−j以外の残余のアプリケーションのいずれかを選択すればよい。また、この場合、アプリケーションAP1−j〜APn−j(APk−j除く)のうち、アプリケーション同期情報SYCjで負荷が最も軽いアプリケーションAPk−jを選択してもよい。
ステップS1205:転送先のアプリケーションAPi−jは、メッセージ(ステップS1304)を受けると、制御対象のRDBにアクセスしてデータを取得し、取得したデータをアプリケーションハブAHiに返す。
ステップS1206:アプリケーションハブAHiは、アプリケーションAPi−jからのデータを端末101に返す。
<メッセージ更新処理の具体例>
つぎに、メッセージ更新処理の具体例について、図13〜図17を用いて説明する。ここでは、サーバSViの台数をn=3台とし、担当範囲となるパーティションPTjの数をm=4とする。
つぎに、メッセージ更新処理の具体例について、図13〜図17を用いて説明する。ここでは、サーバSViの台数をn=3台とし、担当範囲となるパーティションPTjの数をm=4とする。
図13は、サーバ群SVsの論理構成を示す説明図である。図14は、図13に示した論理構成におけるマスタ情報Mの例を示す説明図である。サーバSV1は、パーティションPT1、PT4を担当し、マスタ情報M1、M4を用いる。サーバSV2は、パーティションPT2を担当し、マスタ情報M2を用いる。サーバSV3は、パーティションPT3を担当し、マスタ情報M3を用いるものとする。また、データストアDSiはデータの耐障害性を実現するために、複製したデータを保持するが、ここでは、サーバの2重障害に備え、3台のサーバSV1〜SV3でデータを3多重で保持する。
また、各データストアDS1〜DS3には、便宜的に担当のパーティションPTjに対応するマスタ情報Miしかないが、実際には、一貫性が保持されるため、各データストアDS1〜DS3には、全マスタ情報M1〜M4をまとめたマスタ情報Mが存在する。また、データストアDSiはデータを3多重保持するため、マスタ情報の複製を他の2台のデータストアDSが保持する。図13では、マスタ情報M1、M4の複製をデータストアDS2、DS3が保持する。
アプリケーションハブAH1は、対象アプリケーションセットAPS1,APS4と通信可能である。アプリケーションハブAH2は、対象アプリケーションセットAPS2と通信可能である。アプリケーションハブAH3は、対象アプリケーションセットAPS3と通信可能である。
サーバSV1は、パーティションPT1からのメッセージMSG1−1,2−1,3−1についての更新処理と、パーティションPT4からのメッセージMSG1−4,2−4,3−4についての更新処理と、をおこなう。サーバSV2は、パーティションPT2からのメッセージMSG1−2,2−2,3−2についての更新処理をおこなう。サーバSV3は、パーティションPT2からのメッセージMSG1−3,2−3,3−3についての更新処理をおこなう。なお、メッセージの符号MSGi−jは、アプリケーションAPi−j宛のメッセージである。
各アプリケーションセットAPS1〜APS4内のアプリケーションAP1−1,AP2−1,AP3−1,AP1−2,AP2−2,AP3−2,AP1−3,AP2−3,AP3−3,AP1−4,AP2−4,AP3−4は、いずれも同一機能を実現する同種のアプリケーションである。
図15は、アプリケーション同期情報の例を示す説明図である。アプリケーションハブAH1は、アプリケーション同期情報SYC1、SYC4を保持し、アプリケーションハブAH2は、アプリケーション同期情報SYC2を保持し、アプリケーションハブAH3は、アプリケーション同期情報SYC3を保持する。
図16は、サーバSV1に障害が発生した場合の図13に示した論理構成の変更例を示す説明図である。網掛け箇所がサーバSV1に属する構成である。ここでは、サーバSV1の代行サーバをサーバSV2とする。
サーバSV1は、障害発生によりメッセージの処理が不可能となる。このとき、データストアDS2は、データストアDS2内の複製データであるマスタ情報M1を用いて、データストアDS1の処理を継続する。
サーバSV3では、アプリケーションハブAH3は、アプリケーションAP1−3にアクセスすることができない。したがって、サーバSV3では、アプリケーションハブAH3は、メッセージMSG2−3およびメッセージMSG3−3についてはこれまで通りアプリケーションAP2−3およびAP3−3にアクセスする。一方、メッセージMSG1−3については、アプリケーションハブAH3は、履歴情報H1−3としてデータストアDS2に格納する。
サーバSV2では、アプリケーションハブAH2は、アプリケーションAP1−2にアクセスすることができない。したがって、サーバSV2では、アプリケーションハブAH2は、メッセージMSG2−2およびメッセージMSG3−2についてはこれまで通りアプリケーションAP2−2およびAP3−2にアクセスする。一方、メッセージMSG1−2については、アプリケーションハブAH2は、履歴情報H1−2としてデータストアDS2に格納する。
また、アプリケーションハブAH2は、サーバSV1のデータストアDS1で利用されていたマスタ情報M1、M4がサーバSV2内に移動したことにより、マスタ情報M1、M4にアクセスして昇格処理を行い、アプリケーションハブAH1の代行(パーティションPT1、PT4)の処理を行う。同時にアプリケーションハブAH2は、マスタ情報M2も継続して処理している。アプリケーションハブAH2は、サーバSV1に割り振られていたメッセージMSG2−1,MSG3−1を受信して、サーバSV1のアプリケーションハブAH1がアクセスしていたアプリケーションAP2−1,AP3−1にアクセスする。同様に、アプリケーションハブAH2は、サーバSV1に割り振られていたメッセージMSG2−4,MSG3−4を受信して、サーバSV1のアプリケーションハブAH1がアクセスしていたアプリケーションAP2−4,AP3−4にアクセスする。
また、サーバSV2では、アプリケーションハブAH2は、アプリケーションAP1−1,AP1−4にアクセスできない。したがって、アプリケーションハブAH2は、サーバSV1に割り振られていたメッセージMSG1−1,MSG1−4を受信して、履歴情報H1−1、H1−4としてデータストアDS2に格納する。この状態から復旧すると、論理構成は、図16の状態から図13の状態となる。このとき、データストアDS2内のマスタ情報M1、M4のうち、データストアDS2からデータストアDS1へ差分データがコピーされ、データストアDS1内のマスタ情報M1、M4が元に戻る。次にアプリケーションハブAH1は、データストアDS1内のマスタ情報M1、M4にアクセスし、昇格処理を行う。
図17は、サーバSV1に障害が発生した場合の図15に示したアプリケーション同期情報の変更例を示す説明図である。サーバSV1に障害があり、アプリケーション同期情報SYC1,SYC4は利用不可であるため省略する。なお、網掛け箇所は、サーバSV1のアプリケーションについてのエントリである。
アプリケーション同期情報SYC2は、マスタ情報M1、M4を参照して、パーティションPT1,PT4のエントリを生成する。なお、マスタ情報M1、M4にはコネクション情報がないため、アプリケーションハブAH2は新規に生成してもよい。
障害発生中では、各パーティションにおいて、網掛け箇所とそうでない箇所でトランザクションIDの値が異なる。たとえば、アプリケーション同期情報SYC2のパーティションPT2では、アプリケーションAP1−2のトランザクションIDの値と、アプリケーションAP2−2,AP3−2のトランザクションIDの値とは、異なる。この状態から復旧すると、アプリケーション同期情報は、図17の状態から図15の状態になる。
このように、本実施例によれば、アプリケーションハブAHiは、自サーバSVi内のデータストアDSiに格納されているマスタ情報Mにアクセスし、当該マスタ情報MにおいてアプリケーションハブAHiが担当する担当範囲に関連付けられているサーバが自サーバSViであるか否かを判定する。自サーバSViであると判定された場合、アプリケーションハブAHiは、アプリケーションハブAHiが各サーバSV1〜SVnに分散されたアプリケーションを実行する資格があるマスタに昇格することを決定する。これにより、マスタに昇格したアプリケーションハブAHiは、単一サーバで動作するアプリケーションを非改造で(または改造するための工数を削減して)、同一の実行環境を持つ複数のサーバ上で並列実行させることができる。
また、本実施例によれば、障害が発生したサーバSVkのアプリケーションAPk−jにメッセージを配信する他のサーバSViでは、アプリケーションハブAHiが、当該メッセージを履歴情報としてデータストアDSiに格納する。これにより、サーバSVkが復旧するまでの間のメッセージを蓄積することができる。したがって、アプリケーションを非改造で障害発生時に当該アプリケーション宛のメッセージを復旧まで退避させることができる。
また、サーバSVkの復旧後は、データストアDSiに退避させた履歴情報であるメッセージをアプリケーションAPk−jに配信することにより、アプリケーションAPk−jは、障害発生から復旧までの間に届いたメッセージを到着順で処理することができる。したがって、復旧後は、アプリケーションが制御するデータベースの一貫性を保持することができる。
また、障害発生時におけるメッセージの蓄積や復旧後の処理については、アプリケーションを改修せずに、アプリケーションを多重化(冗長化)することができるため、データ処理システム(サーバ群SVs)の高信頼化を実現することができる。
また、障害が発生したサーバSVkの代行サーバは、サーバSVkの対象アプリケーションセットに属し、かつ、サーバSVk外の他のサーバSViにあるアプリケーションAPi−j宛のメッセージを代行受信し、アプリケーションAPi−jに代行送信する。したがって、アプリケーションAPi−j宛のメッセージについては、サービスを継続することができる。
なお、本発明は前述した実施例に限定されるものではなく、添付した特許請求の範囲の趣旨内における様々な変形例及び同等の構成が含まれる。例えば、前述した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに本発明は限定されない。また、ある実施例の構成の一部を他の実施例の構成に置き換えてもよい。また、ある実施例の構成に他の実施例の構成を加えてもよい。また、各実施例の構成の一部について、他の構成の追加、削除、または置換をしてもよい。
また、前述した各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等により、ハードウェアで実現してもよく、プロセッサがそれぞれの機能を実現するプログラムを解釈し実行することにより、ソフトウェアで実現してもよい。
各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリ、ハードディスク、SSD(Solid State Drive)等の記憶装置、又は、ICカード、SDカード、DVD等の記録媒体に格納することができる。
また、制御線や情報線は説明上必要と考えられるものを示しており、実装上必要な全ての制御線や情報線を示しているとは限らない。実際には、ほとんど全ての構成が相互に接続されていると考えてよい。
100 ネットワークシステム
101 端末
102 ネットワーク
103 ロードバランサ
104 管理テーブル
AHi アプリケーションハブ
APi アプリケーション
DSi データストア
H 履歴情報
M マスタ情報
SYC アプリケーション同期情報
SVi サーバ
SVs サーバ群(データ処理システム)
101 端末
102 ネットワーク
103 ロードバランサ
104 管理テーブル
AHi アプリケーションハブ
APi アプリケーション
DSi データストア
H 履歴情報
M マスタ情報
SYC アプリケーション同期情報
SVi サーバ
SVs サーバ群(データ処理システム)
Claims (9)
- 端末群とネットワークを介して通信可能なデータ処理システムであって、
前記データ処理システムは、相互通信可能な複数のサーバを有し、
前記複数のサーバの各々は、
前記端末群のうち担当範囲の端末からの要求に応じたデータ処理を実行可能なデータ処理部と、
前記担当範囲と前記担当範囲の端末にアクセス可能なサーバとを関連付けたマスタ情報を保持し、他のデータストアとの相互通信により前記マスタ情報を共有化するデータストアと、
前記各サーバの前記データストア内の前記マスタ情報にアクセス可能であり、かつ、前記各データ処理部を制御して、前記データ処理を実行可能な分散処理部と、を有し、
前記分散処理部は、
自サーバ内の前記データストアに格納されている前記マスタ情報にアクセスし、当該マスタ情報で前記担当範囲に関連付けられているサーバが前記自サーバであるか否かを解析し、解析結果に基づいて前記分散処理部が前記データ処理部を制御できる資格ありと決定することを特徴とするデータ処理システム。 - 前記分散処理部は、
前記自サーバ内の前記データストアに格納されている前記マスタ情報にアクセスして、前記データ処理部の使用状態を示す情報を更新し、前記使用状態を示す情報に基づいて前記分散処理部が前記データ処理部を制御できる資格ありと決定することを特徴とする請求項1に記載のデータ処理システム。 - 前記分散処理部は、
前記使用状態を示す情報に基づいて前記分散処理部が前記データ処理部を制御できる資格がないと判定された場合、前記マスタ情報への最新のアクセスからの経過時間に基づいて前記分散処理部が前記データ処理部を制御できる資格ありと決定することを特徴とする請求項2に記載のデータ処理システム。 - 前記分散処理部は、
前記データ処理部を制御できる資格ありと決定された場合、前記データ処理部を制御可能に設定することを特徴とする請求項1に記載のデータ処理システム。 - 端末群とネットワークを介して通信可能なデータ処理システムであって、
前記データ処理システムは、相互通信可能な複数のサーバを有し、
前記複数のサーバの各々は、
前記端末群のうち担当範囲の端末からの要求に応じたデータ処理を実行するデータ処理部と、
前記データ処理部に前記要求を送信し、前記複数のサーバのうち自サーバ以外の他のサーバ内の前記データ処理部に前記要求を配信し、前記要求の順序を特定する情報を保持する分散処理部と、
前記担当範囲について前記要求の順序を特定する情報を前記分散処理部から取得して保持するマスタ情報を格納するデータストアと、を有し、
前記データストアは、
他の担当範囲の端末からの要求の順序を特定する情報を前記他のサーバのデータストアから取得して前記マスタ情報を格納し、
前記分散処理部は、
前記各データ処理部から前記要求に対する応答があった場合に前記要求の順序を特定する情報を更新し、前記複数のデータ処理部のうちいずれかのサーバのデータ処理部から前記要求に対する応答がなかった場合、前記いずれかのサーバのデータ処理部について前記要求の順序を特定する情報を更新せずに、前記要求を履歴情報として前記データストアに格納することを特徴とするデータ処理システム。 - 前記分散処理部は、
前記要求の種別が、データ更新またはデータ取得のいずれであるかを判別し、
前記要求の種別が前記データ更新である場合、前記各データ処理部から前記要求に対する応答があった場合に前記要求の順序を特定する情報を更新し、前記複数のデータ処理部のうち前記いずれかのサーバのデータ処理部から前記要求に対する応答がなかった場合、前記いずれかのサーバのデータ処理部について前記要求の順序を特定する情報を更新せずに、前記要求を履歴情報として前記マスタ情報に格納することを特徴とする請求項5に記載のデータ処理システム。 - 前記分散処理部は、
前記要求の種別が前記データ取得である場合、前記要求の転送先を前記複数のデータ処理部のうち前記いずれかのサーバのデータ処理部以外の他のデータ処理部から選択し、選択した前記他のデータ処理部に前記要求を送信することを特徴とする請求項6に記載のデータ処理システム。 - 前記複数のサーバの各々は、前記複数のサーバのうち代行元のサーバに障害が発生した場合の代行先に指定されており、
前記分散処理部は、
前記いずれかのサーバが前記代行元のサーバである場合、前記代行元のサーバの分散処理部が分散処理する要求のうち、前記代行元のサーバのデータ処理部に配信する要求については、前記履歴情報として前記データストアに格納し、前記代行元のサーバ以外の他のサーバのデータ処理部に配信する要求については、前記代行元のサーバ以外の他のサーバのデータ処理部に配信して当該要求の順序を特定する情報を保持することを特徴とする請求項5に記載のデータ処理システム。 - 端末群とネットワークを介して通信可能なデータ処理システムを構成する相互通信可能な複数のサーバの中のサーバであって、
前記端末群のうち担当範囲の端末からの要求に応じたデータ処理を実行可能なデータ処理部と、
前記担当範囲と前記担当範囲の端末にアクセス可能なサーバとを関連付けたマスタ情報を保持し、他のデータストアとの相互通信により前記マスタ情報を共有化するデータストアと、
前記各サーバの前記データストア内の前記マスタ情報にアクセス可能であり、かつ、前記各データ処理部を制御して、前記データ処理を実行可能な分散処理部と、を有し、
前記分散処理部は、
自サーバ内の前記データストアに格納されている前記マスタ情報にアクセスし、当該マスタ情報で前記担当範囲に関連付けられているサーバが前記自サーバであるか否かを解析し、解析結果に基づいて前記分散処理部が前記データ処理部を制御できる資格ありと決定することを特徴とするサーバ。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015017369A JP2016143162A (ja) | 2015-01-30 | 2015-01-30 | データ処理システムおよびサーバ |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015017369A JP2016143162A (ja) | 2015-01-30 | 2015-01-30 | データ処理システムおよびサーバ |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2016143162A true JP2016143162A (ja) | 2016-08-08 |
Family
ID=56570460
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015017369A Pending JP2016143162A (ja) | 2015-01-30 | 2015-01-30 | データ処理システムおよびサーバ |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2016143162A (ja) |
-
2015
- 2015-01-30 JP JP2015017369A patent/JP2016143162A/ja active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109491776B (zh) | 任务编排方法和系统 | |
CN109683826B (zh) | 用于分布式存储系统的扩容方法和装置 | |
CN107229520B (zh) | 一种数据中心操作系统 | |
US9442813B2 (en) | Replaying jobs at a secondary location of a service | |
US10402115B2 (en) | State machine abstraction for log-based consensus protocols | |
US8301600B1 (en) | Failover recovery in a distributed data store | |
CN111124755B (zh) | 集群节点的故障恢复方法、装置、电子设备及存储介质 | |
US20190129976A1 (en) | Apparatus for controlling synchronization of metadata on network and method for the same | |
US20100023564A1 (en) | Synchronous replication for fault tolerance | |
US7761431B2 (en) | Consolidating session information for a cluster of sessions in a coupled session environment | |
CN101136728A (zh) | 群集系统和用于备份群集系统中的副本的方法 | |
JP5686034B2 (ja) | クラスタシステム、同期制御方法、サーバ装置および同期制御プログラム | |
US20210089379A1 (en) | Computer system | |
CN110647425A (zh) | 一种数据库恢复方法及装置 | |
CN112579550B (zh) | 一种分布式文件系统的元数据信息同步方法及系统 | |
WO2021082925A1 (zh) | 一种交易处理的方法及装置 | |
CN110058963B (zh) | 用于管理存储系统的方法、设备和计算机程序产品 | |
JP6251965B2 (ja) | 情報システムおよびデータベース復旧方法 | |
JP2017532666A (ja) | ハイブリッドオブジェクトストレージデバイスのためのデータの再構成を最適化する方法 | |
CN115587141A (zh) | 一种数据库同步方法和装置 | |
JP2016143162A (ja) | データ処理システムおよびサーバ | |
CN110502460B (zh) | 数据处理的方法和节点 | |
US20190324869A1 (en) | Method, device and computer readable medium for data synchronization | |
JP2016009216A (ja) | 冗長システムおよび冗長化方法 | |
US20230004309A1 (en) | Method, device, and program product for managing computing system based on client/server architecture |