JP4612714B2 - データ処理方法、クラスタシステム、及びデータ処理プログラム - Google Patents

データ処理方法、クラスタシステム、及びデータ処理プログラム Download PDF

Info

Publication number
JP4612714B2
JP4612714B2 JP2008207708A JP2008207708A JP4612714B2 JP 4612714 B2 JP4612714 B2 JP 4612714B2 JP 2008207708 A JP2008207708 A JP 2008207708A JP 2008207708 A JP2008207708 A JP 2008207708A JP 4612714 B2 JP4612714 B2 JP 4612714B2
Authority
JP
Japan
Prior art keywords
request
computer
processing
update
data
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
JP2008207708A
Other languages
English (en)
Other versions
JP2010044553A (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 JP2008207708A priority Critical patent/JP4612714B2/ja
Priority to US12/366,731 priority patent/US8359601B2/en
Publication of JP2010044553A publication Critical patent/JP2010044553A/ja
Application granted granted Critical
Publication of JP4612714B2 publication Critical patent/JP4612714B2/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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • 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/2038Error 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 a single 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/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/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/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)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Hardware Redundancy (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、実行系と待機系を含む計算機システムに関し、特に、計算機システムに管理されるデータを提供する技術に関する。
従来、実行系及び待機系の計算機、及び不揮発性記録媒体の共有ディスクによって処理データを複製するクラスタシステムでは、実行系に障害が発生した場合には、不揮発性記録媒体に保持された処理データに待機系がアクセスすることによって系を切り替え、障害を回復させて処理を継続させていた。
近年、I/O処理速度の向上のために処理データを、不揮発性記録媒体の共有ディスクの代わりに揮発性記録媒体である揮発性メモリを利用するクラスタシステムが登場している。このようなクラスタシステムにおいては、揮発性メモリ上に保持された処理データを実行系及び待機系で共有することはできないため、実行系の障害時には処理データが失われてしまう。そのため、実行系では揮発性メモリ上に保持された処理データの更新情報を待機系に転送し、待機系は受信した更新情報を自系の揮発性メモリ上に保持された処理データに反映することによって処理データを複製し、冗長性を確保する。また、高い障害許容性が要求される場合には、複数の待機系を備え、実行系は複数の待機系に同時に処理データを転送する。
しかし、障害時に系切り替え先として、待機系を有するクラスタシステムでは、実行系が正常に稼動している間は待機系がデータ処理に活用されないため、リソースの使用効率が良くないという問題がある。
そこで、待機系を障害時の切り替え先とする用途以外に、参照要求の処理を複数の待機系で行い、更新要求の処理を実行系で行うことでシステム全体としてのデータ処理性能を向上させ、待機系のリソースを効率的に使用することが考えられる。特許文献1には、揮発性記録媒体にデータを格納するクラスタシステムにおいて、更新要求、参照要求の処理を複数の計算機に分散させて処理する技術が開示されている。
特開2002−63055号公報
特許文献1に開示された技術では、振分け装置が参照要求の入力電文を、参照処理性能が高い参照用計算機と、参照処理性能が低い更新処理用計算機のすべての計算機に送信し、参照処理を実行させる。したがって、更新処理用計算機にはすべての更新要求、参照要求が処理されることになり、頻繁に更新又は参照が要求されるシステムでは、更新処理用計算機での参照処理性能の低下がシステム全体の処理性能の低下を招く可能性がある。また、更新処理用計算機の処理データを揮発性メモリに格納した場合に障害時の処理データ複製方法が考慮されていない。
本発明の目的は、揮発性メモリにデータを格納するクラスタシステムにおいて、参照要求を待機系に振分けることによって、実行系における更新処理の処理効率を向上させ、待機系の計算機資源を活用することである。
本発明の代表的な一形態では、業務処理への処理要求を受け付け、前記業務処理を実行するとともに使用されるデータを保持する第1の計算機と、前記第1の計算機に保持されるデータの複製を保持する第2の計算機とを備え、前記第2の計算機は前記第1の計算機との通信により第1の計算機を停止すると判断した場合は、当該第1の計算機を停止して前記第2の計算機が前記処理要求を受け取り、該処理要求を処理するクラスタシステムにおけるデータ処理方法であって、前記第1の計算機は、負荷情報を含むシステム情報を格納し、前記第1の計算機は、要求毎に別の昇順のユニークな番号が割り付けられた要求識別情報を含む前記処理要求として更新要求および参照要求を受け取り、前記更新要求を受け取った場合に、当該保持するデータについて更新を行い、前記第2の計算機に当該要求識別情報を含む更新要求を送信し、前記参照要求を受け取った場合に、前記システム情報に基づいて、前記第1の計算機の負荷が所定の負荷量よりも小さいか否かを判定し、前記第1の計算機の負荷が前記所定の負荷量よりも小さい場合には、前記参照要求を処理し、前記第2の計算機は、前記ユニークな番号を含むとともに送られた参照要求および前記第1の計算機から送られた更新要求を受け取り処理要求として記憶し、該受け取って記憶している各処理要求に含まれる前記ユニークな番号の昇順に、処理要求を処理する。
本発明の一形態によれば、クラスタシステムで管理されるデータの参照処理を待機系の計算機(第2の計算機)で実行することによって、実行系の計算機(第1の計算機)の負荷を低減することによって更新処理の処理効率を向上させ、待機系の計算機資源を有効に活用することができる。
以下、本発明の実施の形態を、図面を参照して説明する。
<第1の実施の形態>
図1は、本発明の第1の実施の形態のクラスタシステムの一例を示すシステム構成図である。
本発明第1の実施の形態のクラスタシステムは、実行系の計算機1、及び、複数の待機系の計算機2〜nを含む。また、複数のクライアント101は、クラスタシステムに処理要求を送信する。実行系及び待機系の計算機(1〜n)とクライアントとは、ネットワークを介して接続される。以下、実行系の計算機1は単に「実行系」、待機系の計算機2〜nは特に指定しない限り、単に「待機系」と記述する。
クライアント101は、クラスタシステムに処理を要求する入力電文301を送信する要求送信管理部102を備える。要求送信管理部102は、入力電文301がクラスタシステムに受信された旨の応答を受信する。また、要求送信管理部102は、入力電文301の処理結果を受信する。
さらに、要求送信管理部102は、入力電文301に基づいて要求先を振分ける機能を有する要求振分け部103を含む。具体的には、入力電文301が更新要求の場合にはマルチキャスト通信を用いて複数の計算機、実行系と全待機系に入力電文301を送信する。また、参照処理の場合には、実行系、又は、待機系2〜n台の計算機のうち、いずれか1台に対して入力電文301を送信する。さらに、要求振分け部103は、各計算機が実行系であるか又は待機系であるかを認識するために、クラスタシステムの実行系又は待機系のいずれか一台の計算機の状態管理テーブル124を参照する。
実行系及び待機系の各計算機は、処理データ管理部111及びクラスタ情報管理部121を有する。実行系及び待機系の各計算機は、同じ構成である。また、実行系が障害による系切り替えによって待機系に処理が引き継がれると、処理を引き継いだ待機系は、以降、実行系として稼働する。
処理データ管理部111は、要求受信部112、処理実行部113、データ転送部114、処理データ115、仮登録キューバッファ116、処理キューバッファ117、及び更新情報バッファ118を有する。なお、要求受信部112、処理実行部113及びデータ転送部114は、後述する計算機のCPU21によって実行されるプログラムである。
以下、処理データ管理部111の各構成による処理を、実行系の場合と、待機系の場合とに分けて説明する。
まず、実行系における処理の概要について説明する。実行系の要求受信部112は、クライアント101の要求振分け部103から送信された入力電文301を受信する。さらに、入力電文301が更新要求の場合には、待機系からの入力電文301の受信完了通知を受信する。さらに、受信した入力電文301にユニークな処理キュー通番402を付与し、処理キューバッファ117に受信済み入力電文411として格納する。
処理キューバッファ117は、受信済み入力電文411を格納する領域である。処理実行部113は、処理キューバッファ117に格納された受信済み入力電文411から処理データ115を更新又は参照する。さらに、処理実行部113は、処理データ115に更新した更新情報401を更新情報バッファ118に格納する。また、処理実行部113は、自系のリソース使用状態を取得し、リソース管理テーブル125に格納する。
更新情報バッファ118は、処理データ115の更新情報401を格納する領域である。処理データ115は、処理実行部113によって実行される処理に必要なデータである。また、処理データ115は、処理を高速化させるために揮発性のメモリに記憶されている。なお、処理実行部113、処理データ115、及び更新情報バッファ118は、データベース管理システムのような処理データ管理部111と異なるアプリケーションを利用してもよい。
処理データ管理部111は、さらに、待機系にデータを送信するデータ転送部114を有する。データ転送部114は、処理実行部113によって更新された更新情報401を待機系に転送する。なお、本発明の第1の実施の形態では、実行系の揮発性メモリに格納されている処理データ115の更新情報401は、すべての待機系に転送され、当該計算機の揮発性メモリの処理データ115に反映される。
データ転送部114による更新情報401の転送方法は、各計算機に個別にデータを送信するユニキャストであってもよいし、システム内のすべての計算機に対して同時にデータを送信するマルチキャスト送信であってもよい。マルチキャスト送信を用いた場合には、転送データ量の削減を図ることができる。
また、データ転送部114は、データ転送量に応じて、事前又は転送時にデータを圧縮することなどによって転送量を抑制したり、転送経路を複数使用することによって転送経路を他の処理よりも優先的に利用したりしてもよい。
さらに、本発明の第1の実施の形態では、データ転送部114によって他系に更新情報401を同期転送する。ここでの同期転送とは待機系が更新情報401の受信を完了した応答を意味する。更新情報401を非同期で転送する場合には、障害発生時に一部の更新情報401が失われる可能性がある。したがって、データの再生が可能な場合など一部の更新情報401の欠損が許容されるシステムである場合、又は、さらに上位のシステムなどから更新情報401の再送が可能であれば適用可能である。非同期転送の場合には、他系に更新情報401を転送後、受信の完了を待たずに自系の処理を継続できるため、処理性能を向上させることができる。
前述したように、本発明の第1の実施の形態のクラスタシステムでは、参照要求が待機系によって処理される。しかし、揮発性メモリにデータが格納されるシステムにおいて待機系で参照要求を処理させる場合には、以下の問題が生じる可能性がある。
実行系は、更新要求を受け付けると、更新情報を全待機系に同期転送し、要求元に処理結果を送信する。この場合の同期転送では、待機系が更新情報の受信を完了した旨が応答されまで待機するのであって、待機系の揮発性メモリ上の処理データに更新情報が反映されるまで待機するのではない。したがって、同じ要求元(クライアント101)から更新要求と参照要求を連続して送信した場合、前回要求した更新要求による処理データの反映が遅れている場合、反映前の古いデータを参照してしまう可能性がある。
以下、待機系における処理の概要について説明する。なお、実行系と同様の処理の場合には説明を省略する。
待機系の要求受信部112は、クライアント101の要求振分け部103によって送信された入力電文301を受信する。また、入力電文301が更新処理の場合には、実行系に入力電文301の受信完了通知を送信する。さらに、受信した入力電文301が更新要求の場合には、実行系の要求受信部112で割り当てられた処理キュー通番402を付与した後に仮登録キューバッファ116に受信済み入力電文411として格納する。
一方、待機系の要求受信部112は、入力電文301が参照要求の場合には、参照要求を受信する前に仮登録キューバッファ116に格納されている受信済み入力電文411から、同一クライアントからの更新要求を検索する。同一クライアントからの更新要求が存在する場合には、同一クライアントの受信済み入力電文411が処理キューバッファ117に移動するまで待機してから処理キューバッファ117に格納する。
さらに、実行系と待機系の参照結果が一致する必要があるシステムの場合には、待機系の要求受信部112は、仮登録キューバッファ116に格納されているすべての入力電文301が処理キューバッファ117に格納されるまで待機する。すなわち、待機系で参照要求の入力電文を受け付ける前に実行系で処理されている更新要求が存在する場合には、すべての更新要求が完了してから参照要求を処理する。
なお、待機系の要求受信部112は、同一クライアントからの更新要求を検索した結果、同一クライアントからの更新要求が仮登録キューバッファ116に含まれていない場合には、待機せずに参照要求を処理キューバッファ117に格納してもよい。
仮登録キューバッファ116は、待機系において更新要求の受信済み入力電文411を格納する領域である。
処理実行部113は、処理キューバッファ117に格納された受信済み入力電文411から処理データ115を参照する。また、受信済み入力電文411が更新要求の場合には、更新情報バッファ118に格納されている更新情報401を処理データ115に反映する。さらに、処理実行部113は、自系のリソース使用状態を取得し、リソース管理テーブル125に格納する。処理データ115は、処理実行部113によって実行される処理に必要なデータである。
データ転送部114は、実行系の処理実行部113によって処理された更新情報401を受信する。さらに、受信した実行系の更新情報401を更新情報バッファ118に格納し、更新情報401と対応する仮登録キューバッファ116に格納されている受信済み入力電文411を処理キューバッファ117に移動させる。
以上のように、待機系で参照要求が処理されることによって、更新要求に続けて参照要求が送信された場合であっても、更新後の処理データ115を参照することができる。
続いて、クラスタ情報管理部121について説明する。クラスタ情報管理部121は、実行系及び待機系で同じ機能を有する。
クラスタ情報管理部121は、クラスタ情報転送部122、参照処理判定部123、状態管理テーブル124、及びリソース管理テーブル125を有する。
クラスタ情報転送部122は、クラスタ情報を他系に転送したり、他系から転送されたクラスタ情報を受信したりする。状態管理テーブル124は、各計算機の稼働状態を格納する。リソース管理テーブル125は、各計算機のリソースの使用状況を格納する。参照処理判定部123は、自系が実行系である場合にリソース管理テーブル125を参照し、参照処理を実施すべきか否かを判定し、結果を状態管理テーブル124に格納する。
ここで、クラスタ情報管理部の動作について、実行系と待機系における各処理を関連づけて説明する。
まず、クラスタ情報管理部121は、処理データ管理部111を監視することによって、自系のプロセス障害を検出し、他系の計算機に状態を通知することができる。さらに、実行系に障害が発生した場合には、稼動中の待機系から1台の待機系を実行系として動作するように系切り替えを実行する。処理データ管理部111による監視は、リソース使用状況を表すリソース管理テーブル125を通信することによって使用状況を測定できたか否かを検出する方法であってもよいし、他の通信によって直接的又は間接的に処理データ管理部111を監視する方法であってもよい。さらに、実行系のクラスタ情報管理部121は、リソース管理テーブル125のリソース使用率に基づいて実行系と待機系を比較し、待機系の負荷が実行系よりも高い場合に状態管理テーブル124の参照処理判定を「可」に変更し、実行系においても参照処理を実行させる。待機系のクラスタ情報管理部121は、リソース管理テーブル125のリソース使用率に基づいて自系のリソース使用率が高い場合に状態管理テーブル124の参照処理判定を「否」に変更し、他の計算機に参照処理を実行させる。
図2Aは、本発明の第1の実施の形態の計算機のハードウェア構成を示す図である。
実行系及び待機系の各計算機は、前述したように同じ構成である。各計算機は、CPU21、ディスプレイ装置22、キーボード23、マウス24、ネットワークインタフェースカード(NIC)25、ハードディスク装置26及びメモリ27を備える。CPU21、ディスプレイ装置22、キーボード23、マウス24、NIC25、ハードディスク装置26及びメモリ27は、バス28によって接続される。
実行系及び待機系の各計算機は、NIC25を介してネットワークに接続し、他の計算機と相互に通信する。
CPU21は、メモリ27に記憶されたプログラムを実行する。メモリ27は、CPU21によって実行されるプログラム及び当該プログラムの実行に必要なデータを記憶する。メモリ27は、処理管理部100、オペレーティングシステム30、処理データ管理部111及びクラスタ情報管理部121を記憶する。メモリ27は、前述のように、揮発性記録媒体である。
処理データ管理部111は、図1にて説明したように、要求受信部112、処理実行部113、データ転送部114、処理データ115、仮登録キューバッファ116、処理キューバッファ117、及び更新情報バッファ118を含む。要求受信部112、処理実行部113及びデータ転送部114は、CPU21によって実行されるプログラムである。
クラスタ情報管理部121は、図1にて説明したように、クラスタ情報転送部122、参照処理判定部123、状態管理テーブル124、及びリソース管理テーブル125を含む。クラスタ情報転送部122及び参照処理判定部123は、CPU21によって実行されるプログラムである。
処理管理部100は、オペレーティングシステム30上で実行されるプログラムである。処理データ管理部111及びクラスタ情報管理部121に含まれるプログラムは、処理管理部100によって呼び出される。処理データ管理部111及びクラスタ情報管理部121に含まれるプログラムによって、図1にて説明した処理が実行される。
処理データ115は、業務処理で使用されるデータである。処理データ115は、図1にて説明したように、データベース管理システムのような処理データ管理部111とは異なるアプリケーションを用いてもよい。この場合、データベース管理システムは、メモリ27に記憶される。
仮登録キューバッファ116は、図1にて説明したように、待機系において更新要求の入力電文301を格納する領域である。処理キューバッファ117は、図1にて説明したように、入力電文301を格納する領域である。更新情報バッファ118は、図1にて説明したように、処理データ115の更新情報401を格納する領域である。
状態管理テーブル124は、図1にて説明したように、各計算機の稼働状態を格納する。リソース管理テーブル125は、図1にて説明したように、各計算機のリソース使用状況を格納する。
ディスプレイ装置22は、業務処理の実行結果など各種情報を表示する。キーボード23及びマウス24は、利用者からの入力を受け付ける。NIC25は、ネットワークに接続する。ハードディスク装置26は、メモリ27に格納される処理データ、及びメモリ27にロードされるプログラムなどを格納する。
また、クライアント101のハードウェア構成は、図2に示した計算機のハードウェア構成と同様であって、CPU、メモリ、NIC及び入出力装置などを備える。なお、クライアント101は、仮想計算機上で実行されるプログラムによって実現されてもよい。
図2Bは、本発明の第1の実施の形態のクライアントのハードウェア構成を示す図である。
各クライアントは、CPU41、ディスプレイ装置42、キーボード43、マウス44、ネットワークインタフェースカード(NIC)45、ハードディスク装置46及びメモリ47を備える。CPU41、ディスプレイ装置42、キーボード43、マウス44、NIC45、ハードディスク装置46及びメモリ47は、バス48によって接続される。
各クライアントは、NIC45を介してネットワークに接続し、実行系及び待機系の各計算機と通信する。
CPU41は、メモリ47に記憶されたプログラムを実行する。メモリ47は、CPU41によって実行されるプログラム及び当該プログラムの実行に必要なデータを記憶する。メモリ47は、要求送信管理部102を記憶する。メモリ27は、前述のように、揮発性記録媒体である。
要求送信管理部102には、要求振分け部103が含まれる。要求振分け部103は、前述したように、オペレーティングシステム50上でCPU41によって実行されるプログラムである。
図3は、本発明の第1の実施の形態のクライアント101がクラスタシステムに対して送信する入力電文301の一例を示す図である。
入力電文301は、クライアント識別子302、送信元IPアドレス303、要求種別304、送信時刻305、及び要求内容306を含む。なお、入力電文を統括して説明する場合には、入力電文301とし、個別の入力電文について言及する場合には、入力電文301Aなどとする。
クライアント識別子302は、送信元のクライアント101を一意に示す識別情報である。送信元IPアドレス303は、送信元のIPアドレスを示す情報である。要求種別304は、入力電文301が更新要求か参照要求かを示す情報である。
送信時刻305は、入力電文301を送信した時刻である。ここで、送信時刻305は、クライアントが送信した順序を表す情報であればよく、例えば、送信順序を表す通番などであってもよい。要求内容306は、処理データ115を更新又は参照するための具体的な情報である。
図4Aは、本発明の第1の実施の形態の仮登録キューバッファ116及び処理キューバッファ117に格納される受信済み入力電文411の一例を示す図である。
受信済み入力電文411は、処理キュー通番402、及び入力電文301の構成情報302〜306を含む。なお、図4Aに示した受信済み入力電文411Aは入力電文301Aに、受信済み入力電文411Bは入力電文301Bに対応する。なお、受信済み入力電文を統括して説明する場合には、受信済み入力電文411とし、個別の受信済み入力電文について言及する場合には、受信済み入力電文411Aなどとする。
処理キュー通番402は、実行系の要求受信部112で更新要求の入力電文301の受信を完了するたびにインクリメントされた通番が格納される。
図4Bは、本発明の第1の実施の形態の更新情報バッファ118に格納される更新情報401の一例を示す図である。
更新情報401は、処理キュー通番402、コミット通番403、行ID404、操作種別405、及び行データ406を含む。
コミット通番403は、実行系の処理実行部113で更新要求を処理するトランザクション単位に通番が割り当てられる。同一のトランザクション内で複数の行が挿入、更新又は削除された場合には、同一のコミット通番が割り当てられる。
行ID404は、操作された行を特定する識別子である。操作種別405は、操作された行に対して実行された操作の種類である。操作種別405は、「挿入」、「更新」又は「削除」のいずれかの値が格納される。行データ406は、更新されるデータの内容である。操作種別405が挿入である場合には、挿入された行のデータが格納される。また、操作種別405が更新である場合には、更新後の行データ406が格納される。
図5Aは、本発明の第1の実施の形態の処理データ115に格納されるデータベースデータ501の一例を示す図である。
データベースデータ501は、行ID503、列1〜n(504)を含む。行ID503は、各行を一意に識別する値である。列1〜n(504)は、更新又は参照されるデータが格納されている。
図5Bは、本発明の第1の実施の形態のコミット通番を格納する表の一例である。
コミット通番502は、トランザクションのコミットの順序を示す値を表し、実行系コミットされる度にインクリメントされる。
図6は、本発明の第1の実施の形態の状態管理テーブル124の一例を示す図である。
状態管理テーブル124は、クラスタ情報管理部121によって管理される。状態管理テーブル124は、サーバ識別子602、IPアドレス603、状態604、及び参照処理可否605を含む。
サーバ識別子602は、各計算機を一意に識別する識別情報である。IPアドレス603は、各計算機のIPアドレスである。状態604は、各計算機が実行系であるか、又は待機系であるかを示す情報である。
参照処理可否605は、参照処理を実行する場合には「可」、参照処理を実行しない場合には「否」が格納される。
図7は、本発明の第1の実施の形態のリソース管理テーブル125の一例を示す図である。
リソース管理テーブル125は、サーバ識別子702、状態703、CPU使用率704、メモリ使用率705、及びネットワーク使用率706を含む。リソース管理テーブル125は、クラスタ情報管理部121によって管理される。
サーバ識別子702は、各計算機を一意に表す識別情報である。状態703は、各計算機が実行系であるか、又は、待機系であるかを示す情報である。
CPU使用率704、メモリ使用率705、及びネットワーク使用率706は、各計算機のCPU使用率、メモリ使用率、及びネットワーク使用率を示す情報である。なお、図7に示すリソースは一例であり、処理データ管理部111の動作に影響を与える計算機のリソースであれば、他のリソースを含んでもよい。さらに、すべてのリソースを含む必要はなく、少なくとも一つのリソースの使用率が含まれていればよい。
図8は、本発明の第1実施の形態のクラスタシステムに処理要求を送信するクライアント101の処理手順を示すフローチャートである。
本処理は、クライアント101がクラスタシステムに処理を要求する際に、要求送信管理部102によって実行される。
クライアント101は、まず、クラスタシステムのいずれか一台の計算機から状態管理テーブル124を取得する(S802)。さらに、取得された状態管理テーブル124を参照し、実行系及び待機系のIPアドレス603を取得する。なお、処理要求を送信するたびに状態管理テーブル124を取得するのではなく、事前に取得しておいてもよい。この場合には、周期的に状態管理テーブル124の更新を確認する必要がある。
次に、クライアント101は、要求振分け部103によって、要求種別を判定する(S803)。要求種別は、更新要求又は参照要求のいずれかである。
クライアント101は、要求種別が更新要求の場合には(S803の結果が「更新要求」)、入力電文301を実行系とすべての待機系にマルチキャスト送信する(S804)。
クライアント101は、実行系から入力電文301の送達確認を受信する(S805)。その後、処理結果を受信し(S808)、本処理を終了する。
クライアント101は、要求種別が参照要求の場合には(S803の結果が「参照要求」)、状態管理テーブル124から参照処理可否605の値が「可」の実行系又は待機系のいずれか一台の計算機を選択し、入力電文301を送信する(S806)。送信先は、クラスタシステムを構成する各計算機間で分散されればよく、例えば、ラウンドロビンで決定されてもよいし、業務内容によって送信先を決定されるようにしてもよい。
クライアント101は、その後、送信先の実行系又は待機系から入力電文301の送達確認を受信する(S807)。さらに、処理結果を受信し(S808)、本処理を終了する。
図9は、本発明の第1の実施の形態によるクライアント101から送信された入力電文301を受信する実行系及び待機系の要求受信部112の処理手順を示す図である。
まず、実行系の処理について説明する。
実行系のCPU21は、クライアント101から送信された入力電文301を受信すると(S902)、すべての待機系から入力電文301を受信した旨のメッセージT101を受信するまで待機する(S903)。
実行系のCPU21は、すべての待機系から入力電文301を受信した旨のメッセージT101を受信すると、クライアント101に入力電文301の送達確認を送信する(S904)。
実行系のCPU21は、次に、すべての待機系に入力電文301の確定通知メッセージT102を送信する(S905)。その後、待機系から入力電文確定済みメッセージT103を受信する(S906)。すべての待機系から入力電文確定済みメッセージT103を受信した後、入力電文301を処理キューバッファ117に受信済み入力電文411として格納し(S907)、本処理を終了する。
次に、待機系の処理について説明する。なお、以下の説明では、1台の待機系の処理手順を示しているが、他の待機系の処理手順についても同様である。
待機系のCPU21は、クライアント101から送信された入力電文301を受信すると(S922)、入力電文301の要求種別304に基づいて、更新要求か参照要求かを判定する(S923)。
待機系のCPU21は、クライアント101から送信された入力電文301が更新要求の場合には(S923の結果が「更新要求」)、実行系に入力電文301の受信が完了したことを通知するメッセージT101を送信する(S924)。その後、実行系から入力電文301の確定通知メッセージT102が送信されるまで待機する(S925)。
待機系のCPU21は、実行系から入力電文301の確定通知メッセージT102を受信すると、すべての実行系及び待機系で入力電文301が受信されたことが保証され、入力電文301を受信済み入力電文411として仮登録キューバッファ116に格納する(S926)。障害による系切り替え発生の際には、仮登録キューバッファ116に登録された受信済み入力電文411が処理キューバッファ117に移されて、実行される。
なお、更新要求に対応する入力電文301を待機系が受信したタイミングでは、実行系で付与される処理キュー通番402を取得することができない。そこで、入力電文301の確定通知メッセージT102に、当該更新要求に対応する受信済み入力電文411の処理キュー通番402を含めることによって、実行系から待機系に受信済み入力電文411の処理キュー通番402を通知する。
待機系のCPU21は、次に、実行系に入力電文確定済みメッセージT103を送信し(S927)、本処理を終了する(S932)。
待機系のCPU21は、クライアント101から送信された入力電文301が参照要求の場合には(S923の結果が「参照要求」)、クライアント101に入力電文301の送達確認を送信する(S928)。
待機系のCPU21は、次に、クライアント識別子が同じであって、かつ、送信時刻が受信した入力電文301よりも前の受信済み入力電文411が、仮登録キューバッファ116に存在するか否かを判定する(S929)。
待機系のCPU21は、該当する受信済み入力電文411が存在する場合には(S929の結果が「YES」)、該当する受信済み入力電文411が処理キューバッファ117に移されるまで待機する(S930)。その後、対応する受信済み入力電文411を処理キューバッファ117に格納し(S931)。本処理を終了する。
待機系のCPU21は、該当する受信済み入力電文411が存在しない場合には(S929の結果が「NO」)、処理キューバッファ117にクライアント101から送信された入力電文301を格納し(S931)、本処理を終了する。
ここで、実行系又は待機系で送受信するメッセージ(T101、T102、T103)には、メッセージを識別可能な情報を含めて送信してもよい。例えば、入力電文301又は受信済み入力電文411のクライアント識別子及び送信時間を含めてもよい。これによって、メッセージが識別可能となり、実行系受信処理及び待機系受信処理の複数同時起動が可能となる。
図10は、本発明の第1の実施の形態の処理実行部113の処理手順を示すフローチャートである。
本処理は、実行系及び待機系の処理キューバッファ117に受信済み入力電文411が格納された場合に、処理実行部113によって実行される。
実行系又は待機系のCPU21は、処理キューバッファ117に受信済み入力電文411が格納されると、まず、自系の状態管理テーブル124を参照し、状態604を取得する(S002)。取得された状態604に基づいて、自系が実行系か待機系かを判定する(S003)。
CPU21は、自系が実行系の場合には(S003の結果が「実行系」)、受信済み入力電文411の要求種別304に基づいて、要求された処理が参照要求か更新要求かを判定する(S004)。
CPU21は、要求された処理が参照要求の場合には(S004の結果が「参照要求」)、参照処理を実行する(S005)。具体的に参照処理について説明すると、まず、入力電文301の要求内容306に基づいて処理データ115を参照し、クライアント101に処理結果を送信する。そして、自系の処理キューバッファ117に格納されている入力電文301を削除する。
一方、CPU21は、要求された処理が更新要求の場合には(S004の結果が「更新要求」)、実行系更新処理を実行する(S007)。実行系更新処理の詳細については、図11にて後述する。
CPU21は、自系が待機系の場合には(S003の結果が「待機系」)、受信済み入力電文411の要求種別304に基づいて、要求された処理が参照要求か更新要求かを判定する(S009)。
CPU21は、要求された処理が参照要求の場合には(S009の結果が「参照要求」)、参照処理を実行する(S010)。S010の参照処理は、S005の参照処理と同様である。一方、要求された処理が更新要求の場合には(S009の結果が「更新要求」)、待機系更新処理を実行する(S012)。待機系更新処理の詳細については、図12にて後述する。
以上の処理では、実行系と待機系の処理をあわせて説明するために、処理実行部113が、状態管理テーブル124を毎回参照する手順を一例として説明したが、系の状態が変更されない場合には、状態管理テーブル124を参照する処理(S002)、及び系の状態の判定する処理(S003)は省略してもよい。例えば、各計算機の系の状態が、実行系に障害が発生し、系切り替えが行われた場合にのみ、S002及びS003の処理を実行すればよい。
図11は、本発明の第1の実施の形態の実行系における更新処理(S007)の手順を示すフローチャートである図である。
実行系のCPU21は、まず、入力電文301の要求内容306に基づいて、実行系の処理データ115を更新する。さらに、待機系に送信する更新情報401を生成する(S202)。このとき、更新情報401には、入力電文301に対応する処理キュー通番と、トランザクション単位でインクリメントされたコミット通番403が付与される。
なお、待機系では、実行系から送信された更新情報401をコミット通番403の順で処理データ115に反映する。したがって、コミット通番の重複又は欠番が生じないように実行系のコミット通番403の更新には排他処理を行う必要がある。コミット通番403の更新に排他処理を行うことによって、実行系の更新処理(S007)を複数同時に実行した場合であっても実行系と待機系の処理データ115を反映する順序の整合性を保証することができる。
次に、CPU21は、更新情報401を更新情報バッファ118に格納する(S203)。さらに、更新情報401を全待機系のデータ転送部114に送信する実行系データ転送処理を実行する(S204)。
CPU21は、S202の処理で実行された処理データ115の更新、及びコミット通番502の更新を確定する(S205)。その後、クライアント101に処理結果を送信する(S206)。さらに、実行系の処理キューバッファ117に格納された受信済み入力電文411を削除する(S207)。最後に、更新情報バッファ118の更新情報401を削除し(S208)、本処理を終了する。
図12は、本発明の第1の実施の形態の待機系における更新処理(S012)の手順を示すフローチャートである。
待機系のCPU21は、図9の待機系受信処理で受信した受信済み入力電文411に含まれる処理キュー通番402と同じ値の処理キュー通番402を含む更新情報401を、更新情報バッファ118から検索する(S211)。さらに、該当する更新情報401のコミット通番403と、待機系の処理データ115のコミット通番502とが一致しない場合には、コミット通番502が一致するまで待機する(S212)。更新情報401のコミット通番403と、待機系の処理データ115のコミット通番502とが一致しない場合とは、例えば、実行系から待機系への更新情報401の転送時に追抜きが発生し、待機系の処理データ115のコミット通番502に抜けがある場合などである。
次に、待機系のCPU21は、該当する更新情報401を処理データ115に反映させ、処理データ115への反映とコミット通番502の更新を確定する(S213)。その後、待機系の処理キューバッファ117に格納された受信済み入力電文411を削除する(S214)。最後に、更新情報バッファ118の更新情報401を削除し(S215)、本処理を終了する。
図13は、本発明の第1の実施の形態の実行系のデータ転送処理(S204)及び待機系のデータ転送処理の手順を示すフローチャートである。
データ転送処理は、実行系又は待機系のデータ転送部114によって実行される。
実行系のデータ転送処理(S204)では、実行系のCPU21は、まず、更新情報バッファ118に格納された更新情報401をすべての待機系に送信する(S302、T201)。ここで、データ転送部114による更新情報401の転送方法は、前述したように、各計算機に個別にデータを送信するユニキャストであってもよいし、システム内のすべての計算機に対して同時にデータを送信するマルチキャストであってもよい。マルチキャストによって、転送データ量の削減を図ることができる。
次に、実行系のCPU21は、更新情報401の受信完了メッセージT202を、すべての待機系から受信するまで待機する(S303)。その後、すべての待機系に更新情報401の同期が完了した通知T203を送信し(S304)、本処理を終了する。
一方、待機系のデータ転送処理では、待機系のCPU21は、更新情報401を受信するまで待機する(S322、T201)。更新情報401を受信すると、更新情報バッファ118に更新情報401を格納する(S323)。そして、実行系に更新情報の受信完了メッセージT202を送信する(S324)。その後、実行系から更新情報401の同期済み通知T203が送信されるまで待機する(S325)。
待機系のCPU21は、実行系から同期済み通知T203を受信すると、更新情報401のコミット通番403と、待機系の処理データ115のコミット通番502とが一致するまで待機する(S326)。
待機系のCPU21は、次に、更新情報401の処理キュー通番402と同一の処理キュー通番を含む受信済み入力電文411を仮登録キューバッファ116から検索する(S327)。その後、該当する受信済み入力電文411を処理キューバッファ117に格納する(S328)。さらに、該当する受信済み入力電文411を仮登録キューバッファ116から削除し(S329)、本処理を終了する。
図14は、本発明の第1の実施の形態のクラスタ情報管理部121の参照処理判定部123参照処理を実施するか否かを判定する手順を示すフローチャートである。
実行系又は待機系のCPU21は、まず、状態管理テーブル124及びリソース管理テーブル125を取得する(S402)。
CPU21は、次に、取得されたリソース管理テーブル125から、リソースの使用率を取得する。本発明の第1の実施の形態では、CPU使用率704、メモリ使用率705、及びネットワーク使用率706である。そして、以下の計算式に基づいて、実行系及び待機系についてリソース使用率を算出する(S403)。
リソース使用率 =
(1−CPU使用率)×(1−メモリ使用率)×(1−ネットワーク使用率)
なお、リソース使用率の計算方法について、以上に示した計算式は一例であって、他の計算式を使用してもよい。また、単にCPU使用率の値を用いてもよいし、同様にメモリ使用率又はネットワーク使用率の値を用いてもよい。
CPU21は、自系の状態管理テーブル124を参照し、状態604を取得し、自系が実行系か待機系かを判定する(S404)。
CPU21は、自系が実行系の場合には(S404の結果が「実行系」)、実行系のリソース使用率がすべての待機系のリソース使用率よりも小さいか否かを判定する(S405)。
CPU21は、実行系のリソース使用率がすべての待機系のリソース使用率よりも小さい場合には(S405の結果が「YES」)、状態管理テーブル124の参照処理可否605を「可」に設定する(S406)。一方、実行系のリソース使用率よりも低いリソース使用率の待機系が存在する場合には(S405の結果が「NO」)、状態管理テーブル124の参照処理可否605を「否」に設定する(S407)。
なお、実行系と待機系のリソース使用率を比較する方法としては、実行系のリソース使用率と、すべての待機系のリソース使用率の平均値を比較してもよいし、予めリソース使用率の閾値を設定し、実行系のリソース使用率が閾値より低く、待機系のリソース使用率が閾値より高い場合に実行系で参照処理を実行するとしてもよい。
一方、CPU21は、自系が待機系の場合には(S404の結果が「待機系」)、自系のリソース使用率が他のすべての待機系のリソース使用率よりも小さいか否かを判定する(S408)。
CPU21は、自系のリソース使用率がすべての他の待機系のリソース使用率よりも小さい場合には(S408の結果が「YES」)、状態管理テーブル124の参照処理可否605を「可」に設定する(S409)。一方、自系のリソース使用率よりも低いリソース使用率の待機系が存在する場合には(S408の結果が「NO」)、状態管理テーブル124の参照処理可否605を「否」に設定する(S410)。
図14に示した例では、リソースの例として、CPU、メモリ、及びネットワークについて説明したが、各計算機で用いられるその他のハードウェア要素を用いてもよい。また、リソース使用率を表す情報として、各使用率に基づいて説明したが、直接的又は間接的にリソース使用率を表す指標を利用してもよい。
図15A及び図15Bは、本発明の第1の実施の形態のクライアント1及びクライアント2から送信された要求をクラスタシステムが処理する手順の一例を説明する図である。図15A及び図15Bは、本発明の第1の実施の形態の処理全体を説明するための図であり、一部の処理は省略されている。詳細な各処理手順については、前述したとおりである。図15A及び図15Bに示す例において、クライアント101からクラスタシステムに要求される処理は、図3に示した入力電文301A、301B、301C及び301Dに対応する。
図15Aは、クライアント1が更新要求1の入力電文を送信した後に、クライアント2が更新要求2の入力電文を送信した場合を示す図である。
まず、クライアント1は、実行系及び待機系に更新要求1をマルチキャスト送信する(U0001)。実行系及び待機系は、要求受信部112によって、入力電文301の受信を確定する(U0002)。
実行系は、処理キューバッファ117に入力電文301を受信済み入力電文411として格納する(U0003)。また、待機系は、仮登録キューバッファ116に入力電文301を受信済み入力電文411として格納する(U0003)。
次に、実行系では、処理実行部113が処理キューバッファ117の受信済み入力電文411を取得する(U0004)。そして、取得された受信済み入力電文411に基づいて更新処理を実行し、さらに、更新情報401を生成して更新情報バッファ118に格納する(U0005)。その後、データ転送部114によって更新情報401をすべての待機系に送信する(U0006)。
実行系は、処理データ115に更新情報を反映し、更新処理を確定する(U0007)。最後に、クライアント1に結果を送信する(U0008)。
待機系では、データ転送部114によって、実行系から送信された更新情報401を受信すると、受信した更新情報401を更新情報バッファ118に格納する(U0006)。その後、仮登録キューバッファ116に格納されており、更新情報401の処理キュー通番402と同じ処理キュー通番402を有する受信済み入力電文411を自系の処理キューバッファ117に格納する(U0009)。
次に、待機系は、処理実行部113によって、処理キューバッファ117の受信済み入力電文411を処理する(U0010)。そして、受信済み入力電文411の処理キュー通番402と同一の、更新情報バッファ118に格納されている更新情報401に基づいて自系の処理データ115に更新を反映する(U0011)。
次に、クライアント2では、同様に、更新要求2を実行系及び待機系にマルチキャスト送信する(U0012)。以降、クライアント1と同様の手順で処理され、実行系と待機系での入力電文の格納、及び実行系による更新要求2の実行といった処理(U0005〜U0007に相当する処理)が実行され、実行系から更新要求2の結果をクライアント2に送信する(U0013)。
図15Bは、クライアント1が更新要求1、クライアント2が更新要求2をクラスタシステムに送信し、実行系から処理結果を受信した後に、クライアント1が参照要求3、クライアント2が参照要求4の入力電文をクラスタシステムに送信した場合を示す図である。なお、図15Bに示した時点では、待機系がクライアント2の更新要求2により実行された更新情報を待機系では受信しているが(図15AのU0006に相当、U0100)、処理データに反映する処理(図15AのU0009〜U0011に相当)が未実行であって、更新情報が反映されていない状態である。
まず、クライアント1は、更新要求2の結果をクライアント2が受信した後(図15AのU0013)、参照要求3を待機系のいずれか一台の計算機(ここでは、計算機2)に送信する(U0101)。参照要求3を受信した待機系の計算機2は、要求受信部112によって、受信した参照要求3の入力電文301と、仮登録キューバッファ116に格納されている参照要求3よりも前に受信した受信済み入力電文411とを比較し、同一クライアントからの更新要求であって、未反映の受信済み入力電文411が含まれるか否かを判定する。
ここで、仮登録キューバッファ116に含まれる更新要求2はクライアント2からの更新要求であるため、クライアント1による参照要求3の入力電文301は、更新要求2の処理完了を待たずに、処理キューバッファ117に受信済み入力電文411として格納される(U0102)。その後、処理実行部113が処理キューバッファ117の受信済み入力電文411を取得する(U0103)。そして、参照要求3の処理を実行し(U0104)、実行結果をクライアント1に送信する(U0105)。
その後、待機系の計算機2は、実行系から受信済みの更新要求2に対応する更新情報401の処理キュー通番402が一致し、かつ、仮登録キューバッファ116に格納されている受信済み入力電文411を、自系の処理キューバッファ117に格納する(U0106)。続いて、図15Aにおける更新要求1の場合と同様に、処理キューバッファ117から更新要求2の受信済み入力電文411が取得され、処理データ115に更新情報401が反映される(U0107)。
次に、クライアント2は、更新要求2の処理結果を受信した後(図15AのU0013)、参照要求4を待機系のいずれか一台の計算機(ここでは、計算機n)に送信する(U0108)。参照要求4を受信した待機系の計算機nは、要求受信部112によって、受信した参照要求4の入力電文301と、仮登録キューバッファ116に格納されている参照要求4よりも前に受信した受信済み入力電文411とを比較し、同一クライアントからの更新要求であって、未反映の入力電文301が含まれるか否かを判定する。
更新要求2は、クライアント2から送信された入力電文301であって、参照要求4と同一のクライアントから送信されている。したがって、更新要求2の受信済み入力電文411が自系の処理キューバッファ117に格納される(U0110)まで待機し、その後、参照要求4の入力電文301が処理キューバッファ117に受信済み入力電文411として格納される(U0109)。このように、同一のクライアントからの更新要求の入力電文301が存在している場合には、更新要求の入力電文が処理キューバッファ117に格納されるまで待機する。
その後、待機系の計算機nは、処理実行部131によって、更新要求2の受信済み入力電文411を処理する(U0111)。そして、受信済み入力電文411の処理キュー通番402と同一の、更新情報バッファ118に格納されている更新情報401に基づいて自系の処理データに更新を反映する(U0112)。続いて、処理キューバッファ117に格納されている参照要求4の受信済み入力電文411に基づいて、参照要求4を処理し(U0113)、結果をクライアント2に送信する(U0114)。
以上、図15A及び図15Bに示したように、クライアントが更新要求を送信し、実行結果が応答された場合には、更新要求が反映された後の状態のデータが提供されることが保証される。
なお、本発明の第1の実施の形態では、待機系又は実行系のうちの1台が参照処理を実行する場合について説明したが、参照処理を複数の計算機で実行させる場合にも適用可能である。複数の計算機で参照処理を実行する場合には、複数の計算機から実行結果が応答されるが、例えば、最も早い応答を実行結果としてクライアントに応答してもよい。この場合には、待機系で実行系の処理結果の反映処理が遅延し、参照処理の遅延を生じるような場合においても、参照結果を遅延せずに取得することができる。
また、複数の計算機で参照処理を実行する場合において、複数の計算機からの実行結果をすべて受信するまで待機し、すべての実行結果を比較し、多数決によって実行結果を決定し、クライアントに応答してもよい。この場合には、クラスタシステムの少数の計算機にメモリ障害など異常が発生し、誤ったデータが応答された場合であっても、他の多数の計算機によって応答された正しい参照結果を取得することが可能である。
本発明の第1の実施の形態によれば、参照要求を実行系と待機系の少なくとも1台に振分けることによって、実行系の更新処理の処理効率向上と待機系のリソース活用を図ることができる。
さらに、本発明の第1の実施の形態によれば、待機系が参照要求を処理する場合であっても、データの整合性を保証することができる。
<第2の実施の形態>
本発明の第1の実施の形態では、クライアントが要求振分け部103を保持していたが、本発明の第2の実施の形態では、実行系及び待機系が要求振分け部110を保持する。したがって、クライアントからの要求が、実行系及び待機系によって振分けられる。
なお、第2の実施の形態において、第1の実施の形態と共通する内容については適宜説明を省略する。
図16は、本発明の第2の実施の形態のクラスタシステムの一例を示すシステム構成図である。
本発明の第2の実施の形態のクラスタシステムは、第1の実施の形態と同様に、実行系の計算機1、及び、複数の待機系の計算機2〜nを含む。また、複数のクライアントはクラスタシステムへ処理要求を送信する。実行系及び待機系の計算機(1〜n)とクライアントとは、ネットワークを介して接続される。
クライアント101は、クラスタシステムに処理要求を送信する。クライアント101は、要求送信管理部102を有する。
要求送信管理部102は、クラスタシステムのいずれか一台の計算機に処理を要求する入力電文301を送信する。要求送信管理部102は、さらに、クラスタシステムが入力電文301を受信された旨の応答を受信する。また、要求送信管理部102は、入力電文301の処理結果を受信する機能を含む。
クライアント101は、クラスタシステムに処理要求を送信する場合、まず、要求送信管理部102によって、クラスタシステムのいずれか一台の計算機に入力電文301を送信する。このとき、送信先は、クラスタシステムを構成する各計算機間で分散されればよく、例えば、ラウンドロビンで決定されてもよい。そして、送信先の実行系又は待機系から入力電文301の送達確認を受信する。その後、送信先の計算機で要求された処理が終了すると、クライアント101は、送信先の計算機から処理結果を受信する。
実行系及び待機系の各計算機は、要求振分け部110、処理データ管理部111、及びクラスタ情報管理部121を有する。クラスタシステムに含まれる実行系及び待機系の各計算機は、同じ構成である。
要求振分け部110は、クライアント101から送信された入力電文301の要求先を振分ける機能を有する。入力電文301が更新要求の場合はマルチキャスト通信によって、複数の計算機、すなわち、実行系と全待機系に入力電文301を送信する。一方、参照処理の場合には、実行系又は待機系の少なくとも一台に対して入力電文301を送信する。また、要求振分け部110は、各計算機が実行系又は待機系であるかを、自系の状態管理テーブル124から取得する機能を含む。
なお、クライアント101から送信された入力電文301を実行系が受信し、実行系が待機系に入力電文301を転送するようにしてもよい。
処理データ管理部111及びクラスタ情報管理部121は、本発明の第1の実施の形態と同様である。
図17は、本発明の第2の実施の形態の実行系又は待機系の要求振分け部110による処理の手順を示すフローチャートである。
実行系又は待機系のCPU21は、クライアント101の要求送信管理部102から送信された入力電文301を受信すると、自系の状態管理テーブル124を取得する(S702)。そして、状態管理テーブル124から、実行系及び待機系のIPアドレス603を取得する。なお、入力電文301を受信するたびに状態管理テーブル124を取得するのではなく、事前に取得しておいてもよい。この場合には一定間隔で状態管理テーブル124が更新されていないかを確認する必要がある。
実行系又は待機系のCPU21は、次に、要求された処理が更新要求であるか参照要求であるかを判定する(S703)。具体的には、入力電文301の要求種別304に基づいて判定する。
実行系又は待機系のCPU21は、要求された処理が更新要求の場合には(S703の結果が「更新処理」)、実行系とすべての待機系に入力電文301をマルチキャスト送信する(S704)。
一方、実行系又は待機系のCPU21は、要求された処理が参照要求の場合には(S703の結果が「参照処理」)、状態管理テーブル124から待機系をいずれか1台選択し、入力電文301を送信する(S705)。ここで、状態管理テーブル124のレコードの参照処理可否605が「可」の実行系及びすべての待機系から入力電文301を送信する計算機を選択する。その後、本処理を終了する。
なお、本発明の第2の実施の形態では、クライアントからの処理要求を受信した計算機が、待機系又は実行系のいずれか1台に処理要求を振分ける場合について説明したが、第1の実施の形態で説明したように、処理要求を複数の計算機で実行させるように振分けてもよい。このとき、複数の計算機から実行結果が応答されるが、例えば、最も早い応答を実行結果としてクライアントに応答すればよい。この場合には、第1の実施の形態にて説明したように、待機系で実行系の処理結果の反映処理が遅延し、参照処理の遅延を生じるような場合においても、参照結果を遅延せずに取得することができる。
また、要求を受信した複数の計算機からクライアント101に処理結果を応答し、最も早い応答以外は無効としてもよい。この場合、要求振分け部110を介して複数の処理結果を応答する場合と比較して、要求振分け部110に障害が発生した場合であっても、クライアント101が参照結果を取得することができる。
さらに、複数の計算機で参照処理を実行する場合において、前述したように、複数の計算機からの実行結果をすべて受信するまで待機し、すべての実行結果を比較し、多数決によって実行結果を決定し、クライアントに応答してもよい。この場合には、クラスタシステムの少数の計算機にメモリ障害など異常が発生し、誤ったデータが応答された場合であっても、他の多数の計算機によって応答された正しい参照結果を取得することが可能である。
本発明の第2の実施の形態によれば、クライアント側ではクラスタシステムの構成を考慮せずに、参照要求を実行系と待機系の少なくとも1台に振分けることによって、実行系の更新処理の処理効率向上と待機系のリソース活用を図ることができる。
さらに、本発明の第2の実施の形態によれば、第1の実施の形態と同様に、待機系が参照要求を処理する場合であっても、データの整合性を保証することができる。
本発明の第1の実施の形態のクラスタシステムの一例を示すシステム構成図である。 本発明の第1の実施の形態の計算機のハードウェア構成を示す図である。 本発明の第1の実施の形態のクライアントのハードウェア構成を示す図である。 本発明の第1の実施の形態のクライアントがクラスタシステムに対して送信する入力電文の一例を示す図である。 本発明の第1の実施の形態の仮登録キューバッファ及び処理キューバッファに格納される受信済み入力電文の一例を示す図である。 本発明の第1の実施の形態の更新情報バッファに格納される更新情報の一例を示す図である。 本発明の第1の実施の形態の処理データに格納されるデータベースデータの一例を示す図である。 本発明の第1の実施の形態のコミット通番を格納する表の一例である。 本発明の第1の実施の形態の状態管理テーブルの一例を示す図である。 本発明の第1の実施の形態のリソース管理テーブルの一例を示す図である。 本発明の第1実施の形態のクラスタシステムに処理要求を送信するクライアントの処理手順を示すフローチャートである。 本発明の第1の実施の形態のクライアントから送信された入力電文を受信する実行系及び待機系の要求受信部の処理手順を示す図である。 本発明の第1の実施の形態の処理実行部の処理手順を示すフローチャートである。 本発明の第1の実施の形態の実行系における更新処理の手順を示すフローチャートである図である。 本発明の第1の実施の形態の待機系における更新処理の手順を示すフローチャートである。 本発明の第1の実施の形態の実行系のデータ転送処理及び待機系のデータ転送処理の手順を示すフローチャートである。 本発明の第1の実施の形態のクラスタ情報管理部の参照処理判定部が参照処理を実施するか否かを判定する処理の手順を示すフローチャートである。 本発明の第1の実施の形態のクライアント1及びクライアント2から送信された要求をクラスタシステムが処理する手順の一例を説明する図である。 本発明の第1の実施の形態のクライアント1及びクライアント2から送信された要求をクラスタシステムが処理する手順の一例を説明する図である。 本発明の第2の実施の形態のクラスタシステムの一例を示すシステム構成図である。 本発明の第2の実施の形態の実行系又は待機系の要求振分け部による処理の手順を示すフローチャートである。
符号の説明
1〜n 計算機
21 CPU
25 ネットワークインタフェースカード
27 メモリ
100 処理管理部
102 要求送信管理部
103 要求振分け部
110 要求振分け部
111 処理データ管理部
112 要求受信部
113 処理実行部
114 データ転送部
115 処理データ
116 仮登録キューバッファ
117 処理キューバッファ
118 更新情報バッファ
121 クラスタ情報管理部
122 クラスタ情報転送部
123 参照処理判定部
124 状態管理テーブル
125 リソース管理テーブル
131 処理実行部
301 入力電文
401 更新情報
411 受信済み入力電文

Claims (8)

  1. 業務処理への処理要求を受け付け、前記業務処理を実行するとともに使用されるデータを保持する第1の計算機と、前記第1の計算機に保持されるデータの複製を保持する第2の計算機とを備え、前記第2の計算機は前記第1の計算機との通信により第1の計算機を停止すると判断した場合は、当該第1の計算機を停止して前記第2の計算機が前記処理要求を受け取り、該処理要求を処理するクラスタシステムにおけるデータ処理方法であって、
    前記第1の計算機は、負荷情報を含むシステム情報を格納し、
    前記第1の計算機は、
    要求毎に別の昇順のユニークな番号が割り付けられた要求識別情報を含む前記処理要求として更新要求および参照要求を受け取り、
    前記更新要求を受け取った場合に、当該保持するデータについて更新を行い、前記第2の計算機に当該要求識別情報を含む更新要求を送信し、
    前記参照要求を受け取った場合に、前記システム情報に基づいて、前記第1の計算機の負荷が所定の負荷量よりも小さいか否かを判定し、
    前記第1の計算機の負荷が前記所定の負荷量よりも小さい場合には、前記参照要求を処理し、
    前記第2の計算機は、前記ユニークな番号を含むとともに送られた参照要求および前記第1の計算機から送られた更新要求を受け取り処理要求として記憶し、該受け取って記憶している各処理要求に含まれる前記ユニークな番号の昇順に、処理要求を処理することを特徴とするデータ処理方法。
  2. 前記ユニークな番号は、時刻情報であることを特徴とする請求項1に記載のデータ処理方法。
  3. さらに、前記クラスタシステムは、
    前記第1の計算機に保持されるデータの複製を保持する第3の計算機を備え、
    第1の計算機からの通信として第2の計算機および第3の計算機にマルチキャスト通信を行い、
    前記第1の計算機は、
    要求毎に別々の昇順の前記ユニークな番号が割り付けられた要求識別情報を含む前記処理要求として更新要求を受け取った場合に、当該保持するデータについて更新を行い、前記第3の計算機および前記第2の計算機に当該要求識別情報を含む更新要求を送信し、
    前記第3の計算機は、前記ユニークな番号を含むとともに送られた参照要求および前記第1の計算機から送られた更新要求を受け取り処理要求として記憶し、該受け取って記憶している各処理要求に含まれるユニークな番号の昇順に、前記処理要求を処理することを特徴とする請求項1に記載のデータ処理方法。
  4. 前記クラスタシステムは、前記業務処理を要求するクライアントと、前記クライアントによる要求を前記第1の計算機及び前記第2の計算機の少なくとも一方に振り分ける要求振分け部とを備え、
    前記要求振分け部は、
    前記クライアントによる要求が更新要求であるか参照要求であるかを判定し、
    前記クライアントによる要求が更新要求である場合には、前記クライアントによる要求を前記第1の計算機に送信し、
    前記クライアントによる要求が参照要求である場合には、前記クライアントによる要求を前記第2の計算機に送信することを特徴とする請求項1に記載のデータ処理方法。
  5. 前記要求振分け部は、前記クライアントに備わり、
    前記クライアントが、前記クライアントによる要求を振り分けることを特徴とする請求項4に記載のデータ処理方法。
  6. 前記要求振分け部は、前記第1の計算機に備わり、
    前記第1の計算機が、前記クライアントによる要求の種別に応じて振り分けることを特徴とする請求項4に記載のデータ処理方法。
  7. 業務処理への処理要求を受け付け、前記業務処理を実行するとともに使用されるデータを保持する第1の計算機と、前記第1の計算機に保持されるデータの複製を保持する第2の計算機とを備え、前記第2の計算機は前記第1の計算機との通信により第1の計算機を停止すると判断した場合は、当該第1の計算機を停止して前記第2の計算機が前記処理要求を受け取り、該処理要求を処理するクラスタシステムであって、
    前記第1の計算機は、負荷情報を含むシステム情報を格納し、
    前記第1の計算機は、
    要求毎に別の昇順のユニークな番号が割り付けられた要求識別情報を含む前記処理要求として更新要求および参照要求を受け取り、
    前記更新要求を受け取った場合に、当該保持するデータについて更新を行い、前記第2の計算機に当該要求識別情報を含む更新要求を送信し、
    前記参照要求を受け取った場合に、前記システム情報に基づいて、前記第1の計算機の負荷が所定の負荷量よりも小さいか否かを判定し、
    前記第1の計算機の負荷が前記所定の負荷量よりも小さい場合には、前記参照要求を処理し、
    前記第2の計算機は、前記ユニークな番号を含むとともに送られた参照要求および前記第1の計算機から送られた更新要求を受け取り処理要求として記憶し、該受け取って記憶している各処理要求に含まれる前記ユニークな番号の昇順に処理要求を処理することを特徴とするクラスタシステム。
  8. 業務処理への処理要求を受け付け、前記業務処理を実行するとともに使用されるデータおよび負荷情報を含むシステム情報を保持する第1の計算機と、前記第1の計算機に保持されるデータの複製を保持する第2の計算機とを備え、前記第2の計算機は前記第1の計算機との通信により第1の計算機を停止すると判断した場合は、当該第1の計算機を停止して前記第2の計算機が前記処理要求を受け取り、該処理要求を処理するクラスタシステムにおいて、前記第1の計算機で実行されるプログラムであって、
    前記処理要求毎に別の昇順のユニークな番号が割り付けられた要求識別情報を含む前記処理要求として更新要求および参照要求を受け取る手順と、
    前記更新要求を受け取った場合に、前記更新要求に基づいて、前記保持するデータについて更新を行い、前記第2の計算機に当該要求識別情報を含む更新要求を送信する手順と、
    前記参照要求を受け取った場合に、前記システム情報に基づいて、前記第1の計算機の負荷が所定の負荷量よりも小さいか否かを判定し、前記第1の計算機の負荷が前記所定の負荷量よりも小さい場合に前記参照要求を処理する手順と、を含むことを特徴とするデータ処理プログラム。
JP2008207708A 2008-08-12 2008-08-12 データ処理方法、クラスタシステム、及びデータ処理プログラム Expired - Fee Related JP4612714B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2008207708A JP4612714B2 (ja) 2008-08-12 2008-08-12 データ処理方法、クラスタシステム、及びデータ処理プログラム
US12/366,731 US8359601B2 (en) 2008-08-12 2009-02-06 Data processing method, cluster system, and data processing program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008207708A JP4612714B2 (ja) 2008-08-12 2008-08-12 データ処理方法、クラスタシステム、及びデータ処理プログラム

Publications (2)

Publication Number Publication Date
JP2010044553A JP2010044553A (ja) 2010-02-25
JP4612714B2 true JP4612714B2 (ja) 2011-01-12

Family

ID=41682179

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008207708A Expired - Fee Related JP4612714B2 (ja) 2008-08-12 2008-08-12 データ処理方法、クラスタシステム、及びデータ処理プログラム

Country Status (2)

Country Link
US (1) US8359601B2 (ja)
JP (1) JP4612714B2 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102196400A (zh) * 2010-03-02 2011-09-21 高通股份有限公司 移动通信终端信息更新的方法和装置
JP5106648B2 (ja) * 2011-03-23 2012-12-26 株式会社東芝 複数のインターネットサービスを多重化するサービス中継装置及びサービス中継方法
JP5775481B2 (ja) * 2012-03-29 2015-09-09 株式会社日立製作所 情報処理システム及びその処理方法
WO2015033410A1 (ja) 2013-09-04 2015-03-12 株式会社東芝 情報処理システム、サーバ装置、情報処理方法及びプログラム
US9703638B2 (en) * 2013-12-27 2017-07-11 Oracle International Corporation System and method for supporting asynchronous invocation in a distributed data grid
US10929234B2 (en) 2017-10-27 2021-02-23 Vmware, Inc. Application fault tolerance via battery-backed replication of volatile state

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002358165A (ja) * 2001-03-21 2002-12-13 Hitachi Ltd 分散アクセスのためにミラー・データを用いた多重プロセッサ・データ処理システム
JP2005050127A (ja) * 2003-07-29 2005-02-24 Yokogawa Electric Corp プロセスデータ収集装置
JP2006011848A (ja) * 2004-06-25 2006-01-12 Nec Corp レプリケーションシステム、装置、方法、およびプログラム
JP2006146580A (ja) * 2004-11-19 2006-06-08 Nec Corp ストレージシステムとそのレプリケーション方法並びにプログラム
JP2007086987A (ja) * 2005-09-21 2007-04-05 Nec Corp データベース二重化システム、センタサーバ、リモートサーバ、データベース二重化方法及びプログラム

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5764903A (en) * 1994-09-26 1998-06-09 Acer America Corporation High availability network disk mirroring system
US5944779A (en) * 1996-07-02 1999-08-31 Compbionics, Inc. Cluster of workstations for solving compute-intensive applications by exchanging interim computation results using a two phase communication protocol
US6324654B1 (en) * 1998-03-30 2001-11-27 Legato Systems, Inc. Computer network remote data mirroring system
DE19952312A1 (de) * 1999-10-29 2001-05-03 Siemens Ag Verfahren zum Betreiben eines Zweitrechners, Vermittlungseinrichtungen für den ausfallsicheren Betrieb und zugehöriges Programm
JP2002063055A (ja) 2000-08-23 2002-02-28 Ricoh Co Ltd 書き込み遅延データベース管理方式及びシステム
GB2380830A (en) * 2001-10-13 2003-04-16 Hewlett Packard Co Automatic file sharing in a peer to peer network by use of constraints between file system domains
US7266594B2 (en) * 2001-11-07 2007-09-04 Microsoft Corporation Method and system for configuring a computer for real-time communication
US7546482B2 (en) * 2002-10-28 2009-06-09 Emc Corporation Method and apparatus for monitoring the storage of data in a computer system
US7383264B2 (en) * 2003-03-27 2008-06-03 Hitachi, Ltd. Data control method for duplicating data between computer systems
JP2004318288A (ja) * 2003-04-11 2004-11-11 Hitachi Ltd データ処理方法および装置ならびにその処理プログラム
JP2005309793A (ja) * 2004-04-22 2005-11-04 Hitachi Ltd データ処理システム
US7873809B2 (en) * 2007-03-29 2011-01-18 Hitachi, Ltd. Method and apparatus for de-duplication after mirror operation
JP2009181206A (ja) * 2008-01-29 2009-08-13 Hitachi Ltd ストレージシステム及びスナップショット構成の移行方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002358165A (ja) * 2001-03-21 2002-12-13 Hitachi Ltd 分散アクセスのためにミラー・データを用いた多重プロセッサ・データ処理システム
JP2005050127A (ja) * 2003-07-29 2005-02-24 Yokogawa Electric Corp プロセスデータ収集装置
JP2006011848A (ja) * 2004-06-25 2006-01-12 Nec Corp レプリケーションシステム、装置、方法、およびプログラム
JP2006146580A (ja) * 2004-11-19 2006-06-08 Nec Corp ストレージシステムとそのレプリケーション方法並びにプログラム
JP2007086987A (ja) * 2005-09-21 2007-04-05 Nec Corp データベース二重化システム、センタサーバ、リモートサーバ、データベース二重化方法及びプログラム

Also Published As

Publication number Publication date
US8359601B2 (en) 2013-01-22
US20100043010A1 (en) 2010-02-18
JP2010044553A (ja) 2010-02-25

Similar Documents

Publication Publication Date Title
US10983880B2 (en) Role designation in a high availability node
US10657119B1 (en) Fleet node management system
US8627136B2 (en) Non-disruptive failover of RDMA connection
US7225356B2 (en) System for managing operational failure occurrences in processing devices
US20140059315A1 (en) Computer system, data management method and data management program
US10331613B2 (en) Methods for enabling direct memory access (DMA) capable devices for remote DMA (RDMA) usage and devices therof
US9699276B2 (en) Data distribution method and system and data receiving apparatus
JP4612714B2 (ja) データ処理方法、クラスタシステム、及びデータ処理プログラム
RU2746042C1 (ru) Способ и система для передачи сообщения
CN107153660B (zh) 分布式数据库系统的故障检测处理方法及其系统
US10826812B2 (en) Multiple quorum witness
US20180027048A1 (en) File transmission method, apparatus, and distributed cluster file system
US20210320977A1 (en) Method and apparatus for implementing data consistency, server, and terminal
EP3648405B1 (en) System and method to create a highly available quorum for clustered solutions
US20160337467A1 (en) Method and system for information exchange utilizing an asynchronous persistent store protocol
EP3031172B1 (en) Managing data feeds
WO2022033586A1 (zh) 一种消息发送方法及装置
US9830263B1 (en) Cache consistency
JP4806382B2 (ja) 冗長化システム
CN103188065A (zh) 一种业务服务中数据同步的方法和系统
CN113220473B (zh) 数据存储方法及系统
CN113434290A (zh) 基于raft协议的数据处理方法和设备,及计算机存储介质
JP2006079241A (ja) リモート保守システム及びリモート保守方法
JP2010086227A (ja) 計算機間相互結合網における通信経路の冗長化と切り替え方法、この方法を実現するサーバ装置、そのサーバモジュール、および、そのプログラム
US10489340B2 (en) Distributed computing system and distributed processing method

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100219

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100706

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100827

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: 20100921

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20101015

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

Free format text: PAYMENT UNTIL: 20131022

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees