JP5213108B2 - データ複製方法及びデータ複製システム - Google Patents

データ複製方法及びデータ複製システム Download PDF

Info

Publication number
JP5213108B2
JP5213108B2 JP2008069755A JP2008069755A JP5213108B2 JP 5213108 B2 JP5213108 B2 JP 5213108B2 JP 2008069755 A JP2008069755 A JP 2008069755A JP 2008069755 A JP2008069755 A JP 2008069755A JP 5213108 B2 JP5213108 B2 JP 5213108B2
Authority
JP
Japan
Prior art keywords
message
computer
computers
server
reception
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.)
Expired - Fee Related
Application number
JP2008069755A
Other languages
English (en)
Other versions
JP2009223780A (ja
Inventor
恒彦 馬場
知広 花井
真二 浜田
憲治 串
憲宏 原
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2008069755A priority Critical patent/JP5213108B2/ja
Priority to US12/222,281 priority patent/US7865763B2/en
Publication of JP2009223780A publication Critical patent/JP2009223780A/ja
Application granted granted Critical
Publication of JP5213108B2 publication Critical patent/JP5213108B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2041Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant with more than one idle spare processing component
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2023Failover techniques
    • G06F11/2028Failover techniques eliminating a faulty processor or activating a spare
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2097Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements maintaining the standby controller/processing unit updated
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2048Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant where the redundant components share neither address space nor persistent storage

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Hardware Redundancy (AREA)

Description

本発明は、障害許容性を有する計算機システムに関し、特に、計算機間でデータを複製することで、処理内容の整合性を保証する技術に関する。
障害許容性(または冗長性)を求められるアプリケーションシステムでは、複数のサーバによってデータ処理を行う実行系サーバと、実行系サーバに障害が発生した場合にデータ処理を引き継ぐ待機系サーバによるクラスタ構成によって信頼性を確保することができる。データベース(DB)のように、ディスクにデータを蓄積するアプリケーションでは、実行系サーバ及び待機系サーバからアクセス可能な共有ディスクによってデータを引継ぎ、待機系サーバによって処理を継続する。従って、ディスクへデータを同期的に書き込むI/O処理が必要となり、I/O処理性能によってシステム性能が決定される。
近年、広範的に利用されるアプリケーションシステムでは、上記のI/O性能によって決定されるシステム性能以上のシステム性能が必要となる場合が増えている。こうした要求に対して、メモリ上にのみデータを保持し、ディスク装置への同期的なI/O処理を無くすことで、システム性能を向上させるインメモリアプリケーションシステムが登場している。
このようなインメモリアプリケーションシステムでは、そのままではメモリ上に保持したデータを待機系サーバと共有することはできないため、例えば、インメモリDBのように、メモリ上に保持されるデータを障害によって喪失することが許されない障害許容性が必要なアプリケーションでは、実行系サーバから待機系サーバに対して通信することで、実行系サーバのデータの複製を待機系サーバのメモリ上に保持させることでデータを冗長化する必要がある。
さらに、障害許容性を考慮すると、こうしたインメモリアプリケーションシステムでは、実行系/待機系サーバからなる2台構成では1台のサーバ障害が発生した場合に、データは1台のサーバ上に残るのみとなる。残った1台の計算機にサーバ障害が発生すると、データ喪失が生じるため、揮発性記憶媒体であるメモリ上のデータを、ディスクなどの不揮発性記憶媒体にデータを保存する必要が生じる。しかしながら、サーバが1台になった後に前述の保存を実施している最中に障害が発生した場合には、保存していないデータが喪失することになる。従って、高い障害許容性を必要とする場合、2台以上の待機系サーバに対して、データ複製を同時に行う必要があり、このような場合、マルチキャストによる通信を利用して、複数台の待機系サーバへの通信が行われる。
ここで、複数台の待機系サーバに対してデータ複製を行う通信方法として、2フェーズコミット法と呼ばれる方法が知られる。2フェーズコミット法では、実行系サーバから待機系サーバへのデータの複製に際して、複製するデータを送信するための通信を行う準備フェーズと、実行系サーバが、全待機系サーバでデータが受信されたことを確認した場合に前記送信したデータを確定するための通信を行うコミットフェーズとからなる。コミットフェーズが成功した場合に送信元である実行系と待機系でデータが確定した状態での整合性が保証され、実行系サーバで行われた業務処理が終了となる。
このため、この2フェーズコミット法では、実行系が持つデータを全待機系と同期し、実行系サーバで業務処理を完了するためには2度のマルチキャスト通信が必要であり、待機系台数が多ければ多いほど、全待機系サーバから各フェーズの応答を受信するまでの時間が増大するため、オーバヘッドが大きくなるという問題がある。
このような問題に対して、特許文献1では、実行系サーバでのデータ更新を、定期的に待機系サーバにマルチキャスト通信(ハートビート通信)により通知し、待機系サーバが受信時にデータ更新のために実行系サーバにデータを要求することでデータ複製を行う1フェーズコミット法による同期方法Aを用いることで、通信回数を削減し、データの冗長化を実現する技術が開示されている。加えて、特許文献1では、ハートビート通信で更新されたデータの準備フェーズと、準備フェーズが終わったデータのコミットを一括して送信することによって、前記2フェーズコミット法のマルチキャスト通信をハートビートで置換した同期方法Bも記載され、データ更新回数よりも通信回数を削減して、データの冗長化を実現する技術が開示されている。また加えて、上記同期方法A、Bで実行系サーバとの同期が失敗した待機系サーバが存在する場合でも、実行系サーバは処理を確定することを可能とし、前記同期に失敗した待機系サーバが実行系サーバに同期できなかったデータの再送を要求することで再同期する技術も合わせて開示されている。
米国特許出願公開第2003/0018732号明細書
上記特許文献1に記載される技術は、インメモリアプリケーションシステムに適用する場合に以下のような問題がある。まず、前記同期に失敗した待機系サーバからの要求に応じて、データの再送を行うためには、実行系サーバで行ったデータ更新内容を記憶しておき、任意の時点のデータを再生成する必要がある点である。これは、更新内容の記憶のためにメモリを消費することになり、システムで保持できるデータ量を制約することになる。加えて、実行系サーバに障害が発生した場合、メモリ上に保持しているデータが失われるため、待機系サーバでも同様に更新内容の記憶が必要であり、メモリ消費が生じる。
次に、ハートビートによってデータの複製を行うため、実行系サーバで行ったデータ更新内容が待機系サーバに複製されるまでに遅延が生じる。すなわち、実行系サーバで業務処理が確定するまでに遅延が生じることになる。従って、高速な処理を実現するために利用されるインメモリアプリケーションシステムでオーバヘッドを生じるという問題がある。このように、上記特許文献1で開示されるデータ複製技術による通信回数の削減効果は、インメモリアプリケーションシステムでは好適でないという問題がある。
本発明は、以上に示す課題を解決することを鑑みたものであり、クラスタ構成を有するインメモリアプリケーションシステムで、実行系サーバの処理結果を通信によって待機系サーバへ複製を行う場合において、必要とされる通信回数を削減しつつ、信頼の高いデータ複製方法を提供することを目的とする。
本発明は、プロセッサとメモリを備えてアプリケーションを実行する第1の計算機と、プロセッサとメモリを備えて行系の前記第1の計算機を引き継ぎ可能な第2の計算機と、を備え、前記第1の計算機が第1の処理要求を含む第1の電文を受信し、複数の第2の計算機で前記第1の電文を複製するデータ複製方法であって、第3の計算機が前記第1の電文を、前記第1の計算機と前記複数の第2の計算機に送信し、前記第2の計算機が、前記第1の電文の受信完了通知を前記第1の計算機に送信し、前記第1の計算機が、全ての第2の計算機からの前記受信完了通知を待ち合わせて、前記第1の計算機が、前記複数の第2の計算機からの受信完了通知を受信し、前記第1の計算機が、複数の第2の計算機からの受信完了通知を受信した後に、前記第3の計算機に前記第1の電文の受信完了通知を送信し、前記第1の計算機が、複数の第2の計算機からの受信完了通知を受信した後に、前記第1の処理要求を第1の計算機で実行可能なように有効に設定し、前記第1の計算機が、複数の第2の計算機からの受信完了通知を受信した後に、前記第2の計算機に前記第1の電文が有効であることを通知する。
また、前記第1の計算機または第2の計算機が、メモリ上でのみ前記アプリケーションの処理を実行する。
したがって、本発明は、待機系となる全ての第2の計算機に、第3の計算機が電文をマルチキャストで送信し、第2の計算機(待機系サーバ)が第1の計算機(実行系サーバ)に受信完了を通知することで、第1の計算機の電文の受信処理を完了し、第1の計算機と第2の計算機で電文の複製が完了する。これにより、通信量を削減しつつ、信頼性の高いデータ複製を実現することができる。
以下、本発明の実施の形態を添付図面に基づいて説明する。
<第1の実施の形態>
本発明に関する図と説明は、本発明を鮮明に理解するのに適当な要素を示すために簡略化されており、発明を実施するのに支障ない範囲で既知の要素等は省略していることを理解されたい。本技術中で従来技術の中には、本発明を実装するために他の要素が望ましく、かつ/または、必要とされると思われるものが幾つかある。しかし、技術中のこれらの要素は既知であり、本発明の理解を容易にするものではないので、ここでは説明しない。
また、以下の説明では、各プログラムは実行系(または現用系)のモジュール番号で説明している場合もあるが、それらの説明は、待機系の対応したプログラムの説明も兼ねる場合もある。さらに、以降の図に示す符号において、他の図中の数字と同様の番号を用いているものがあるが、それらについては特に説明がない場合、他の図の説明と同様である。
図1〜図6及び図19は本発明における第1の実施形態について表している。
図1は、第1の実施形態のクラスタ構成を有するインメモリアプリケーションシステムのハードウェア構成を表すブロック図である。
第1の実施形態の実行系サーバ10は、通信インターフェース11と、CPU(プロセッサ)12と、メモリ13と、I/Oインターフェース14と、前記I/Oインターフェース14を経由して接続可能なローカル接続されたストレージ装置15を備える。
CPU12は、メモリ13に格納されたプログラムを実行することによって、各種処理を実行する。メモリ14及びストレージ装置15は、CPU12によって実行されるプログラムおよび処理に必要なデータを格納することができる。通信インターフェース11は、ネットワーク70を介して、他の計算機(例えば、クライアントや、待機系サーバ)と通信する。なお、CPU12は複数のコアを備え、複数の処理を並列的に実行可能であってもよい。
待機系サーバ1及び待機系サーバ2も上記実行系サーバと同様に構成される。
図2は、図1に示した物理計算機におけるインメモリアプリケーションシステムのソフトウェアを主体とした機能ブロック図である。これらのソフトウェアは、メモリ13に読み込まれてCPU12により実行され、使用するデータを予めメモリ13に読み込んでおくインメモリアプリケーションシステムを構成する。
インメモリアプリケーションシステムに処理要求を送信するクライアントサーバ80では、インメモリアプリケーションシステムに対して処理要求を行う入力電文を送信する電文制御部810を有する。また、前記電文制御部810は、前記入力電文がインメモリアプリケーションシステムに受信完了されたかの応答を受信する機能や、前記入力電文の処理結果を受信する機能を有する。さらに、前記電文制御部810は、マルチキャスト通信を用いて複数の計算機、例えば、実行系サーバ10と全待機系サーバ20、30に電文を同報する機能も有する。
実行系サーバ10では、前記クライアントサーバ80の電文制御部810によって送信された入力電文を受信する機能と、待機系からの入力電文受信完了通知を受信する機能を有する電文制御部110を備える。さらに、前記電文制御部110は、受信した前記入力電文を格納する受信電文格納バッファ111を有する。さらに、前記電文制御部110は、クライアントサーバ80や待機系サーバ20、30に対して電文を送信する機能を有し、送信される前記電文を格納する送信電文格納バッファ112を有する。また加えて、前記電文制御部110は、前記電文制御部810と同様にマルチキャスト通信を用いて電文を同報する機能を有する。さらに、電文制御部110は、後述のクラスタ制御部120と連携することで、クラスタ構成をとる任意の実行系サーバと待機系サーバを識別する機能も有する。これにより、前記電文制御部110は全待機系サーバ20、30への電文送信をする場合には、マルチキャスト通信で行う機能も有する。さらに、前記電文制御部110は、受信電文格納バッファ111に格納された入力電文に対して待機系サーバ20、30の同期状態を認識する同期状態制御部119を含む。さらに、前記同期状態制御部119は、前記同期状態の認識結果を契機に、前記電文制御部110を介して、前記同期状態を格納バッファ111、112に合わせて格納する機能を有する。なお、電文制御部110は、受信した電文に含まれる処理要求を実行するソフトウェアモジュールを備えていても良い。
また、実行系サーバ10は、どの物理計算機が実行系サーバや待機系サーバであるかを管理するクラスタ制御部120を有する。ここで、他の計算機が実行系サーバであるか待機系サーバであるかを管理するために、前記クラスタ制御部120は、クラスタ構成をなす他の計算機と相互通信を行う機能を有することもある。また加えて、前記クラスタ制御部120は、他サーバの障害を検出する機能を有する。
一方、待機系サーバ20、30では、実行系サーバ10と同様の構成のソフトウェアが実行される。なお、待機系サーバ30は、待機系サーバ20と同一のソフトウェア構成であるので、以下待機系サーバ20について説明する。待機系サーバ20では、前記クライアントサーバ80からマルチキャスト送信された電文を受信する電文制御部210を有する。さらに、クライアントサーバ80や他のサーバから受信した前記入力電文を格納する受信電文格納バッファ211を有する。さらに、前記電文制御部210は、前記入力電文の受信後に、実行系サーバ10に対して前記入力電文の受信完了を送信する機能を有する。さらに、前記電文制御部210は、クライアントサーバ80や他の待機系サーバ30に対して電文を送信する機能を有し、送信される前記電文を格納する送信電文格納バッファ212を有する。また、待機系サーバ20の前記電文制御部210は、実行系サーバ10と同様に、同期状態制御部219を含む。ここで、クラスタを構成する他の計算機に対して通信を行う場合には、マルチキャスト通信で行う機能も前記電文制御部210は有する。また、待機系サーバ20は、どの物理計算機が実行系サーバ10と待機系サーバ20、30かを管理するクラスタ制御部220を有する。ここで、他の計算機が実行系サーバであるか待機系サーバ20、30であるかを管理するために、前記クラスタ制御部220は、クラスタ構成をなす他の計算機と相互通信を行う機能を有することもある。また加えて、前記クラスタ制御部220は、他サーバの障害を検出する機能を有する。さらに待機系サーバ20、30の前記クラスタ制御部220は、実行系サーバ10に障害が発生した場合には、稼動中の待機系サーバ20、30のうち、1台の待機系サーバ20、30を実行系サーバとして動作するように系切り替えを行う機能を有する。
図3は、第1の実施形態におけるインメモリアプリケーションシステムのソフトウェアが、外部(クライアントサーバ80)から送信された入力電文を複製する処理を表すシーケンス図である。なお、以降の実施形態でも同様のシーケンス図を用いて説明をするが、これらのシーケンス図は入力電文Aの複製処理の理解を容易にすることを目的とし、電文Aの複製処理以外の処理は簡略化されていることを理解されたい。
図3において、クライアントサーバ80の電文制御部810が入力電文Aを実行系サーバ10と待機系サーバ20、30に送信する(S1)。実行系サーバ10と待機系サーバ20、30では、電文Aを受信電文格納バッファ111、211に格納する。電文Aの格納は、同期状態制御部119、219を介して実行され、待機系サーバ20、30では、自系の電文Aの同期状態を同期済として格納する(S2)。
続いて、待機系サーバ20、30は、電文格納後、同期済応答を実行系サーバへと送信する(S3)。実行系サーバでは、各待機系サーバ20、30からの同期済応答を受信すると、同期状態制御部119を介して、送信元の待機系サーバ20、30の同期状態を同期済へと変更する処理(S4)を繰り返す。
これにより、全待機系サーバ20、30が同期済となるまで待ち合わせる(S5)。全待機系サーバ20、30が同期済となると、電文Aの受信完了をクライアントサーバ80へ通知する(S6)。その後、実行系サーバ10は、全待機系サーバ20、30に対して電文Aが実行系サーバ10で実行可能であることを通知する確定済通知を全待機系サーバ20、30に通知する(S7)。
待機系サーバ20、30は、この確定済通知を受け、すでに格納していた電文Aに対して全ての待機系サーバ20、30の同期状態を同期済へと変更することで、電文Aの確定を行う(S8)。その後、待機系サーバ20、30は、電文Aの確定済応答を実行系サーバへと応答する(S9)。実行系サーバ10は、同期済応答と同様に、各待機系サーバ20、30からの確定済応答を受信すると、待機系サーバ20、30の同期状態を確定済に変更して(S10)、全待機系サーバ20、30からの確定済応答を待ち合わせ(S11)、全応答を受信することで、入力電文Aの複製が完了する。
図4は、図3に示した入力電文の複製処理の例を示すフローチャートである。なお、以下の説明では、待機系サーバ20、30の動作を1台の計算機で示しているが、他の待機系サーバの処理も同様である。
まず、インメモリアプリケーションシステムに対して入力電文の送信元、例えば、クライアントサーバ80の電文制御部810が入力電文として、電文Aをマルチキャスト送信で、実行系サーバ10と全待機系サーバ20、30に送信する(S801、T101)。図5aは、前記電文Aの一例を示すものであり、例えば、電文を一意に示す電文ID301と、インメモリアプリケーションシステムに要求する処理をあらわす電文内容302とを有する。ここで、電文は、上記情報の他、送信元を表す識別情報を含んでもよいし、さらには、送信元から電文の再送を行う仕組みを持つ場合には、その再送回数を表す情報を含んでも良い。
実行系サーバ10と待機系サーバ20、30はそれぞれ前記電文Aを受信し(S101、S201)、前記電文Aを受信電文格納バッファ111、211に格納する(S102、S202)。
図6は、前記受信電文格納バッファ111の一例を示すものであり、例えば、前記電文Aに含まれる情報(前記電文ID301と前記電文内容302)に加えて、待機系サーバ20、30における電文Aの状態を示す同期状態341を有する。前記同期状態341は、待機系サーバ20、30毎に、前記電文Aを待機系が受信する前の未同期状態、受信した後の同期状態、さらには、全待機系サーバ20、30が受信したことを待機系サーバ20、30が認識したかどうかを表す確定済状態に関する情報を含む。例えば、前記処理S102において実行系サーバが電文Aを格納した場合には、全待機系サーバ20、30が前記電文Aを受信したかどうかを未確認であるため、全ての待機系サーバの同期状態341は未同期状態となる。
一方、前記処理S202において待機系サーバ20、30が電文Aを受信電文格納バッファ211に格納した場合には、自待機系サーバ20、30の同期状態341は同期済となるが、その他の待機系サーバの同期状態は未同期状態となる。
次に、実行系サーバ10は処理S102の後、電文Aの受信完了を送信元(クライアントサーバ80)に通知するための受信完了応答を生成し、前記送信電文格納バッファ112に格納する(S103)。
待機系サーバ20、30は、処理S202の後、電文Aの受信完了を実行系サーバ10に通知するための同期済応答を生成し、前記送信電文格納バッファ212に格納する(S203)。
図5bは、前記同期済応答の一例であり、受信した電文ID(同期済電文ID)312と、送信元である待機系サーバ20、30を一意に示す送信元識別子311を有する。また、図5cは、前記受信完了応答の一例であり、例えば、受信した電文IDを含む。ここで、前記受信完了応答は、クライアントサーバ80は実行系サーバがどの計算機なのかを認識するために、図5bと同様に送信元となる実行系サーバを一意に識別するための情報を含んでもよい。
処理S203の後、待機系サーバ20、30は、格納した前記同期済応答を実行系サーバ10に通知する(S204、T102)。一方、実行系サーバ10は、処理S103の後、全待機系サーバ20、30から前記同期済応答が来るのを待つ(S104)。例えば、処理S104は、前記同期済応答を受信した場合に、図6に示した前記受信電文格納バッファ111に保持される電文のうち、前記応答に含まれる前記同期済電文ID301の電文について、前記送信元識別子に対応する待機系サーバ20、30の同期状態341を同期済と変更し、全待機系の同期状態341が同期済となっているかを確認することで実行されてもよい。
全待機系サーバからの同期済応答を受信すると、実行系サーバ10では、電文Aについて全待機系サーバ20、30で同期済が確定できる。すなわち、待機系サーバ20、30において電文Aが複製されことが確定できる(S105)。処理S105が行われた後、例えば、前記同期済が確定した電文Aは、実行系サーバ10で電文内容に応じて実際に実行されてもよいし、また、さらに電文内容の一部ないし全てを別の計算機に送信してもよい。処理S105に続いて、前記処理S103で格納した電文Aの電文受信完了応答を送信元に対して送信する(S106、T103)。送信元(クライアントサーバ80)では前記受信完了応答T103を受信し(S802)、電文Aの送信処理を完了する。
実行系サーバ10では、引き続き、待機系に対して前記電文Aが全待機系で同期したことを通知する電文確定通知を生成し、前記送信電文格納バッファ112に格納した後に、全待機系サーバ20、30に対してマルチキャスト送信し(S107、T104)、全待機系サーバ20、30から前記電文確定通知T104に対する応答である電文確定済応答を待つ(S108)。ここで、前記電文確定通知T104は、例えば、前記電文T102と同様に、実行系サーバ10で確定した確定済電文IDを含む(例えば、図5d参照)。
待機系サーバ20、30は、前記処理S204の後、前記電文確定通知T104を受信すると(S205)、電文Aを確定する(S206)。例えば、処理S206は、前記電文確定通知T104を受信した場合に、前記受信電文格納バッファ211に保持される電文のうち、前記電文確定通知T104に含まれる前記同期済電文IDの全待機系サーバ20、30の同期状態341を同期済と変更することで実行される。これにより、待機系サーバ20、30は確定した前記電文Aが自系を含む全待機系サーバ20、30に複製されたことを確定できる。さらに、前述のように、実行系サーバ10が前記電文Aを確定後に実行する処理が開始されることを認識することもできる。
従って、待機系サーバ20、30は確定された電文Aを認識することで、実行系サーバ10の障害による系切り替えが生じた場合に、系切り替え先となる待機系サーバ20、30は、前記電文Aが実行系サーバ10で処理中であり、回復対象とする電文であることを認識することが可能である。
待機系サーバ20、30は、処理S206に引き続き、自系で電文確定済応答を生成し、前記送信電文格納バッファ212に格納した後(S207)、前記電文確定済応答を実行系サーバ10へ通知し(S208、T105)、待機系サーバ20、30での電文受信処理は完了する。ここで、前記電文T105は、例えば、前記電文T102やT103と同様に、待機系サーバ20、30で確定した電文IDを含み、さらには送信元を一意に示す情報を含んでも良い。
一方、実行系サーバ10は、処理S107の後、全待機系サーバ20、30から前記確定済応答T105が来るのを待つ(S108)。例えば、処理S108は、前記確定済応答T105を受信した場合に、前記受信電文格納バッファ111に保持される電文のうち、前記応答に含まれる前記確定済電文IDの電文について、前記送信元識別子に対応する待機系サーバ20、30の同期状態を確定済と変更し、全待機系サーバ20、30の同期状態が確定済となっているかを確認することで実行されてもよい。前記処理S108で全待機系サーバ20、30からの確定済応答を受信することで、待機系サーバ20、30での入力電文の確定済みを確認することができ(S109)、実行系サーバ10での電文受信処理は完了する。
以上により、実行系サーバ10の障害時に待機系サーバ20、30では複製された電文Aによって業務が引き継がれることが保証される。ここで、上記では、実行系サーバ10及び全待機系サーバ20、30に対する送信をクライアントサーバ80がマルチキャスト通信する例を示したが、このマルチキャスト通信は、クライアントサーバ80はユニキャスト通信した電文を、クライアントサーバ80と実行系/待機系サーバ20、30間のネットワーク上にあるルータ(図示省略)がマルチキャストすることで実現されてもよい。加えて、マルチキャスト通信は、複数のマルチキャスト通信を組み合わせることで実現してもよいし、さらには一部ないしは全体のマルチキャスト通信をユニキャスト通信に置換してもよい。このようにすることで、待機系が1台となった場合や、異なるネットワークに待機系が分散しているような場合であっても、入力電文の複製を行うことができる。
また、前記処理S103を実行するタイミングは、前記処理S102の後で前記電文T103を送信する処理S106の前であれば、異なるタイミングであってもよい。
さらに、第1の実施形態を実現するための別のシステム構成として、例えば、図7に示すように、クライアントサーバ80とインメモリアプリケーションシステムとの間に中継サーバ50が存在するようなシステム構成であっても良い。
図7は、前記図4において、クライアントサーバ80の動作として説明した動作を中継サーバ50が実施するシステム構成を示したブロック図である。図7では、例えば、クライアントサーバ80は、前記中継サーバ50に対してのみ入力電文を送信し、前記中継サーバ50では、前記入力電文を電文制御部510が受信電文格納バッファ511に格納し、さらに、送信電文格納バッファ512に前記入力電文を格納して、実行系サーバ10と全待機系サーバ20、30にマルチキャスト通信することで実現してもよい。
また、前記処理S802を実行した後に、クライアントサーバ80に対して処理S802で受信した受信完了応答を転送することでクライアントサーバ80への受信完了応答を通知することができる。
加えて、本実施形態では電文確定通知T104を電文毎に実行する場合について示したが、通信回数をさらに削減するために、一定量の電文毎に実行したり、一定間隔で通知したりすることで、複数の電文確定通知を一括して送信する方法を用いてもよい。
以上、図1〜図7に示した一連の処理を行うことで、クライアントサーバ80からインメモリアプリケーションシステムへの入力電文のデータ複製を、マルチキャスト通信と全待機系サーバ20、30からの受信完了応答を組み合わせることで、実現することができる。これにより、入力電文を受けた実行系サーバ10が全待機系サーバ20、30にマルチキャスト通信で転送する場合に比べて、少ない通信回数で、待機系サーバ20、30への入力電文の複製を実現することができる。
<第2の実施の形態>
図8、図9a〜図9c及び図10は、本発明における第2の実施形態について表しており、第1の実施形態の一部を変更して実施することで実現される。
図10は、第2の実施形態におけるインメモリアプリケーションシステムのソフトウェアが、外部から送信された入力電文を複製する処理を表すシーケンス図であり、図3に示した第1の実施形態におけるシーケンスの一部を変更したものである。
図10において、クライアントサーバ80から入力電文Aを送信してから、クライアントサーバ80が電文Aの受信完了応答を受信するまでのシーケンス(S1〜S6)は、図3と同様である。
クライアントサーバ80は、電文Aの受信完了応答を受信した後(S6)、電文Aが実行系サーバ10と待機系サーバ20、30で同期済であることを認識する(S21)。この後に、新たな入力電文Bを実行系サーバ10と待機系サーバ20、30に送信する場合に、クライアントサーバ80は電文Aの確定通知を電文Bと一緒に送信する(S22)。待機系サーバ20、30では、電文Bと電文A確定通知を受信すると、すでに格納していた電文Aに対して全ての待機系サーバ20、30の同期状態を同期済へと変更することで、電文Aの確定を行う(S23)。その後、入力電文Bの同期済応答と合わせて、電文A確定済応答を実行系サーバ10へと応答する(S24)。
実行系サーバ10は、同期済応答と同様に、各待機系サーバ20、30からの電文A確定済応答を受信すると、待機系サーバ20、30の同期状態を確定済に変更して(S25)、全待機系サーバ20、30からの確定済応答を待ち合わせる(S26)。
実行系サーバ10が全応答を受信した後、入力電文Bの受信完了応答と合わせて、電文A確定済応答をクライアントサーバ80に応答する(S27)。以上により、入力電文Aの複製が完了し、電文Bの受信完了応答が確定する。
図8は、図10に示した入力電文の複製処理の例を示すフローチャートである。
入力電文の送信元であるクライアントサーバ80では、電文制御部810は過去に受信完了応答を受けた同期済電文のうち、インメモリアプリケーションシステムに対して確定を未通知な電文Bがあるかを参照し(S803)、入力電文である電文Aの送信時に、前記処理T104と同様の前記電文Bの確定通知をあわせて、通知する(S804、T106)。また、その後、前記処理S802と同様にして、前記電文T106の応答となる受信完了応答を受信する。前記処理S802により、入力電文である電文Aの同期済を確認し(S805)、さらに前記電文T106において送信した前記電文Bが待機系サーバ20、30で確定されたことを確認する(S806)。
図9aは、前記電文T106の一例を示すものであり、前記図5aに加えて、前記未通知の同期済電文Bを識別可能な確定済電文ID303を有する。
ここで、前記処理S803からS806は、クライアントサーバ80の前記電文制御部810に同期状態制御部を設け、この同期状態制御部によって受信応答を受けた電文IDをテーブル等でメモリやディスク装置などに記憶することで実現してもよい。例えば、メモリで行う一例として、送信した入力電文を格納するバッファを設け、受信電文格納バッファと同様に送信した入力電文の同期状態を前記同期状態制御部で変更する方法がある。また、クライアントサーバ80が入力電文の送信を前の入力電文の受信完了応答受信後に行う場合は、入力電文IDから直前に送信され、同期済となった入力電文の電文IDが一意に定まるような電文IDを利用することで、受信応答を受けた電文IDを管理せずに実現してもよい。また、この場合、図9aに示した前記電文T106における確定済電文IDを送信しなくてもよい。
一方、インメモリアプリケーションシステムでは、図8で示すように、まず、前記電文Aについては、第1の実施形態と同様に、実行系サーバ10は処理S101〜S106を、待機系サーバ20、30は処理S201〜S204を実行し、電文T102が実行系サーバ10と待機系サーバ20、30間で通信される。加えて、前記電文Bに関して、待機系サーバ20、30では前記処理S203の後、前記電文T106から電文Bの同期済みであることを確認し、前記第1実施形態の図4に示した処理S206と同様にして、電文Bの確定を行い(S209)、前記処理S204と同様にして、実行系サーバ10に電文Aの同期済応答T102を送信する。
一方、実行系サーバ10では、前記処理S106と同様に、電文Aの受信完了応答をクライアントサーバ80に通知する。ここで、待機系サーバ20、30の処理S209は、前記電文T102を通知する前記処理S204の後で実施されてもよい。この場合、前記電文T102は、前記電文Bの確定済前であるため、前記電文Bの確定済応答を含まなくなる。しかし、待機系サーバ20、30が、前記処理SS209によって前記電文Bを確定した以降に異なる入力電文に関する電文T102を送信する場合に、電文Bの確定済応答を行えばよい。例えば、前記通知T101に対する前記通知106と同様に、前記電文T102に新たに確定済電文Bの電文IDを付与する別の電文形式T102´(図9b)を送信することで実現される。さらに、実行系サーバ10の前記処理T103も、図9bと同様に、前記電文T103に新たに確定済電文Bの電文IDを付与する別の電文形式T103´(図9c)を送信することで実現される。加えて、クライアントサーバ80は、前記処理S806で、前記電文T103´が通知された電文Bの確定済の確認処理を行う。
以上に示したように、待機系サーバ20、30で実施される入力電文の同期済応答処理S204を、他の電文の確定処理を行う前に実施することが可能であり、この場合、クライアントサーバ80に入力電文の受信完了応答T103を早く応答することが可能となる。
ここで、クライアントサーバ80から送信される入力電文は、インメモリアプリケーションシステムに対して、何の処理要求も行わないような電文内容を有する電文であってもよい。例えば、次の入力電文が送信されなかった場合に、前記電文T103で通知された同期済電文をインメモリアプリケーションシステムに通知するために、処理要求を含まないような前記入力電文を送信してもよい。さらに、実行系サーバ10と待機系サーバ20、30では、入力電文の処理内容が存在しない場合には、入力電文の格納処理を省略することもある。また、処理要求を含まないような前記入力電文をクライアントサーバ80が送信するタイミングは、任意のタイミングでよい。例えば、次の入力電文が一定時間送信されなかった場合であったり、一定間隔で送信する場合であったり、前記の組合せであってもよい。
さらに、第2の実施形態も前記第1の実施形態の図7に示したように、クライアントサーバ80とインメモリアプリケーションシステムとの間に中継サーバ50が存在するようなシステム構成でも実現可能である。例えば、第1の実施形態と同様に、クライアントサーバ80から中継サーバ50には入力電文が送信され、中継サーバ50が前記図8に示した送信元電文送信処理を実施し、前記入力電文の受信完了通知をクライアントサーバ80に転送することで実現しても良い。また、クライアントサーバ80が前記図8に示した送信元電文送信処理を行い、中継サーバ50はクライアントサーバ80とインアプリケーションシステム間の通信を転送することで実現しても良い。この場合、前記電文T106は、クライアントサーバ80から中継サーバ50へはユニキャスト通信で送信され、中継サーバが実行系サーバ10と待機系サーバ20、30にマルチキャスト通信を行うことで実現しても良い。
以上、図8〜図10に示した一連の処理を行うことで、クライアントサーバ80からインメモリアプリケーションシステムへの入力電文のデータ複製を、クライアントサーバ80からのマルチキャスト通信に対する処理だけで実現することができる。これにより、第1の実施形態と同様に、入力電文を受けた実行系サーバ10が全待機系サーバ20、30にマルチキャスト通信で転送する場合に比べて、通信回数を削減して、待機系サーバ20、30への入力電文の複製を実現することができる。さらに、入力電文の通信と同じ通信の仕組みを用いることが出来るため、実行系サーバ10が全待機系サーバ20、30にマルチキャスト通信するための機能を不要とすることができる。
<第3の実施の形態>
図11から図14は、本発明における第3の実施形態について表しており、第1の実施形態の一部を変更して実施することで実現される。
図11は、第3の実施形態におけるインメモリアプリケーションシステムのソフトウェアを主体とした機能ブロック図で、前記第1の実施形態の図2の一部を変更したものである。図11の各サーバは、前記第1実施形態の図2における各サーバの有する機能に加えて、以下に示す機能を有する。
実行系サーバ10は、電文制御部110によって待機系サーバ20、30に複製が存在する入力電文の処理要求を実行する電文処理部130を有する。前記電文処理部130は、前記入力電文の処理要求を実施するために、必要となるデータ格納領域131を有する。処理要求は、例えば、前記データ格納領域131の参照処理や更新処理を含む。前記処理要求が更新処理である場合には、前記電文処理部130は、前記データ格納領域131を更新する機能に加えて、前記更新処理に関する情報を、前記電文制御部110を介して、同期電文として待機系サーバ20、30に送信する機能を有する。前記電文制御部110は、前記同期電文を格納する同期電文送信バッファ113を有する。さらに、同期状態制御部119は、前記同期電文送信バッファ113に格納される同期電文に対して待機系サーバ20、30の同期状態を認識し、前記同期状態を格納する機能を備える。
一方、待機系サーバ20、30も、実行系サーバ10と同様に、電文処理部230及びデータ格納領域231、さらに、同期電文送信バッファ213を有する。待機系サーバ20、30の電文制御部210は、実行系サーバ10の前記電文制御部110から送信された同期電文を前記同期電文送信バッファ213に格納する機能を有する。さらに、前記電文処理部230は、前記同期電文送信バッファ213に格納された同期電文を元に、実行系サーバ10が実施した前記処理結果を前記データ格納領域231に反映する機能も有する。
図12は、第3の実施形態におけるインメモリアプリケーションシステムのソフトウェアが、外部から送信された入力電文を複製する処理を表すシーケンス図であり、図3に示した第1の実施形態におけるシーケンスの一部を変更したものである。
図12において、クライアントサーバ80が入力電文Aを送信してから、クライアントサーバ80が電文Aの受信完了応答を受信するまでのシーケンス(S1〜S6)は、前記第1実施形態の図3と同様である。
その後、実行系サーバ10は、すでに待機系サーバ20、30と同期済となっており、処理可能な入力電文Xを電文処理部130で実行し(S31)、その処理結果を同期電文X2として待機系サーバ20、30に送信することで、処理結果の同期を行う(S32)。実行系サーバ10は、S32において、この同期電文X2の送信前に、全待機系サーバ20、30で同期済状態にある電文である電文Aを確認し、同期電文X2に合わせて、電文A確定通知を一緒に送信する。
待機系サーバ20、30では、電文A確定通知を受信すると、すでに格納していた電文Aに対して全ての待機系サーバ20、30の同期状態を同期済へと変更することで、電文Aの確定を行う(S33)。その後、同期電文X2の受信完了応答と合わせて、電文A確定済応答を実行系サーバ10へと応答する(S34)。
実行系サーバ10は、同期済応答と同様に、各待機系サーバ20、30からの確定済応答を受信すると、待機系サーバ20、30の同期状態341を確定済に変更して(S35)、全待機系サーバ20、30からの確定済応答を待ち合わせる(S36)。実行系サーバ10が全応答を受信した後、入力電文Bの受信完了応答と合わせて、電文A確定済応答をクライアントサーバ80に応答する。以上により、入力電文Aの複製が完了する。
図13、図14は、図12に示した入力電文の複製処理の例を示すフローチャートである。まず、図13は、入力電文の複製処理において、外部から送信された入力電文を待機系サーバ20、30で同期したことを確定するまでの処理の例を示すフローチャートで、前記第1の実施形態の図4の一部を変更したものである。図13において、待機系サーバ20、30は、入力電文を受信すると、第1の実施形態の図4と同様に、前記処理S201から前記処理S204までを実施する。一方、実行系サーバ10は、第1の実施形態と同様に、前記処理S101から前記処理S106までを実施する。
図14は、入力電文の複製処理において、処理要求を実行系サーバ10が処理し、前記処理結果を待機系サーバ20、30に複製する際に、待機系サーバ20、30で入力電文を確定する処理の例を示すフローチャートである。
図14で、実行系サーバ10の電文処理部130は、前記処理S106で実行可能となった入力電文を取り出す(S121)。例えば、ここでは、前記図13で受信した入力電文Aと異なる電文Cが取り出されたとして、以下に説明を行う。
実行系サーバ10は、取り出した電文Cの処理要求に基づいて処理を実行する(S122)。次に、前記処理S122の電文Cにおける実行結果を待機系サーバ20、30のデータ格納領域に反映するための同期電文C2を生成し、前記同期電文送信バッファ113に格納した(S123)後、前記実行結果を前記データ格納領域131に反映する(S124)。
そして、前記図8に示した処理S803と同様に、待機系サーバ20、30で確定前である同期済電文Dが存在するかどうかを確認する(S125)。ここで、同期済電文Dは、前記図13で処理される入力電文以外に、詳細は後述するが、待機系サーバ20、30に送信した同期電文そのものを含んでもよく、また、対象となる電文が複数ある場合には全対象電文を対象としてもよい。続いて、電文Cの処理結果を入力電文の送信元に応答するための実行結果電文C4を生成し、前記送信電文格納バッファに格納する(S126)。そして、前記同期電文C2を、前記処理S126で生成した前記電文C4と、前記処理S125で確認した電文Dの情報とともに、全待機系サーバ20、30にマルチキャスト通信で送信する(S127、T131)。
図15bは、前記処理S126で生成された実行結果電文C4(電文T132)の一例を表すものであり、例えば、結果電文を一意に表す電文ID1321と、処理結果を示す電文内容1322を含む。さらに、前記電文ID1321は、処理した入力電文の電文ID1301と共通する番号をつけた例を示しており、これにより、どの入力電文を処理した結果かを合わせて通知することができる。ここで、入力電文の電文IDを送信してもよい。
次に、図15aは、前記処理S127で送信される電文T131の一例を表すものであり、例えば、同期電文を一意に示す電文ID1301と、処理結果によってデータ格納領域が更新される情報を表す電文処理結果内容1304からなる同期電文C2を含む。加えて、前記電文C4と、前記処理S125で抽出した確定前の同期済電文の電文ID1303とを含む。
また、図16aは、前記処理S127で前記電文T131が送信される時点の同期電文送信バッファ113の一例を示すものであり、例えば、前記電文T131に加えて、前記図6と同様に、待機系サーバ20、30で同期電文の受信状態を示す同期状態1131を含む。次に、図16bは、前記送信電文格納バッファ112の一例を示すものであり、結果電文内容に前記電文C4が格納された場合を示している。
一方、図14において、待機系サーバ20、30は、前記図13の処理S201〜S204と同様に、前記電文T131を受信し(S221)、前記電文T131を前記同期電文送信バッファ213に格納した(S222)後、前記処理S222で格納した同期電文C2に対する受信完了応答を生成し(S223)、前記処理S131と同様に、確定前であった同期済電文Dが確定したことを確認する(S224)。続いて、前記通知T102´と同様に、待機系サーバ20、30で確定した電文Dの確定済通知と合わせて、実行系サーバ10に通知を行う(S225、T102´)。実行系サーバ10は、前記処理S104〜S106と同様にして、前記応答を受信し(S128)、前記同期電文C2の確定済を確認し(S129)、前記電文C4を送信元に通知する(S130)。
さらに、前記電文T131で通知した確定前の同期済電文Dが確定したことを確認する(S131)。ここで、前記処理S131において、確定した電文Dが同期電文である場合には、同期電文を削除する処理を含んでもよい。
一方、待機系サーバ20、30は、前記処理S224で確定した電文のうち、確定した前記同期済電文Dより、以前に確定した同期済の入力電文Eに対する同期電文E2が存在する場合には、前記同期電文E2を読み込む(S226)。そして、前記同期電文E2を生成するために実行された入力電文Eを前記受信電文格納バッファ211から削除した(S227)後、同期電文E2の電文処理結果内容を前記データ格納領域231に反映し、同期電文E2を同期電文送信バッファから削除する(S228)。前記処理S228によって、待機系サーバ20、30のデータ格納領域231は、電文Eを実行された時点における実行系のデータ格納領域131の複製状態となる。
なお、本実施形態において、前記処理S123を実行するタイミングは、前記電文T131を送信する前であれば、異なるタイミングであってもよい。
また、本実施形態では、確定前の同期済電文Dが直前に同期済となった入力電文Aと異なり、待機系サーバ20、30で反映される同期電文E2が直前に受信した同期電文X2と異なる例で説明したが、電文Dと電文Aが同一であったり、電文E2と電文X2が同一であったりしてもよいし、さらには同期電文X2を生成した電文Xが電文Dと同一であってもよい。この場合、電文T131、102´に含まれる確定済電文IDが、同期電文IDから一意に算出可能な電文IDとなるため、送信を省略することができ、通信量をさらに削減することが可能である。
以上、図11から図16bに示した一連の処理を行うことで、クライアントサーバ80からインメモリアプリケーションシステムへの入力電文のデータ複製を、送信元からのマルチキャスト通信と、入力電文の実行結果を同期するために必要となるマルチキャスト通信を組み合わせることで実現することができる。これにより、第1の実施形態と同様に、入力電文を受けた実行系サーバ10が全待機系サーバ20、30にマルチキャスト通信で転送する場合に比べて、通信回数を削減して、待機系サーバ20、30への入力電文の複製を実現することができる。
<第4の実施の形態>
図17から図22は、本発明における第4の実施形態について表しており、第3の実施形態にさらに追加して実施することで実現される。また、図17から図22は、実行系サーバ10に障害が発生した場合に、系切り替えによって待機系サーバ20、30のうちの一台が実行系サーバ10の処理を引き継ぐまでの回復処理を示している。ここで、第3の実施形態において、マルチキャスト通信によって入力電文ならびに同期電文が各待機系サーバ20、30に送信されるため、待機系サーバ20、30間の電文の同期状態が一致しない場合が存在することがある。従って、本第4実施形態で示す回復処理では、このような待機系サーバ20、30間の同期状態の不一致を解消する整合性回復処理を含む。
まず、図17は、待機系サーバ20、30で行われる全体の処理の一例を示すフローチャートである。この例では、実行系サーバ10を待機系サーバ20(待機系1)で引き継ぐ例を示す。なお、複数の待機系サーバ20、30で実行系サーバ10の障害発生を監視し、障害発生時に処理を引き継ぐ待機系サーバ20、30の何れかを決定する手法は、公知または周知の技術を用いればよいので、ここでは詳述しない。
実行系サーバ10で障害が発生すると、各待機系サーバ20、30はクラスタ制御部220で前記障害を検出し(S251、S351)、自身の各バッファに格納される電文を確認した後(S252、S352)、相互に通信を行い(T151、T152)、他の待機系サーバ20、30で格納される電文の同期状態を受信する(S253、S254、S353、S354)。
続いて、実行系サーバ10の系切り替え先となる待機系サーバ20(以降、系切り替え先サーバ)は、他の待機系サーバ30(以降、非系切り替え先サーバ)と通信することで、全ての待機系での電文状態を同期させる電文同期状態の整合性回復処理を実行する(S255、S355、T153)。前記整合性回復処理は図18以降で詳細を示すが、前記一連の処理によって、系切り替え先サーバと非系切り替え先サーバ間で回復が必要な電文は、各バッファにおける電文の同期状態が、全系に電文が存在する場合には確定済み状態となり、系切り替え先サーバでは同期電文がデータ格納領域に反映された状態となる。従って、系切り替え先サーバは実行系サーバ10として、動作を継続することができる。
図18は、前記整合性回復処理の一例を示し、電文の同期状態に応じて、回復方法を選択して、各回復方法を実行する例を示すフローチャートである。図18では、系切り替え先サーバで実行する例を示す。
まず、系切り替え先サーバは、前記図17の処理S254で受信した他系(非系切り替え先サーバ)の電文の同期状態と自系の電文の同期状態を参照し、ある電文に対する状態を確認し(S271)、次に、電文のうち、整合性回復処理を実施していない未処理の電文があるかを判断する(S272)。全ての電文の整合性回復処理が完了している場合や、回復する対象となる電文がいずれの系にも格納されていない場合は、整合性が保証されるため、整合性回復処理を終了する。一方で、格納された電文がある場合には、S273以降の処理が行われる。
まず、いずれかひとつのサーバが未受信かどうかを判断し(S273)、いずれのサーバも未受信で無い場合には、受信済の電文の整合性処理R3が呼び出される。ここで未受信状態は、ある系に格納されている電文が他系において受信されていない状態を指す。例えば、前記電文T101のようにマルチキャスト通信された電文が通信障害などにより、あるサーバに届いていないような場合である。ここで、ある系でのみ確定済であるような電文が存在する場合は、その電文が未受信状態であるサーバは存在しない。確定済である電文は他系では少なくとも同期済以降の状態であることが前記第3の実施形態において保証されているため、他系に受信済みであり、未受信ではないためである。これは、各待機系サーバ20、30が電文を確定済とする前記図14の処理S224や、確定済電文を消去する前記処理S227やS228で電文IDを記録することで実現することが可能である。
一方、前記処理S273で、ある系で未受信である電文が存在した場合には、その電文を全系で受信済となるように補完するべきかどうかを判断し(S274)、補完を実施する整合性回復処理R2または補完を実施しない整合性回復処理R3を呼び出す。
ここで、前記処理S274において、補完するべきか否かの決定は、図22に示すようなユーザによって設定される電文補完要否設定に基づいて実施されてもよい。図22の例では、格納されている電文の種別の情報314毎にユーザが補完の要否を設定した情報315を用いて判断される。ここで、前記情報314は、電文種別として電文識別子で指定される例を示したが、各電文の処理内容を細かく指定する情報を含んでも良い。さらに、前記電文補完要否設定は、電文を送信したクライアントサーバ80毎に補完すべきかどうかを定める情報316を含んでいる。このように電文やクライアントサーバ80毎に補完の有無を設定することで、例えば、重要な処理要求だけの回復を行い、全ての電文を回復する場合に比べて、回復時間を削減することができる。さらに、図22の電文補完要否設定の例ででは、電文種別毎に、あるいは更に情報316で指定するクライアントサーバ毎に、ある系で受信してからの経過時間範囲を設定してその時間範囲内では補完し、その時間範囲を越えると補完しないとの判断するための時間範囲情報317も指定可能である。このような時間範囲の設定を用いることで、例えば、入力電文を送信したクライアントサーバ80が送信した入力電文に対する応答を受信しなかったため、エラーと認識している場合に、誤って入力電文を補完してしまい、エラー電文が受信済みとなってしまうような不整合が生じることを防ぐことができる。また、別の一例として、例えば、前記クライアントサーバ80が入力電文を再送するような場合には、再送される入力電文を受けるより先に入力電文を補完しておくことができるため、高速に再送に対する受信応答を返すことができる。さらに、図22の電文補完要否設定の例では補完すべき電文の上限数も情報318により指定可能である。つまり前記情報318で指定した数以上の電文は補完しないと判断する設定ができる。あるいは、補完すべき未受信の系の上限数を定めておき、前記補完先サーバ上限数以上の電文は補完しないといった方法によって、判断しても良い。これらの上限数を定めることで、整合性回復処理に要する時間を削減することができる。
図19は、前記図18のS274で未受信電文の補完を行わない場合の整合性回復処理R1の一例を示すフローチャートである。本処理では、対象となる電文の補完を行わず、未受信状態で整合性を取る処理を行う。
系切り替え先サーバは、まず該当する対象電文の削除を行う(S275)。ここで自系に対象電文が無い場合は、処理S275をスキップする。続いて、前記対象電文を未受信状態にする(すなわち、対象電文を削除する)ように状態変更通知を全系にマルチキャスト通信で行う(S276、T154)。前記電文T154は、例えば、対象電文のIDと、状態変更を含む。非系切り替え先サーバは、前記電文T155を受信すると(S371)、対象電文の状態変更(電文の削除)を行い(S372)、状態変更完了応答を系切り替え先サーバに応答する(S373、T155)。系切り替え先サーバは前記電文T155を全系から受信する(S277)。以上により、対象電文を未受信状態で整合性回復することが完了し、次の電文を処理するために前記図18の処理S272を呼び出す(R4)。
図20は、前記図18のS274で未受信電文の補完を行う場合の整合性回復処理R2の一例を示すフローチャートである。本処理では、対象となる電文の補完を行い、同期済状態で整合性を取る処理を行う。
系切り替え先サーバは、まず該当する対象電文を自系が格納しているか判断する(S278)。ここで、自系に対象電文を保持していない場合には、対象電文を保持する非系切り替え先サーバに対象電文を送信するように要求する(S279、T156)。一方、処理S374で対象電文の送信要求を受けた非系切り替え先サーバは、格納された対象電文を系切り替え先サーバへ送信する(S375、T157)。系切り替え先サーバは前記電文T157を受信する(S280)と、対応する電文の格納バッファに対象電文を格納し、自系の状態を受信済みに変更する(S281)。以上により、自系に対象電文が格納された状態となるため、電文を保持しない非系切り替え先サーバへの電文転送処理(処理S282以降)を実行する。
系切り替え先サーバは、電文を保持していない非系切り替え先サーバに対して、対象となっている格納電文を転送する(S282、T158)。一方、処理S376で前記電文T159を受信した非系切り替え先サーバは、送信された前記対象電文を、自系の同期状態を受信済状態として、対応する格納バッファに格納し(S377)、転送された電文の受信完了を応答する(S378、T159)。
系切り替え先サーバは、前記電文T158を受信すると、送信元となる系の同期状態を同期済に変更し、前記処理S282で電文を転送した全系からの応答を待つ(S283)。なお、上記では、電文を保持しない非系切り替え先サーバが存在する場合で説明したが、非系切り替え先サーバが全て電文を保持する場合には、処理S282以降の電文転送処理はスキップされる。以上により、対象電文が全系で保持された同期済状態で整合性回復することが完了するため、受信済の電文の整合性処理R3を実行する。
ここで、前記電文T156の送信先は、対象電文を保持する非系切り替え先サーバから任意のサーバを選択してもよいし、もっとも通信が速いと想定されるサーバを選択してもよい。後者の場合は、転送量を削減することや回復時間を削減することができる。あるいは、全ての非系切り替え先サーバの系にマルチキャスト通信し、受信した非系切り替え先サーバが電文を格納していない場合は、対象電文の転送を行わないような方法で実現してもよい。この場合、実際に最も早く通信してきた非系切り替え先サーバからデータを受信するため、通信状態に変動が生じ、通信の速さを想定しにくい場合でも、整合性回復処理に要する時間を短縮して系切り替えからの回復時間を削減することができる。さらに、前記電文T158の送信先は、全ての非系切り替え先サーバとしてマルチキャスト通信し、対象電文を格納済みである非系切り替え先サーバは対象電文の格納を行わないような方法で実現してもよい。この場合。電文の有無に関わらず、正常動作時に他の待機系サーバに同期電文を送信する通信と同じ仕組みを用いることが出来るため、整合性回復処理に特化した通信機能を不要とすることができる。
図21は、前記図18のS273で電文の未受信がない場合に行われる受信済電文の整合性回復処理R3の一例を示すフローチャートである。本処理で対象となる電文の同期状態は、各系において同期済か確定済のいずれかの状態であり、本処理では、同期済状態の電文を確定済状態で整合性を取る処理を行う。
まず、系切り替え先サーバは、対象電文が同期電文か(第3の実施形態での記載方法を用いてX2とする)否かを判断する(S284)。
同期電文X2である場合には、系切り替え先サーバが、自系で同期済状態であるか否かを判断する(S285)。同期済状態である場合には、系切り替え先サーバでは、実行系サーバ10になる(引き継ぐ)前に、同期電文を反映させる必要があるため、以降の処理を実施する。まず、前記図14の処理S226、S227と同様に、同期電文X2を読込み、対応する入力電文Xを削除した後、前記同期電文X2から実行結果応答X4を取り出し、送信電文格納バッファ212に格納する(S286)。続いて、前記処理S228、S129と同様に、電文Xの実行結果の反映と同期電文X2の確定を行い、前記処理S130と同様に、前記処理S286で格納した実行結果応答X4を送信する。
以上により、系切り替え先サーバでは、実行系サーバ10を引き継ぐ際に、同期電文の同期状態が確定済状態となる場合に、本来実行系サーバ10で実施される処理に相当する処理が実現される。
以下、確定済状態を非系切り替え先サーバに通知し、電文の整合性を取るための処理(S287以降)が行われる。
ここで、送信元(クライアントサーバ80)へ実行結果電文X4を送信する例を示したが、例えば、障害発生前に実行系サーバ10が図14における処理S130で電文の実行結果を送信済みであるかどうかを、入力電文のクライアントサーバ80に対して確認することで、送信が不要であるような場合には、系切り替え先サーバが実行結果電文X4に関する前記処理S286、S130をスキップするような方法を用いても良い。これにより、入力電文のクライアントサーバ80が受信済みの実行結果を重複送信するのを削減し、通信量の削減を図ることができる。
一方、前記処理S285で自系の同期状態が同期済でない場合は、確定済状態であるため、前記一連の同期電文の反映処理が完了していることになり、同様に処理S287以降が実施される。さらに、前記処理S284で対象電文が同期電文でなかった場合は、入力電文であるため、一連の前記反映処理は不要であり、さらに入力電文を確定済状態となることができるため、同様に処理S287以降が実施される。
まず、処理S287で、前記処理S276と同様に、系切り替え先サーバは、前記対象電文を確定済状態に変更するように状態変更通知を全系(非系切り替え先サーバ)にマルチキャスト通信で通知する。その後、非系切り替え先サーバが前記処理S171〜S173と同様に、状態変更を反映し、状態変更完了応答T155を返信する(S371〜S373)。系切り替え先サーバは、前記状態変更完了応答を受信すると、系の同期状態を確定済に変更し、全系の同期状態が確定済になるのを待つ(S288)。これにより、対象電文が全系で確定済となったことが確認される(S289)。処理S289では、対象電文が同期電文である場合には、前記処理S129と同様、同期電文を削除する処理を含んでも良い。
以上により、対象となった受信済電文が系切り替え先サーバではデータ更新した状態となり、他の非系切り替え先サーバでは確定済状態となる。これは、実行系サーバ10が前記処理S131まで、待機系サーバ20、30が前記処理S225までを実施した正常動作時の電文同期状態と同様の状態であり、整合性が保証された状態である。従って、系切り替えが完了した場合に、非系切り替えサーバの確定済同期電文の実行結果の反映処理S228が実行されるため、整合性が回復された状態となる。処理S289が完了した後、次の電文に対する整合性回復処理するために前記図18の処理S272を呼び出す(R4)。
なお、上述のように非系切り替え先サーバにおける回復処理では、前記処理S225での同期電文の確定済処理までを示したが、処理S226以降における確定済同期電文の反映処理を実施しても良い。この場合、整合性回復処理の完了時にデータ格納領域の内容も整合性が保証することができる。
ここで、第4の実施形態は、第3の実施形態の変形として、入力電文と同期電文の双方を有する場合において説明したが、第1の実施形態のように入力電文のみがある場合に適用しても良く、同期電文に関する一連の処理をスキップすればよい。
以上、図17から図21に示した第4の実施形態によれば、インメモリアプリケーションシステムにおいて、上記クライアントサーバ80による入力電文送信から実行系サーバ10による転送開始までの間に障害が発生した場合には、入力電文が喪失するのに対して、全待機系サーバ20、30に入力電文が複製されているため、入力電文を喪失すること無く補完して、処理を継続する事のできる高信頼なシステムを提供することができる。さらに加えて、同期電文も、同様に補完することで、全待機系に対する複製が完了する前に障害が発生した場合であっても、その処理結果が少なくとも1台の待機系に存在する場合には、電文の処理を再実行することなく、処理を継続する事のできる高信頼なシステムを提供することができる。すなわち、通信回数を削減する本発明によるデータ複製方法を用いて通信回数を削減した場合でも、高信頼なシステムを提供することが可能となる。
なお、本発明における各実施形態では、実行系サーバ10から待機系サーバ20、30に対してデータを複製する手段として、マルチキャスト通信を用いた場合について示したが、送信先サーバにデータの複製を実現する手段であれば、異なる手段を用いても構わない。例えば、ハードウェア機構によってDMA転送や共有メモリを実現することで、複製する手段であったりしてもよい。
以上のように、本発明は、クラスタ構成を取るインメモリアプリケーションシステムに適用することが可能である。特に、通信回数を削減することができるため、通信頻度の高いシステムに適用すると好適である。
本発明の第1の実施形態におけるシステム構成を示すブロック図である。 本発明の第1の実施形態におけるソフトウェア構成を示すブロック図である。 本発明の第1の実施形態における入力電文を複製する処理の一例を示すシーケンス図である。 本発明の第1の実施形態における入力電文を複製する処理の一例を示すフローチャートで、クライアントサーバと実行系サーバ及び待機系サーバの処理の関連を示す。 本発明の第1の実施形態における電文の一例を示す説明図である。 本発明の第1の実施形態における同期応答の一例を示す説明図である。 本発明の第1の実施形態における受信完了応答の例を示す説明図である。 本発明の第1の実施形態における電文確定通知の一例を示す説明図である。 本発明の第1の実施形態における受信電文格納バッファの一例を示す説明図である。 本発明の第1の実施形態におけるシステム構成の他の例を示すブロック図である。 本発明の第2の実施形態における入力電文を複製する処理の一例を示すフローチャートで、クライアントサーバと実行系サーバ及び待機系サーバの処理の関連を示す。 本発明の第2の実施形態における電文の一例を示す説明図である。 本発明の第2の実施形態における電文の他の例を示す説明図である。 本発明の第2の実施形態における電文のさらに他の例を示す説明図である。 本発明の第2の実施形態における入力電文を複製する処理の一例を示すシーケンス図である。 本発明の第3の実施形態におけるシステム構成の一例を示すブロック図である。 本発明の第3の実施形態における入力電文を複製する処理の一例を示すシーケンス図である。 本発明の第3の実施形態における入力電文を複製する処理の一例を示すフローチャートで、クライアントサーバと実行系サーバ及び待機系サーバの処理の関連を示す。 本発明の第3の実施形態における入力電文を複製処理において待機系サーバで入力電文を確定する処理の一例を示すフローチャートで、クライアントサーバと実行系サーバ及び待機系サーバの処理の関連を示す。 本発明の第3の実施形態における電文の一例を示す説明図である。 本発明の第3の実施形態における実行結果電文の一例を示す説明図である。 本発明の第3の実施形態における同期電文送信バッファの一例を示す説明図である。 本発明の第3の実施形態における送信電文格納バッファの一例を示す説明図である。 本発明の第4の実施形態における整合性回復処理の一例を示すフローチャートで、待機系サーバ内の全体の処理を示す。 本発明の第4の実施形態における整合性回復処理の一例を示し、系切り替え先サーバで行われる処理のフローチャートで、電文の同期状態に応じて回復方法を決定する整合性回復処理の一例を示す。 本発明の第4の実施形態における未受信電文の補完を行わない場合の整合性回復処理の一例を示すフローチャートである。 本発明の第4の実施形態における未受信電文の補完を行う場合の整合性回復処理の一例を示すフローチャートである。 本発明の第4の実施形態における受信済電文の整合性回復処理の一例を表すフローチャートである。 本発明の第4の実施形態におけるユーザが指定可能な電文補完要否設定の一例を示す表である。
符号の説明
10 実行系サーバ
20、30 待機系サーバ
50 中継サーバ
80 クライアントサーバ
110、210、510、810 電文制御部
119、219、519 同期状態制御部
111、211、511 受信電文格納バッファ
112、212、512 送信電文格納バッファ
120、220 クラスタ制御部
130、230 電文処理部
131、231 データ格納領域

Claims (20)

  1. プロセッサとメモリを備えてアプリケーションを実行する第1の計算機と、
    プロセッサとメモリを備えて行系の前記第1の計算機を引き継ぎ可能な第2の計算機と、を備え、前記第1の計算機が第1の処理要求を含む第1の電文を受信し、複数の第2の計算機で前記第1の電文を複製するデータ複製方法であって、
    第3の計算機が前記第1の電文を、前記第1の計算機と前記複数の第2の計算機に送信するステップと、
    前記第2の計算機が、前記第1の電文の受信完了通知を前記第1の計算機に送信するステップと、
    前記第1の計算機が、全ての第2の計算機からの前記受信完了通知を待ち合わせるステップと、
    前記第1の計算機が、前記複数の第2の計算機からの受信完了通知を受信するステップと、を含み、
    前記複数の第2の計算機からの受信完了通知を受信するステップは、
    前記第1の計算機が、複数の第2の計算機からの受信完了通知を受信した後に、前記第3の計算機に前記第1の電文の受信完了通知を送信するステップと、
    前記第1の計算機が、複数の第2の計算機からの受信完了通知を受信した後に、前記第1の処理要求を第1の計算機で実行可能なように有効とするステップと、
    前記第1の計算機が、複数の第2の計算機からの受信完了通知を受信した後に、前記第2の計算機に前記第1の電文が有効であることを通知するステップと、
    を含むことを特徴としたデータ複製方法。
  2. 請求項1に記載のデータ複製方法であって、
    前記第1の電文の受信完了通知を通知された前記第3の計算機が、第2の処理要求を含む第2の電文を前記第1の計算機と前記第2の計算機に送信するステップをさらに含み、
    前記第1の電文が有効であることを示す通知を、第1の計算機が前記第2の計算機に通知するステップは、
    前記第3の計算機から受信した第2の処理要求を含む第2の電文と、前記第1の電文が有効であることを示す通知とを一緒に送信することを特徴とするデータ複製方法。
  3. 請求項1に記載のデータ複製方法であって、
    前記第2の計算機が、前記第1の計算機に障害が発生したことを検知するステップと、
    前記第2の計算機が、前記第1の計算機に障害が発生したときに、当該第1の計算機を引き継ぐステップと、をさらに含み、
    前記第1の計算機に障害が発生したときに、前記第1の計算機を引き継ぐステップは、
    前記複数の第2の計算機のうちのひとつを前記第1の計算機を引き継ぐ系切り替え先計算機とし、当該系切り替え先計算機が、他の前記第2の計算機に電文の受信状態を問い合わせるステップと、
    前記系切り替え先計算機が、前記問合せの結果得られた電文の受信状態と、当該系切り替え先計算機が有する電文の受信状態とを照合するステップと、
    前記照合の結果、前記系切り替え先計算機と前記他の第2の計算機との間に電文の受信状態に不整合状態が存在する場合に、当該系切り替え先計算機が全ての第2の計算機の受信状態を同一の受信状態に設定するステップと、を含み、
    前記全ての第2の計算機の受信状態を同一とした後に、前記系切り替え先計算機が障害の発生した第1の計算機の処理を引き継ぐことを特徴とするデータ複製方法。
  4. 請求項3に記載のデータ複製方法であって、
    前記系切り替え先計算機が全ての第2の計算機の受信状態を同一の受信状態に設定するステップは、
    前記不整合状態である電文の受信状態が、前記第2の計算機のうちの少なくとも1つが前記電文を受信する前の受信状態であることを判定する第1の判定ステップと、
    前記判定の結果が前記電文を受信する前の受信状態であれば、前記系切り替え先計算機が前記第2の計算機に当該電文の削除を指令する第1の整合性保証ステップと、
    前記不整合状態である電文の受信状態が、前記第2の計算機のうちの少なくとも1つが前記電文を受信する前の受信状態であり、かつ、前記第2の計算機の少なくとも1つが前記電文を受信済みであることを判定する第2の判定ステップと、
    前記判定の結果が、前記第2の計算機のうちの少なくとも1つが前記電文を受信する前の受信状態であり、かつ、前記第2の計算機の少なくとも1つが前記電文を受信済みの場合に、前記電文を前記受信済みの前記第2の計算機から全ての第2の計算機に前記電文を複製する第2の整合性保証ステップと、
    前記電文毎に前記第1の整合性保証ステップと第2の整合性保証ステップのいずれか一方を選択するステップと、を含むことを特徴とするデータ複製方法。
  5. 請求項4に記載のデータ複製方法であって、
    前記第1の整合性保証ステップと第2の整合性保証ステップを選択するステップは、
    前記電文の処理内容と、前記電文を送信した第3の計算機の識別子と、前記電文が送信された時間と、前記電文の再送タイミングのうちの少なくとも一つを判断基準として、当該判断基準を満たすときに前記第1の整合性保証ステップを選択し、当該判断基準を満たさないときに前記第2の整合性保証ステップを選択することを特徴とするデータ複製方法。
  6. 請求項5に記載のデータ複製方法であって、前記判断基準は前記第1の計算機または第2の計算機のユーザにより設定されることを特徴とするデータ複製方法。
  7. 請求項1に記載のデータ複製方法であって、
    前記第1の処理要求が有効であることを第1の計算機が前記第2の計算機に通知するステップは、
    前記第1の計算機が、第2の計算機に第3の電文を送信する際に、前記第3の電文と前記有効であることの通知とを一緒に通知することを特徴としたデータ複製方法。
  8. 請求項7に記載のデータ複製方法であって、
    前記第1の計算機が、第3の処理要求を含む電文を実行することでメモリ上のデータを更新し、前記更新結果を前記第2の計算機に通知を送信するステップを、さらに含み、
    前記第3の電文が、前記更新結果の通知であることを特徴とするデータ複製方法。
  9. 請求項8に記載のデータ複製方法であって、
    前記第2の計算機が、前記第1の計算機に障害が発生したことを検知するステップと、
    前記第2の計算機が、前記第1の計算機に障害が発生したときに、当該第1の計算機を引き継ぐステップと、をさらに含み、
    前記第1の計算機に障害が発生したときに、前記第1の計算機を引き継ぐステップは、
    前記複数の第2の計算機のうちのひとつを前記第1の計算機を引き継ぐ系切り替え先計算機とし、当該系切り替え先計算機が、他の前記第2の計算機に電文の受信状態を問い合わせるステップと、
    前記系切り替え先計算機が、前記問合せの結果得られた電文の受信状態と、当該系切り替え先計算機が有する電文の受信状態とを照合するステップと、
    前記照合の結果、前記系切り替え先計算機と前記他の第2の計算機との間に電文の受信状態に不整合状態が存在する場合に、当該系切り替え先計算機が全ての第2の計算機の受信状態を同一の受信状態に設定するステップと、を含み、
    前記全ての第2の計算機の受信状態を同一とした後に、前記系切り替え先計算機が障害の発生した第1の計算機の処理を引き継ぐことを特徴とするデータ複製方法。
  10. 請求項9に記載のデータ複製方法であって、
    前記系切り替え先計算機が全ての第2の計算機の受信状態を同一の受信状態に設定するステップは、
    前記不整合状態である電文の受信状態が、前記第2の計算機のうちの少なくとも1つが前記電文を受信する前の受信状態であることを判定する第1の判定ステップと、
    前記判定の結果が前記電文を受信する前の受信状態であれば、前記系切り替え先計算機が前記第2の計算機に当該電文の削除を指令する第1の整合性保証ステップと、
    前記不整合状態である電文の受信状態が、前記第2の計算機のうちの少なくとも1つが前記電文を受信する前の受信状態であり、かつ、前記第2の計算機の少なくとも1つが前記電文を受信済みであることを判定する第2の判定ステップと、
    前記判定の結果が、前記第2の計算機のうちの少なくとも1つが前記電文を受信する前の受信状態であり、かつ、前記第2の計算機の少なくとも1つが前記電文を受信済みの場合に、前記電文を前記受信済みの前記第2の計算機から全ての第2の計算機に前記電文を複製する第2の整合性保証ステップと、
    前記電文毎に前記第1の整合性保証ステップと第2の整合性保証ステップのいずれか一方を選択するステップと、を含むことを特徴とするデータ複製方法。
  11. 請求項10に記載のデータ複製方法であって、
    前記第1の整合性保証ステップと第2の整合性保証ステップを選択するステップは、
    前記電文の処理内容と、前記電文を送信した第3の計算機の識別子と、前記電文が送信された時間と、前記電文の再送タイミングのうちの少なくとも一つを判断基準として、当該判断基準を満たすときに前記第1の整合性保証ステップを選択し、当該判断基準を満たさないときに前記第2の整合性保証ステップを選択することを特徴とするデータ複製方法。
  12. 請求項1に記載のデータ複製方法であって、
    前記第1の計算機または第2の計算機が、メモリ上でのみ前記アプリケーションの処理を実行することを特徴とするデータ複製方法。
  13. プロセッサとメモリを備えてアプリケーションを実行する第1の計算機と、
    プロセッサとメモリを備えて行系の前記第1の計算機を引き継ぎ可能な第2の計算機と
    第3の計算機から送信される第1の処理要求を含む第1の電文を前記第1の計算機と複数の第2の計算機で複製するデータ複製システムであって、
    前記第3の計算機は、前記第1の電文を、前記第1の計算機と前記複数の第2の計算機に送信する第3の制御部を有し、
    前記第2の計算機は、前記第1の電文の受信完了通知を前記第1の計算機に送信する第2の制御部を有し、
    前記第1の計算機は、全ての第2の計算機からの前記受信完了通知を待ち合わせる第1の制御部を有し、
    前記第1の制御部は、
    前記複数の第2の計算機からの受信完了通知を受信した後に、前記第3の計算機に前記第1の電文の受信完了通知を第1の通信部と、
    前記複数の第2の計算機からの受信完了通知を受信した後に、前記第1の処理要求を第1の計算機で実行可能なように有効とする確定部と、
    前記複数の第2の計算機からの受信完了通知を受信した後に、前記第2の計算機に前記第1の電文が有効であることを通知する第2の通信部と、
    を有することを特徴とするデータ複製システム。
  14. 請求項13に記載のデータ複製システムであって、
    前記第3の計算機の前記第3の制御部は、
    前記第1の電文の受信完了通知を受信した後に、第2の処理要求を含む第2の電文を前記第1の計算機と第2の計算機に送信し、
    前記第2の通信部は、
    前記第3の計算機から受信した第2の処理要求を含む第2の電文と、前記第1の電文が有効であることを示す通知とを一緒に送信することを特徴とするデータ複製システム。
  15. 求項13に記載のデータ複製システムであって、
    前記第2の通信部は、
    前記第1の計算機が第2の計算機に第3の電文を送信する際に、前記第3の電文と前記第1の電文が有効であることを示す通知とを、一緒に送信することを特徴とするデータ複製システム。
  16. 請求項15に記載のデータ複製システムであって、
    前記第1の計算機は、第3の処理要求を含む電文を実行することでメモリ上のデータを更新し、前記更新結果を第2の計算機に送信する第3の通信部を有し、
    前記第3の電文が、前記更新結果の通知であることを特徴とするデータ複製システム。
  17. 請求項13に記載のデータ複製システムであって、
    前記第2の計算機は、
    前記第1の計算機に障害が発生したことを検知する障害検知部と、
    前記障害検知部が前記第1の計算機の障害を検知したときに、当該第1の計算機を引き継ぐクラスタ制御部と、をさらに有し、
    前記クラスタ制御部は、
    前記複数の第2の計算機のうちのひとつを前記第1の計算機を引き継ぐ系切り替え先計算機とし、当該系切り替え先計算機が、他の前記第2の計算機に前記電文の受信状態を問い合わせ、
    前記系切り替え先計算機が、前記問合せの結果得られた電文の受信状態と、当該系切り替え先計算機が有する電文の受信状態とを照合し、
    前記照合の結果、前記系切り替え先計算機と前記他の第2の計算機との間に電文の受信状態に不整合状態が存在する場合に、当該系切り替え先計算機が全ての第2の計算機の受信状態を同一の受信状態に設定する整合性保証部、を有し、
    前記全ての第2の計算機の受信状態を同一とした後に、前記系切り替え先計算機が障害の発生した第1の計算機の処理を引き継ぐことを特徴とするデータ複製システム。
  18. 請求項17に記載のデータ複製システムであって、
    前記整合性保証部は、
    前記不整合状態である電文の受信状態が、前記第2の計算機のうちの少なくとも1つが前記電文を受信する前の受信状態であることを判定する第1の判定部と、
    前記判定の結果が前記電文を受信する前の受信状態であれば、前記系切り替え先計算機が前記第2の計算機に当該電文の削除を指令する第1の整合性保証部と、
    前記不整合状態である電文の受信状態が、前記第2の計算機のうちの少なくとも1つが前記電文を受信する前の受信状態であり、かつ、前記第2の計算機の少なくとも1つが前記電文を受信済みであることを判定する第2の判定部と、
    前記判定の結果が、前記第2の計算機のうちの少なくとも1つが前記電文を受信する前の受信状態であり、かつ、前記第2の計算機の少なくとも1つが前記電文を受信済みの場合に、前記電文を前記受信済みの前記第2の計算機から全ての第2の計算機に前記電文を複製する第2の整合性保証部と、
    前記電文毎に前記第1の整合性保証部と第2の整合性保証部のいずれか一方を選択する選択部と、
    を有することを特徴とするデータ複製システム。
  19. 前記請求項18に記載のデータ複製システムであって、
    前記選択部は、
    前記電文の処理内容と、前記電文を送信した第3の計算機の識別子と、前記電文が送信された時間と、前記電文の再送タイミングのうちの少なくとも一つを基準として、当該基準を満たすときに前記第1の整合性保証部を選択し、当該基準を満たさないときに前記第2の整合性保証部を選択することを特徴とするデータ複製システム。
  20. 請求項13に記載のデータ複製システムであって、
    前記第1の計算機または第2の計算機が、メモリ上でのみ前記アプリケーションの処理を実行することを特徴とするデータ複製システム。
JP2008069755A 2008-03-18 2008-03-18 データ複製方法及びデータ複製システム Expired - Fee Related JP5213108B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2008069755A JP5213108B2 (ja) 2008-03-18 2008-03-18 データ複製方法及びデータ複製システム
US12/222,281 US7865763B2 (en) 2008-03-18 2008-08-06 Data replication method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008069755A JP5213108B2 (ja) 2008-03-18 2008-03-18 データ複製方法及びデータ複製システム

Publications (2)

Publication Number Publication Date
JP2009223780A JP2009223780A (ja) 2009-10-01
JP5213108B2 true JP5213108B2 (ja) 2013-06-19

Family

ID=41090054

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008069755A Expired - Fee Related JP5213108B2 (ja) 2008-03-18 2008-03-18 データ複製方法及びデータ複製システム

Country Status (2)

Country Link
US (1) US7865763B2 (ja)
JP (1) JP5213108B2 (ja)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5691248B2 (ja) * 2010-05-28 2015-04-01 富士通株式会社 タスク引継プログラム、処理装置及びコンピュータ・システム
JP4981951B2 (ja) * 2010-06-02 2012-07-25 株式会社トライテック 分散コンピューティングシステム
JP5982842B2 (ja) * 2012-02-03 2016-08-31 富士通株式会社 コンピュータ障害監視プログラム、方法、及び装置
CN103929319B (zh) * 2013-01-11 2018-02-06 中兴通讯股份有限公司 L2tp隧道状态保活方法及装置
US20140201678A1 (en) * 2013-01-16 2014-07-17 International Business Machines Corporation Identifying and highlighting critical popups in a multi-window environment
US9311173B2 (en) 2013-03-12 2016-04-12 Honeywell International Inc. Systems and methods for increasing robustness of a system with a remote server
CN104052589B (zh) * 2013-03-15 2018-06-22 安华高科技通用Ip(新加坡)公司 容错时钟网络
US9973601B2 (en) * 2013-03-15 2018-05-15 Avago Technologies General Ip (Singapore) Pte. Ltd. Fault tolerant clock network
JP6271003B2 (ja) * 2014-06-03 2018-01-31 株式会社日立製作所 データ管理システム及びデータ管理方法
CN105045531B (zh) * 2015-07-01 2018-01-02 山东超越数控电子有限公司 一种存储双控制器间缓存同步机制
JP6686762B2 (ja) * 2016-07-22 2020-04-22 富士通株式会社 情報処理システム、情報処理装置、情報処理方法及びプログラム
US10771315B2 (en) * 2017-02-14 2020-09-08 Futurewei Technologies, Inc. High availability using multiple network elements
US10735248B2 (en) * 2018-02-12 2020-08-04 Futurewei Technologies, Inc. Cloudified N-way routing protection at hyper scale
CN108897644A (zh) * 2018-06-22 2018-11-27 山东超越数控电子股份有限公司 一种双控制器故障处理方法与系统
JP6804572B2 (ja) * 2019-01-18 2020-12-23 株式会社日立製作所 分散処理方法及び分散処理システム
US10762773B1 (en) 2019-08-19 2020-09-01 Ademco Inc. Systems and methods for building and using a false alarm predicting model to determine whether to alert a user and/or relevant authorities about an alarm signal from a security system

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05298270A (ja) * 1992-04-20 1993-11-12 Hitachi Ltd データ伝送方法
JPH11312111A (ja) * 1998-04-30 1999-11-09 Nec Corp データベース復旧方法及びデータベース管理システム
JP3887130B2 (ja) * 1999-07-30 2007-02-28 株式会社東芝 高可用性計算機システム及び同システムにおけるデータバックアップ方法
US7571215B2 (en) * 2001-07-16 2009-08-04 Bea Systems, Inc. Data replication protocol
JP2005526298A (ja) * 2001-07-16 2005-09-02 ビーイーエイ システムズ, インコーポレイテッド データ複製プロトコル
US7168001B2 (en) * 2004-02-06 2007-01-23 Hewlett-Packard Development Company, L.P. Transaction processing apparatus and method
US7461130B1 (en) * 2004-11-24 2008-12-02 Sun Microsystems, Inc. Method and apparatus for self-organizing node groups on a network
JP2006202220A (ja) * 2005-01-24 2006-08-03 Fujitsu Ltd 引継ぎ情報の整合性を確認する処理をコンピュータに実行させるプログラム及びその方法
JP4716492B2 (ja) * 2005-05-23 2011-07-06 株式会社野村総合研究所 冗長構成システムおよび第1のコンピュータシステムに障害が発生したときに第2のコンピュータシステムが直ちにリカバーする方法
US7480827B2 (en) * 2006-08-11 2009-01-20 Chicago Mercantile Exchange Fault tolerance and failover using active copy-cat

Also Published As

Publication number Publication date
US20090240974A1 (en) 2009-09-24
US7865763B2 (en) 2011-01-04
JP2009223780A (ja) 2009-10-01

Similar Documents

Publication Publication Date Title
JP5213108B2 (ja) データ複製方法及びデータ複製システム
AU2019236685B2 (en) Distributed file system using consensus nodes
US9274906B2 (en) Implementing failover processes between storage stamps
JP6382454B2 (ja) 分散ストレージ及びレプリケーションシステム、並びに方法
JP4896438B2 (ja) 分散障害許容型コンピューティングシステムにおける効率のよいレプリカセットの変更
US8285824B2 (en) Storage system and data replication method that refuses one or more requests for changing the first logical configuration information until the first storage apparatus and second storage apparatus are synchronized
US7518986B1 (en) Push-based hierarchical state propagation within a multi-chassis network device
JP4422519B2 (ja) 情報処理システム
US9612928B2 (en) Memory-mirroring control apparatus and memory-mirroring control method
JP5548829B2 (ja) 計算機システム、データ管理方法及びデータ管理プログラム
JP2004032224A (ja) サーバ引継システムおよびその方法
US20120303912A1 (en) Storage account migration between storage stamps
JP2006011581A (ja) ストレージシステム及びストレージシステムの制御方法
JP4508798B2 (ja) ストレージリモートコピー方式
US7533289B1 (en) System, method, and computer program product for performing live cloning
US11860828B2 (en) Methods, devices and systems for writer pre-selection in distributed data systems
JP4806382B2 (ja) 冗長化システム
JP2008140086A (ja) クラスタシステムおよびクラスタシステムのデータ復旧方法
JP5153310B2 (ja) フォールトトレラントコンピュータシステム、並びに再同期稼働化処理方法、及びプログラム
JP2007188119A (ja) ホットスタンバイ方式を採用したシステム及びそれに用いる同期方法
JP2021086489A (ja) 疎結合システム
JP2014241059A (ja) オンラインバックアップ制御システム及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20101014

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120309

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20121029

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121113

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130110

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130129

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130221

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 5213108

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20160308

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees