JP2013069323A - フォールトトレラント動作をする金融取引所用突き合わせサーバ - Google Patents

フォールトトレラント動作をする金融取引所用突き合わせサーバ Download PDF

Info

Publication number
JP2013069323A
JP2013069323A JP2012253875A JP2012253875A JP2013069323A JP 2013069323 A JP2013069323 A JP 2013069323A JP 2012253875 A JP2012253875 A JP 2012253875A JP 2012253875 A JP2012253875 A JP 2012253875A JP 2013069323 A JP2013069323 A JP 2013069323A
Authority
JP
Japan
Prior art keywords
primary
backup
transaction
matching server
instance
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.)
Granted
Application number
JP2012253875A
Other languages
English (en)
Other versions
JP5528526B2 (ja
Inventor
J Callaway Paul
ポール, ジェイ. キャロウェイ,
C Hagemann Robert Iii
サード, ロバート, シー. ヘイジマン
Shethwala Zuber
ズバー シェスワラ,
Reece Troy
トロイ リース,
Andrew Bauerschmidt Paul
ポール, アンドリュー バウアーシュミット,
Ferrari Enrico
エンリコ フェラーリ,
L Galster Barry
バリー, エル. ギャルスター,
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.)
CME Group Inc
Original Assignee
Chicago Mercantile Exchange Inc
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 Chicago Mercantile Exchange Inc filed Critical Chicago Mercantile Exchange Inc
Publication of JP2013069323A publication Critical patent/JP2013069323A/ja
Application granted granted Critical
Publication of JP5528526B2 publication Critical patent/JP5528526B2/ja
Active 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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • 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/1629Error detection by comparing the output of redundant processing systems
    • G06F11/1641Error detection by comparing the output of redundant processing systems where the comparison is not performed by the redundant processing components
    • 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/1675Temporal synchronisation or re-synchronisation of redundant processing components
    • G06F11/1687Temporal synchronisation or re-synchronisation of redundant processing components at event level, e.g. by interrupt or result of polling
    • 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/1695Error detection or correction of the data by redundancy in hardware which are operating with time diversity
    • 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/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
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q40/00Finance; Insurance; Tax strategies; Processing of corporate or income taxes
    • G06Q40/04Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
    • 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/2046Error 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 persistent storage

Abstract

【課題】複雑さを低減するフォールトトレランスを提供する。
【解決手段】金融取引所のプライマリ突き合わせサーバインスタンスのためのフォールトトレランス動作であって、プライマリ突き合わせサーバ内の動作を、ミラーリングするバックアップ突き合わせサーバを使用する。フォールトトレラント論理は、プライマリ突き合わせサーバの入力及び出力を監視し、それらの入力を、或る所与の入力が処理されてしまえば、バックアップ突き合わせサーバへゲーティングする。次いで、バックアップ突き合わせサーバの出力がプライマリ突き合わせサーバの出力と比較される。更に、障害状況時にバックアップ突き合わせサーバがプライマリ突き合わせサーバを引き継げるようにするフォールトトレラントフェイルオーバー機構に関しており、そこでは、プライマリ突き合わせサーバとバックアップ突き合わせサーバは緩く連結されている。
【選択図】図5

Description

本出願は、37C.F.R.第1.53条(b)の下に、2008年8月8日出願の米国特許出願第12/188,474号(弁理士事件番号第4672/690号)で現在の米国特許第 号の一部継続出願であり、前記は37C.F.R.第1.53条(b)の下に、2006年8月11日出願の米国特許出願の第11/502,851号(弁理士事件番号第4672/584号)で現在の米国特許第 号の継続出願であり、上記各特許出願の開示全体をこれにより参考文献として援用する。
フォールトトレランス(Fault Tolerance(耐障害性))は、概して、システムのエラーのある状態をエラーが検出されるや直ちに覆い隠すか又は当該状態から回復する能力をいう。フォールトトレランスは、概して、ミッションクリティカルとされるシステム/アプリケーションには必須である。ミッションクリティカルとは、概して、何らかの欠くことのできない動作であって、その重要不可欠な機能の遂行中には干渉も妥協もシャットダウンも寛容され得ない動作をいい、例えば、通常の業務時間中に故障することがあってはならない何らかのコンピュータプロセスがそうである。例示としてのミッションクリティカル環境には、業務上の基幹的なプロセスの制御、金融、保健、安全、及び保安が含まれる。これらの環境は、概して、それらのコア機能を妥協してでも紛失や破損を起こさせてはならないデータを監視、記憶、サポート、及び通信している。
フォールトトレランスが欠かせない1つの例示としての環境は、金融市場であり、具体的には、電子金融取引所である。電子取引所を実装しているシステムは、注文を受信して突き合わせたり別のやり方で取引を完結させ、そうしてマーケットプレースを実施させて、その中で交換が円滑化されるようにしている。市場の安定性、信頼性、及び受容性を確約するには、一貫性のある高信頼度の動作が重要不可欠である。
フォールトトレラントとは、概して、或る構成要素が故障した時に、バックアップ構成要素又はバックアップ手続きが取って代わり、サービスの損失を実質的に殆ど或いは一切生じさせないように設計されているコンピュータシステム又は構成要素を表す。フォールトトレランスは、ソフトウェアを用いて提供されていることもあればハードウェアに組み込んだり或いは何らかの組合せにより提供されていることもある。例えば、ソフトウェア実装では、オペレーティングシステムは、プログラマーがトランザクション内の所定のポイントで重要不可欠なデータを「チェックポイント処理」できるようにするインターフェースを提供していることもある。ハードウェア実装では、プログラマーは、機械のフォールトトレラント能に気付いている必要はない。例えば、ハードウェアレベルでは、フォールトトレランスはそれぞれのハードディスク構成要素を重複化することによって実現させることができ、例えば、ディスクをミラーリングするとか、複数のプロセッサを一体に「ロックステップ」して正確性を期すためにそれらの出力を比較するなどがある。異常が起こったら、障害のある構成要素が判定され、サービスから外されるが、機械はいつも通りに機能し続ける。
要求されるフォールトトレランスのレベルは、一般的に、システムの諸要件の必要性に従って定義され、即ち、エラー時の受容可能な挙動である、例えばエラーは検出されて訂正されなくてはならないかそれとも検出されるだけでよいかとか、その様なアクションはどれほど素早くとられなくてはならないかといった様な挙動を明確に記している規格の必要性に従って定義される。
フォールトトレランスをシステムに提供する1つの方法は、システムの重要不可欠な構成要素のうち1つ又はそれ以上に冗長性を加えることである。冗長とは、コンピュータ又はネットワークシステムの構成要素、例えばファン、ハードディスクドライブ、サーバ、オペレーティングシステム、スイッチ、及び/又は通信リンクなどが、プライマリリソースが万一故障した場合にそれらをバックアップするためにインストールされていることを表す。この目的でよく使用されているのは3つの型式の冗長スキームであり、即ち:
ワン・フォー・N(1:N)―アクティブ構成要素N個毎に1つの待機構成要素がある。
ワン・フォー・ワン(1:1)―アクティブ構成要素それぞれに1つの待機構成要素がある。
ワン・プラス・ワン(1+1)―ワン・フォー・ワンスキームに似ているが、但し、ワン・プラス・ワンの場合、トラフィックはアクティブ構成要素と待機構成要素の両方の側で同時に伝送される。(トラフィックは通常待機側では無視される。)ワン・プラス・ワン式冗長性の一例に、リンク故障によってデータトラフィックの喪失が引き起こされるのを回避する1+1 SONET/SDH APSスキームがある。
処理用構成要素のための冗長的な動作を提供する場合、冗長論理の結果を比較してどの構成要素が正確かを選抜するのに投票の論理が使用されることがある。例えば、トリプルモード冗長性では、3つの冗長構成要素が提供されていて、1つの構成要素の結果が、互いに整合している他の2つと整合できなかったなら、最終結果は、整合している2つの構成要素の結果ということになる。
冗長システムのよく知られている例に、独立ディスク冗長アレイ(redundant array of independent disks)(「RAID」)がある。RAID(本来は、安価ディスク冗長アレイ(redundant array of inexpensive disks))は、同一データを、複数のハードディスク上の異なった場所に(ひいては冗長的に)記憶する一方法である。データを複数のディスクに置くことにより、I/O(入力/出力)動作は均衡の取れたやり方でオーバーラップされ、性能が改善される。ディスクの複数化で平均障害間隔(MTBF)が増すことから、データを冗長的に記憶することはフォールトトレランスをも向上させる。RAIDは、オペレーティングシステムには単一の論理ハードディスクであるように見える。RAIDは、ディスクストライピングという技法を採用しており、この技法には、それぞれのドライブのストレージ空間を、1セクター(512バイト)から数メガバイトにも上る範囲の単位へ区分化することが伴う。全てのディスクのストライプがインターリーブされ、順にアドレス指定される。医用画像又は他の科学的画像の様な膨大な記録が記憶されるシングルユーザーシステムでは、ストライプは、概して、小さく(おそらくは512バイトに)なるように設定されており、そうすれば、単一記録が全てのディスクに行き渡り、全てのディスクを同時に読み出すことによって素早くアクセスすることができる。マルチユーザーシステムでは、性能を高めるには、典型サイズ又は最大サイズの記録を保持するのに十分に広いストライプを確立することが要件となる。これにより、ドライブを跨ぐディスクI/Oオーバーラップが可能になる。
少なくとも9つの型式のRAIDに加え非冗長アレイ(RAID−0)があり、即ち:
RAID−0:この技法は、ストライピングを有するがデータの冗長性はない。最大性能を提供するが、フォールトトレランスは提供しない。
RAID−1:この型式は、ディスクミラーリングとしても知られており、データのストレージを重複させる少なくとも2つのドライブから成る。ストライピングはない。どちらのディスクも同時に読み出されるので読み出し性能が改善される。書き込み性能は、単一のディスクストレージの場合と同じである。RAID−1は、マルチユーザーシステムでは最大性能と最大フォールトトレランスを提供する。
RAID−2:この型式は、ディスクを跨ぐストライピングを使用しており、幾つかのディスクは、エラーチェック及び訂正(ECC)情報を記憶している。RAID−3に勝る利点はない。
RAID−3:この型式は、ストライピングを使用し、1つのドライブをパリティ情報記憶の専用にしている。組み込まれているエラーチェック(ECC)情報が、エラーを検出するのに使用される。データ回復は、その他のドライブに記録されている情報の排他的OR(XOR)を計算することによって達成される。I/O動作は全てのドライブを同時にアドレス指定するので、RAID−3ではI/Oはオーバーラップされ得ない。この理由から、RAID−3は長記録アプリケーションを備えたシングルユーザーシステムに最適である。
RAID−4:この型式は大ストライプを使用しており、ということは記録をどの単一ドライブからも読み出すことができることを意味する。これにより、読み出し動作にI/Oオーバーラップを活用できるようになる。書き込み動作は全てパリティドライブを更新しなければならないので、I/Oオーバーラップは実施できない。RAID−4は、RAID−5に勝る利点を提供しない。
RAID−5:この型式は、回転式パリティアレイを含み、ひいては、RAID−4での書き込み制限の解消を図っている。その結果、全ての読み出し及び書き込み動作をオーバーラップさせることができる。RAID−5は、パリティ情報を記憶するが、冗長データを記憶しない(しかし、パリティ情報をデータを再構築するのに使用することができる)。RAID−5は、アレイにつき少なくとも3つ通常は5つのディスクを必要とする。それは、性能が重大不可欠というわけではないか或いは書き込み動作を殆どしないマルチユーザーシステムに最適である。
RAID−6:この型式は、RAID−5に似ているが、異なったドライブを跨いで分散させた第2のパリティスキームを含んでおり、よって、極めて高いフォールトトレランス及びドライブ故障トレランスがもたらされる。
RAID−7:この型式は、コントローラとしてのリアルタイム組み込みオペレーティングシステム、高速バスを介したキャッシング、及びスタンドアローンコンピュータの他の特性を含んでいる。
RAID−10:RAID−0とRAID−1の組合せは、しばしば、RAID−10と呼称されており、RAID−1より高い性能をもたらすが、コストはずっと高くなる。2つの下位型式があり、即ち:RAID−0+1では、データは、複数のディスクに跨るストライプとして編纂され、次いで、ストライプ化されたディスクセットがミラーリングされる。RAID−1+0では、データがミラーリングされ、ミラーがストライプ化される。
RAID−50(又はRAID−5+0):この型式は、一連なりのRAID−5群から成り、データ保護を縮減することなくRAID−5の性能を改善するべく、RAID−0様式でストライプ化されている。
RAID−53(又はRAID−5+3):この型式は、RAID−3の仮想ディスクブロックにストライピングを(RAID−0様式で)使用している。これは、RAID−3より高い性能をもたらすが、コストはずっと高くなる。
RAID−S(パリティRAIDとしても知られている):これは、EMC Symmetrixによるストライプ化パリティRAIDのための代わりの独自開発された方法であって、現在の機器ではもう使用されていない方法である。RAID−5に似ている様に見えるが、一部の性能強化並びにディスクアレイに高速ディスクキャッシュを有することから来る増強が図られている。
RAIDと似て、RAIN(チャネル結合、独立ノード冗長アレイ、独立ノード高信頼度アレイ、又は独立ノードランダムアレイとも呼ばれる)は、ネットワークトポロジーにおいて複数のインターフェース及び冗長ストレージと接続されているノードのクラスタである。RAINは、フォールトトレランスを上げるのに使用される。それは、ディスクアレイを跨ぐ代わりにノードに跨るRAIDの実装である。RAINは、ローカルエリアネットワーク(LAN)又はワイドエリアネットワーク(WAN)で複数のノードが故障した場合にも、完全自動式データ回復を提供することができる。ブラウザベースの集中型安全管理インターフェースは、単一の場所からの監視と構成を容易にする。RAINクラスタ内に存在し得るノードの数には制限がない。ネットワークのダウンタイムを被ることなく、新しいノードを追加したり整備を実施したりすることができる。RAINは、米国のカリフォルニア工科大学(Caltech)とジェット推進研究所(JPL)と国防総省国防高等研究業務局(DARPA)での外部空間におけるコンピューティングのための研究プロジェクトで案出されたものである。研究者らは、既成の構成要素を使用して構築することのできるデータストレージの分散コンピューティングモデルを考察していた。
RAINの着想は、RAID(独立ディスク冗長アレイ)技術から来ている。RAIDは、データを単一のシステム内のハードドライブのセットの中で区分化する。RAINは、ストレージ空間をネットワーク内の複数のノードに跨って区分化する。ストレージの区分化はディスクストライピングと呼ばれる。RAINの様々な独自開発バージョンに対し幾つかの特許が付与されている。
データベースでは、そして処理システム、特に、処理又はトランザクション遂行を継続しながら状態を記憶又は累算する処理状態把握型処理システムでは、冗長性は、プライマリ構成要素が故障した場合に冗長要素がいつでも引き継げるように冗長構成要素がプライマリ構成要素と同期されることを確約するという追加の複雑性を生じさせる。
ホットスタンドバイ(HS)は、データベースサーバシステムのスムーズなフェイルオーバーをサポートする機構であり、システムの可用性、即ち、必要となったときに所望のサービスを提供する能力を、主システムが利用できなくなったときにいつでも引き継げる第2サーバシステムによって維持する機構である。ホットスタンドバイ複製スキームでは、サーバは、通常、2つの異なった役割を有しており、その第1がプライマリサーバであり、第2はセカンダリ(バックアップ、スレーブ)サーバである。ホットスタンドバイ構成は、セカンダリデータベースが、自動的に、プライマリデータベースのミラーイメージを維持する方策を提供している。セカンダリサーバ側のセカンダリデータベースは、通常、読み出し専用型式であり、それはプライマリサーバのプライマリデータベースと論理的に同一である。万一、プライマリサーバに故障が起こった場合、セカンダリサーバが引き継いで新たなプライマリサーバの役割を引き受けることができる。
データベースを保有するコンピュータシステムで高い可用性を実現するための方法は幾つかある。継続的ホットスタンドバイを実施する1つの既知のやり方は、システム全体、即ち、データベースとデータベースを使用しているアプリケーションと、をミラーリングすることである。システムの全ての動作は、システムのどちら側のアプリケーションでも遂行される。アプリケーションは、それぞれのトランザクションを自身のデータベースに書き込むので、両方のシステムは常に完全に同期化されている。アプリケーション及びアプリケーションそれぞれのデータベースが相互に同期していることを確約するため、概して、アプリケーションチェックポインティングと呼ばれる機構が使用されている。動作の各実行後には、アプリケーションは、何らかの手段により、他方のアプリケーションが同じ動作を実行したことを裏付ける。言い換えれば、セカンダリアプリケーションと関係付けられているセカンダリデータベースは、プライマリのデータベースとアプリケーションを精密にミラーリングする。アプリケーション処理を含めあらゆるものがフォールトトレラントでなければならないリアルタイムアプリケーションにとっては、アプリケーションレベルのミラーリングは賢い選択である。
プライマリのプロセスは、実際には、作業を遂行し、そしてチェックポインティング技法を使用して、周期的に、バックアップのプロセスをプライマリのプロセスと同期させる。先行技術による既知のチェックポインティング技法を用いた場合、プライマリはプライマリプロセスの状態の変更についての情報を含んだメッセージをバックアップのプロセスへ送る。各チェックポイントの直後は、プライマリのプロセスとバックアップのプロセスは同じ状態にある。
先行技術による他の既知のチェックポインティング方法では、状態を変更させる動作(例えば書き込み動作など)と状態を変更させない動作(例えば読み出し動作など)の間の区別はなされず、全ての動作がバックアッププロセスへチェックポイント処理される。その様なシステムは、米国特許第4,590,554号(Glazer−−Parallel Computer Systems)に示されており、そこでは、プライマリへの全ての入力はメッセージを介して提供され、プライマリへ送られた全てのメッセージはセカンダリ又はバックアップに対して利用できるようにされ、基本的には、バックアップにプライマリのメッセージを「聴取」させている。別のその様なシステムが、米国特許第5,363,503号(Gleeson−−Unisys Corporation)に記載されているが、そこでは、チェックポインティングは、米国特許第4,590,554号に記載の通りに提供されている。
米国特許第4,228,496号(Katzman−−Tandem Computers)に示されている様な他の先行技術は、プライマリが、メッセージを受信し、当該メッセージを処理し、データを生成することを記載している。生成されたデータは、プライマリのデータ空間に記憶され、それによってプライマリのデータ空間を変更させる。プライマリのデータ空間に変更があると、データ空間のチェックポインティング動作がバックアップに対し利用できるようにされる。よって、プライマリのデータ空間をバックアップのデータ空間にコピーすることが頻発し、膨大な量の時間とメモリがプライマリの状態をバックアップに転送するために使用される。それは、プライマリが故障したときにサービスの中断を招くことにもなろう。その様なチェックポインティング方法のオーバーヘッドは、性能上の計り知れない不利益を抱えるものである。
他の先行技術の例では、プライマリの状態で前回の更新以来変更のあった部分だけを更新することが試みられているが、それらは複雑なメモリ及びデータ管理スキームを使用する。米国特許第5,621,885号(Del Vigna−−Tandem Computers)に示されている他の例では、フォールトトレラント実行時間サポート層(即ち、アプリケーションプログラムとオペレーティングシステムの間のインターフェース)の上で実行しているプライマリとバックアップは、メモリに常駐し、記載されているフォールトトレランスモデルで使用されているプライマリのCPUとバックアップのCPUの両方によってアクセスできる。プライマリとバックアップのプロセスは、それらが同じコードを含んでいるので、同じ計算を遂行する。
米国特許第6,954,877号は、プライマリコンピュータ側のプロセスの故障があった場合に、中断なくバックアップコンピュータ側のプロセスが引き継ぐことができるように、プライマリのプロセスをバックアップのプロセスへチェックポイント処理するためのシステム及び方法を開示している。加えて、ソフトウェア又は機器の異なったバージョンへの更新は中断なく行われる。サービスインスタンスの状態を変更させる外部からの要求又はメッセージのみをチェックポイント処理できるようにし、それによって、オーバーヘッド及び性能上の不利益を低減できる、軽量チェックポイントティング方法が開示されている。
具体的には、コンピューティングシステムが、フォールトトレラントサービスのチェックポインティングのための機構を提供している。サービスは、プロセスペアを使用することによってフォールトトレラントとなり、即ち、プライマリのプロセスが公式に作業を遂行する一方で1つ又はそれ以上のバックアップのプロセスが故障時に使用することのできる論理的等価物を提供する。プライマリとバックアップは、何れの所与の時点でも論理的に等価となることは可能であるが、内部的に物理面で、即ちそれらの実装に、相違があるかもしれない。
アプリケーションチェックポインティング機構は実装するのが困難なタスクであることから、その実装にはアプリケーションプログラマーからの多くの作業が要求される。ホットスタンドバイ複製動作を処理するための別の方法は、プライマリサーバで実行されているトランザクションの動作のトランザクションログを作成し、当該ログをセカンダリサーバへ転送し、当該セカンダリサーバ側で転送されたトランザクションログを連続的に実行させることである。このログは、トランザクション内のデータの処理及び操作の結果として挿入、削除、又は更新された全てのデータ項目の記録である。データは、どちらかのデータベースでコミットさせるには、その前に両方のデータベースに書き込まれる必要がある。これにより、確実に、プライマリサーバがコミット成功の確認をクライアントアプリケーションへ送る前にデータを安全にセカンダリサーバに記憶させることができる。この種のデータミラーリングシステムの一例が、米国特許第6,324,654号に記載されており、そこでは「ローカルコンピュータシステム上のプライマリミラーデーモンは、書き込みログデバイス(冗長データストレージ又は冗長メモリデバイス)のデータ更新を監視し、ネットワークを介して、データをそれが記憶されたのと同じ順序でリモートコンピュータシステムの受手側であるリモートミラーデーモンへ送給し、するとミラーデバイスへのデータ更新がコミットされる。故障回復の局面では、これらのプライマリとセカンダリ側のミラーデーモンが、ログをセカンダリノードへ送り、そこでログはそれがプライマリノードにあるかのごとくに実行される。複製された動作がセカンダリノードで連続的に実行されるので、それが処理速度を下げ、ひいては全体性能を低下させる。
データベースフォールトトレランスを実現するための更に別の機構は、2つのデータベースへのアプリケーション接続を持つというものである。アプリケーションがアプリケーション機能を実行するときはいつでも、当該アプリケーションは、両方のサーバに対する関連データの変更をコミットする。確実にトランザクションが両方のデータベースでコミットされるようにするため、アプリケーションは、概して、両データベースでのトランザクション成功を確約するのに所謂2相コミットプロトコルを使用する必要がある。トランザクションがどちらかのデータベースで失敗した場合は、他方のデータベースでも失敗を強いられる。2相コミットプロトコルの使用は、アプリケーション内で行われる必要があり、そのためアプリケーションコードは更に複雑化する。その上、トランザクションの分散化は性能上の問題を引き起こす極めてざらな要因源であり、というのも、両方のデータベースがトランザクションのコミットを確認するより前にトランザクションを完了させることはできないからである。このシナリオでは、エラー状況からの回復も非常に困難となろう。
ホットスタンドバイ複製動作を処理するための更に別のやり方は、トランザクションの行を、それらがプライマリノード側でコミットされた後にセカンダリノードへコピーするというものである。この方法は、単なるコピー手続きであって、トランザクションは連続的にセカンダリノードで実行される。この方法は、非同期データ複製として知られている。この方法は、リアルタイムのデータベースミラーリングにいつも適しているとは限らず、というのも、プライマリデータベースからセカンダリデータベースへのフェイルオーバーが起こったときに、プライマリデータベースの全てのトランザクションがセカンダリデータベースではまだ実行されていないかもしれないからである。
多くのデータベースサーバは、効率的な方式で、同時発生トランザクションを並行して実行する能力がある。例えば、サーバは、マルチプロセッサコンピュータの異なったプロセッサ上で異なったトランザクションを実行することができる。この様に、データベースサーバの処理パワーは、プロセッサをコンピュータに加えることによってスケールアップさせることができる。更に、トランザクションを並行に実行すれば、大きな表にインデックスを作成してゆくといった様な連続的に実行される長期実行型トランザクションのブロッキング効果を回避できる。データベースの完全性を確約するためには、ロッキング又はデータバージョンニングといった様な幾つかの同時性制御方法を使用して、トランザクション間で共有されるデータへのアクセスを管理させる必要がある。2つのトランザクションが同一データ項目へ同時に書き込みアクセスしようとした場合で、バージョンニング式の同時性制御が使用されている場合には、サーバは、どちらでもよいが、「同時性対立」エラーをトランザクションのうちの一方へ返し、アプリケーションは、当該トランザクションの実行を後で再度試みる必要がある。ロッキング式の同時性制御が使用されている場合は、サーバは、ロックされたリソースが解除されるまで、トランザクションのうちの一方を待たせる。しかしながら、このシナリオでは、2つのトランザクションがリソースを互いからロックし合うというデッドロック状態が起こる可能性があり、デッドロック状態をクリアするには、トランザクションのうちの一方をキルしなければならない。アプリケーションは、キルされたトランザクションを実行しようとするなら、例えばトランザクションの実行を再度試みることにより、エラーに対処しなくてはならない。
先行技術で知られているこれらの同時性制御方法は、クライアントアプリケーションの同時発生オンライントランザクションを管理するホットスタンドバイデータベース構成のプライマリサーバで使用するのに適しているが、それらは、システムのセカンダリサーバでは適用できない。これは、セカンダリサーバでは、同時性対立エラー状態に適切に対処できる方策がないことから、同時性対立エラーは許容され得ないためである。適切なホットスタンドバイ同時性制御方法が存在しないせいで、先行技術の複製型ホットスタンドバイでは、動作は、セカンダリノードでは実質的に連続形式で実行されている。動作を並行して実行させることができないので、セカンダリサーバの性能を、データ完全性及びトランザクションの一貫性に問題を生じさせることなく改善するのは難しい。本質的には、トランザクションを並行して実行できるようにする機構であって、但しトランザクションが過早に開始されないこと、且つトランザクションが、依存するトランザクションが開始される前にコミットされることを確約する機構が必要である。
米国特許第6,978,396号は、プライマリサーバ起源のトランザクション動作であってデータを並行してセカンダリサーバに複製するのに使用されるトランザクション動作を実行する機構を開示しており、セカンダリサーバで同時発生動作又は並行動作を実行して冗長性、回復、及びトランザクション伝播を図ることに関している。本開示によれば、セカンダリサーバで並行動作が実行されることで、性能及び可用性、そしてトランザクション順序と出力についてトランザクション動作の起源であるプライマリサーバとの一致を維持する仕方が改善される。特定の規則のセットが確定されている。特定の規則は、プライマリサーバでのそれぞれのトランザクションに添付される「第1タイムスタンプ」及び「第2タイムスタンプ」を根拠に定義されており、規則は「タイムスタンプ判定基準」を形成している。トランザクションがこのタイムスタンプ判定基準に合致したら、それは、セカンダリサーバ内の同じ判定基準に合致した他のトランザクションと並行に、トランザクションの順序と出力を誤りのないように維持する特定の規則に設定されている命令に従って実行されることになる。
拝察される様に、複雑な処理システムにフォールトトレランスを実装するには、プライマリ構成要素が故障した場合にバックアップ構成要素がいつでも引き継げるように、確実に、冗長構成要素がプライマリ構成要素と同期化されるようにするのに複雑な論理を必要とする。
米国特許出願第12/188,474号 米国特許出願第11/502,851号 米国特許第4,590,554号 米国特許第5,363,503号 米国特許第4,228,496号 米国特許第5,621,885号 米国特許第6,954,877号 米国特許第6,324,654号 米国特許第6,978,396号
以上より、確実に、冗長構成要素がファイルされたプライマリ構成要素をいつでも引き継げるようにすることに関連する複雑さを低減するフォールトトレランスを提供するための簡易な機構が必要とされている。
1つの実施形態による図5のフォールトトレラントシステムの動作を示す流れ図を描いている。
1つの実施形態による図5のフォールトトレラントシステムと共に使用するための或るデータベースの動作を示す流れ図を描いている。
図5のフォールトトレラントシステムの動作を示す更に詳細な流れ図を描いている。
図5のフォールトトレラントシステムの動作を示す更に詳細な流れ図を描いている。
実施形態による或るフォールトトレラントシステムのブロック線図を描いている。
或る代わりの実施形態によるフォールトトレラントシステムのブロック線図を描いている。
図6のフォールトトレラントシステムの更に詳細なブロック線図を描いている。
図6のフォールトトレラントシステムの代わりの更に詳細なブロック線図を描いている。
図6のフォールトトレラントシステムの動作を実演する更に詳細なブロック線図を描いている。
図6のフォールトトレラントシステムと共に使用するための或るデータベースの例示としての動作を描いている。 図10Aと共に、図6のフォールトトレラントシステムと共に使用するための或るデータベースの例示としての動作を描いている。
図6のフォールトトレラントシステムによって利用される例示としてのデータ構造を描いている。 図11Aと共に、図6のフォールトトレラントシステムによって利用される例示としてのデータ構造を描いている。 図11A及び図11Bと共に、図6のフォールトトレラントシステムによって利用される例示としてのデータ構造を描いている。
開示されている実施形態は、プロセス、スレッド、アプリケーション、プロセッサなどの様なプライマリインスタンスのためのフォールトトレランス動作であって、プライマリインスタンス内の動作を、但しそれらの動作がプライマリインスタンス内で首尾よく完了した後に限って、ミラーリングするアクティブなコピーキャットインスタンス、別称バックアップインスタンスを使用してフォールトトレラント動作を提供することに関する。開示されているフォールトトレラント論理は、プライマリインスタンスの入力及び出力を監視し、それらの入力を、或る所与の入力が処理されてしまえば、バックアップインスタンスへゲーティングする。次いで、誤りのない動作を裏付けるために、バックアップインスタンスの出力がプライマリインスタンスの出力と比較される。開示されている実施形態は、更に、障害状況時にバックアップインスタンスがプライマリインスタンスを引き継げるようにするフォールトトレラントフェイルオーバー機構に関しており、そこでは、プライマリインスタンスとバックアップインスタンスは緩く連結されており、即ち、それらは互いのことを又はそれらがフォールトトレラント環境で動作しているということに気付いている必要はない。よって、プライマリインスタンスは、フォールトトレラント機構と対話するように特定的に設計される必要もプログラムされる必要もない。代わりに、プライマリインスタンスは、特定の基本的な動作指針を固守するように、そしてそうすることができなくなったときは自身をシャットダウンさせるように設計されてさえいればよい。プライマリインスタンスの能力を外部から制御してその動作指針を首尾よく固守させることによって、開示されている実施形態のフォールトトレラント機構は、エラー条件を見分け、プライマリインスタンスからバックアップインスタンスへ簡単にフェイルオーバーさせることができる。
係属中の特許請求の範囲での使い方を明確にし、これにより公に告知するに当たり、「<A>、<B>、…及び<N>のうちの少なくとも1つ」又は「<A>、<B>、…<N>のうちのの少なくとも1つ又はそれらの組合せ」という語句は、出願人によって、同出願人によるそれとは反対の明示的な断定がない限り最も広範な意味に定義されるものとして、以上又は以下の如何なる他の黙示されている定義に優先し、A、B、…及びNを備える群から選択される1つ又はそれ以上の要素、即ち要素A、B、…又はNのうちの1つ又はそれ以上から成る何らかの組合せを意味するものと定義され、そこには何れか1つの要素単独又は何れか1つの要素が他の要素のうちの1つ又はそれ以上との組合せが含まれ、掲載されていない追加の要素との組合せも含まれ得る。
図5は、1つの実施形態によるフォールトトレラントシステム500のブロック線図を描いている。システム500は、プライマリインスタンス502とバックアップインスタンス504を含んでおり、バックアップインスタンス504は、プライマリインスタンス502の実質的な写しである。プライマリインスタンス502は、プロセッサ上で実行されているソフトウェアアプリケーション、プロセス、スレッド、プロセッサ、又は、1つ又はそれ以上の処理用要素やサーバなどから成るか又はそれらの上で実行されている(単数又は複数の)他のハードウェア又はソフトウェア構成要素を含むことができる。バックアップインスタンス504は、プライマリインスタンス502の別建てインスタンス化物又はプライマリインスタンス502の写しを含み、同じか又は異なった1つ又はそれ以上の処理用要素、(単数又は複数のサーバ)、論理区画などから成るか又はそれらの上で実行されているものとすることができる。プライマリインスタンス502及びバックアップインスタンス504の特質が、それらがソフトウェア、ハードウェア、又はそれらの組合せである故に実装依存性であること、そしてここに記載されているフォールトトレラント機構は、概してそこに適用できるということを理解しておきたい。1つの実施形態では、プライマリインスタンス502は、1つ又はそれ以上のプロセッサ又は処理用コアを有するサーバ又はサーバの論理区画上で実行されるマルチスレッド型ソフトウェアプロセスのインスタンス化物である。バックアップインスタンス504は、同じ地理的区域に置かれているかそうでないかを問わず、同様の型式の別建て論理区画又は別建てサーバ上で実行される前記と同じマルチスレッド型ソフトウェアプロセスの別建てインスタンス化物である。概して、プライマリインスタンス502は、それがプログラムされている目的の業務又は他の機能を遂行するように動作する。例えば、プライマリインスタンス502は、取引注文の様な注文を受信し、それらの注文を、取引所の取引用エンティティの間で取引が完結されるように突き合わせる、金融取引所のための突き合わせサーバであってもよい。説明してゆくが、プライマリインスタンス502の実質的な写しであるバックアップインスタンス504は、基本的に、プログラムされている同じ業務又は他の機能を遂行する。事実上、プライマリインスタンス502とバックアップインスタンス504は緩く連結されている。緩い連結とは、データをやり取りしている2つ又はそれ以上のコンピュータシステムの間の弾力的な関係を表す。各々のトランザクション終了時にそれらシステムの要求物が明示になり、相手方についての推測は殆ど生じない。
プライマリインスタンス502は、プライマリインスタンス502によって遂行されている(単数又は複数の)機能に関連するトランザクションデータを記憶する目的で供されているデータベース506と連結されている。ここで、「〜と連結されている」という語句は、直接的に接続されていること、又は間接的に1つ又はそれ以上の媒介構成要素を介して接続されていることを意味するものと定義される。その様な媒介構成要素には、ハードウェアベースとソフトウェアベースの両方の構成要素が含まれるであろう。説明してゆくが、プライマリインスタンス502は、その(単数又は複数の)機能に従って処理するためにそれが受信した各入力について、データベース506を用いてトランザクションを完了して始めて、入力に対応して応答又は確認の様な出力を生成し送信することができるようにプログラムされている。プライマリインスタンス502がデータベーストランザクションを完了することができなければ、それは、内部的に停止し自らをシャットダウンさせる。1つの例示としての実施形態では、プライマリインスタンス502は、データベース506内の表への受信された入力それぞれに関して、規制又は監査関連データの様なデータのログを取らなくてはならない。
トランザクションは、概して、要求を満たすことを目的とする、またデータベースの完全性を確約するための、単位として取り扱われる一連の情報交換及び関連作業(例えば、データベース更新)をいう。トランザクションを完了させデータベースの変更を永久化させるために、トランザクションは丸ごと完了させなければならない。或る典型的なトランザクションには、顧客から電話が入り顧客担当者がコンピュータに入力するカタログ商品注文がある。注文のトランザクションには、在庫管理データベースをチェックする段階と、当該物品が在庫として在ることを確認する段階と、発注する段階と、発注がなされた事実と予定出荷時間を確認する段階を伴う。これを単一のトランザクションとして見るのであれば、トランザクションが成功しデータベースが実際に当該の新規注文を反映するように変更される前に、全ての段階を完了させなければならない。トランザクションが首尾よく完了する前に何かが起これば、データベースへの何れの変更も、それらを元に戻せるように、経過追跡されなくてはならない。
トランザクションの一部であるイベントのシーケンスを管理する又は見張るプログラムは、時に、トランザクションマネジャ又はトランザクションモニターと呼ばれる。1つの実施形態では、トランザクションは、構造化問い合わせ言語(Structured Query Language)、標準的なデータベースユーザーインターフェース及びプログラミングインターフェースによってサポートされている。トランザクションが首尾よく完了した場合、データベースの変更はコミットされたと言われ、トランザクションが完了しなかった場合、変更はロールバックされ、即ち、データベーストランザクションが失敗したと判定された場合は途中まで完了していたデータベース変更は元に戻される。IBMの顧客情報管理システム(Customer Information Control System)製品では、トランザクションは、トランザクション要求の特定の型式から生じるアプリケーションデータ処理の一単位である。CICSでは、コンピュータオペレータ又はユーザーによる特定のトランザクション要求のインスタンスはタスクと呼ばれる。コミットは、コンピューティングシステムでのトランザクションへの対処の一環として既に開始されてしまっているデータベース変更が首尾よく完了した場合の最終段階である。
1つの実施形態では、データベース506は、「ACID」準拠データベースである。ACID(原子性(Atomicity)、一貫性(Consistency)、孤立性(Isolation)、及び耐久性(Durability))は頭文字であり、トランザクションマネジャによる何れのトランザクションに対しても確約されるべき当該4大属性が分かるように、そして覚えられるようにするための記憶術的な工夫である。それらの属性は、即ち:
−原子性。2件又はそれ以上の個々の情報が係わるトランザクションでは、全件がコミットされるか1件もコミットされないかのどちらか。
−一貫性。トランザクションは、データの新たな有効状態を作成するか、或いは何らかの故障が起こった場合は全てのデータをトランザクションが開始された前の状態に戻すかのどちらかである。
−孤立性。進行中でまだコミットされていないトランザクションは、それ以外のトランザクションから孤立させておかなければならない。
−耐久性。コミットされたデータは、故障及びシステム再始動の時でさえ、データをその誤りのない状態で利用できるようにシステムによって保存される。
ACIDの概念は、ISO/IEC 10026−1:1992、Section4に記載されている。これらの属性のそれぞれは、ベンチマークに照らし測ることができる。しかしながら、総じて、トランザクションマネジャ又はモニターは、ACID概念を実現するように設計されている。分散型システムでは、ACIDを実現する1つのやり方は、2相コミット(「2PC」)を使用することであり、それにより、確実に、全ての関与サイトがトランザクション完了をコミットするか、どれもコミットせずトランザクションがロールバックされるか、になるはずである。
以上に論じた様に、プライマリインスタンス502は、更に、それが受信するそれぞれの入力について1つ又はそれ以上の応答/出力及び/又は確認通知を生成するように動作する。以下に説明してゆくが、プライマリインスタンス502がデータベース506との外部トランザクションを完了させることに依存していること、そしてプライマリインスタンス502が受信されたそれぞれの入力についてそれが首尾よく処理されたことを確認する少なくとも1つの応答又は出力を生成するように動作することを、本明細書に記載されている本開示のフォールトトレラント機構は、障害を検出し必要ならバックアップインスタンス504にフェイルオーバーするのに利用している。開示されている実施形態は、開示されている機能性を達成するために、何れの動作的に依存する外部トランザクションを利用してもよいし、プライマリインスタンス502の所与の入力が処理されたことを確認する何れの表示子を利用してもよいものと理解しておきたい。
システム500は、フォールトトレラント論理514を更に含んでいる。フォールトトレラント論理514の構成要素についてはそれらの機能性に関連付けて説明してゆくが、機能性については1つの実施形態による図5のフォールトトレラントシステムの動作を示す流れ図を描く図1−図4に示している。フォールトトレラント論理514は、ハードウェア、ソフトウェア、又はそれらの組合せに実装することができ、更に、プライマリインスタンス502及びバックアップインスタンス504並びにデータベース506と対話し且つここに記載されている機能性を実装するコンピュータプログラム論理、プロセス、スレッド、又はそれらの組合せを含むことができる。フォールトトレラント論理514は、プライマリインスタンス502及び/又はバックアップインスタンス504と同じ論理区画、サーバ、又はプロセス上で実行されていてもよいし、プライマリインスタンス502及び/又はバックアップインスタンス504とネットワーク又は他の相互接続の様な適した手段を介して相互接続されている別建てのサーバ又はプロセッサ上で実行されていてもよい。
具体的には、フォールトトレラント論理514は、ネットワーク508とバックアップインスタンス504への入力との間に連結されている入力受信部518と、プライマリインスタンス502、入力受信部518、及びデータベース506の出力と連結されているプライマリ故障検出論理516と、ネットワーク508(図示せず)及び出力突き合わせ論理530と連結されているバックアップ故障検出論理528と、を含んでいる。入力受信部518は、プライマリインスタンス502によってネットワーク508から受信されているはずの(単数又は複数の)入力のコピーを受信する。無論、プライマリインスタンス502で通信又はネットワークの故障があれば、フォールトトレラント論理514による(単数又は複数の)入力の受信は障害を検出することになり、これについては以下に説明してゆく。説明している様に、入力受信部518は、(単数又は複数の)入力を緩衝記憶し、それらをバックアップインスタンス504へゲーティングする。プライマリ故障検出論理516は、プライマリインスタンス502の(単数又は複数の)出力を監視し、説明している様に、プライマリインスタンス502が故障してしまったかどうかを判定する。プライマリ故障検出論理516がプライマリインスタンス502は故障してしまったと判定すれば、プライマリ故障検出論理516は、更にプライマリインスタンス502をシャットダウンさせてバックアップインスタンス504へフェイルオーバーするように行動し、プライマリインスタンス502が処理し損ねた未処理の(単数又は複数の)入力があるかどうかを判定し、次いで、バックアップインスタンス504に通常の動作をプライマリインスタンス502から引き継がせる。バックアップ故障検出論理528は、所与の(単数又は複数の)入力についてプライマリインスタンス502とバックアップインスタンス504の両方の(単数又は複数の)出力を監視し、それらが整合しているか否かを判定する。1つの実施形態では、不整合であれば、バックアップインスタンス504に障害有り、がトリガされる。或る代わりの実施形態では、不整合であれば、ここに説明されている様にプライマリインスタンス502からバックアップインスタンス504へのフェイルオーバーがトリガされる。バックアップ故障検出論理528は、更に、バックアップインスタンス504のネットワーク接続性をチェックし、バックアップインスタンス504のネットワーク接続性が故障してしまったと判定されたときには、バックアップインスタンス504に障害有りと判定する。
システム500の動作中、(単数又は複数の)入力は、例えばネットワーク508を介して、プライマリインスタンス502によって受信されるか、又は少なくともプライマリインスタンス502へ送信される。(単数又は複数の)入力は、同様にネットワーク508と連結されている他のエンティティから受信されるか又は他のエンティティによって送信されていることもあろうし、(単数又は複数の)入力はプライマリインスタンス502自体によって生成されていることもあろう。説明してゆくが、フォールトトレラント論理514は、更に、プライマリインスタンス502に向けて、プライマリインスタンス502が正しく動作しているか否かを判定するために(単数又は複数の)入力を生成することもある。ネットワーク508は、1つ又はそれ以上の入力バス、公衆又は私用の有線又は無線ネットワーク、又はそれらの組合せを含み、更に機密保護又は認証プロトコルはもとよりエラー検出及び訂正プロトコルを特徴としていてもよい。1つの実施形態では、ネットワーク508は、TCP/IPプロトコルスイートを実装している。何れのネットワークプロトコル及び通信技術を、開示されている実施形態と共に使用してもよいものと理解しておきたい。(単数又は複数の)入力のコピーは、同様に、フォールトトレラント論理514の入力受信部518にも受信されるが、その受信は、想定されているプライマリインスタンス502による当該入力の受信と実質的に同時に起こってもよいであろうし、実装に応じてその受容可能な限界内で起こってもよいであろう。1つの実施形態では、入力は、ネットワーク508上を、プライマリインスタンス502とフォールトトレラント論理514の両方へ同報通信(multicast)される。同報通信は、ネットワーク上の単一の送信側と複数の受信側の間の通信である。多数の入力をプライマリインスタンス502とフォールトトレラント論理514へ同報通信することができ、そしてネットワーク508の実装のせいで、(単数又は複数の)入力はそれらがプライマリインスタンス502によって受信されたのと異なった順序及び/又は異なった時間にフォールトトレラント論理514によって受信されるかもしれないことを理解しておきたい。1つの実施形態では、ネットワーク508は、金融取引所によって使用されている取引用エンジンの突き合わせサーバの注文エントリバスを含んでいる。(単数又は複数の)入力の受信の順序はどうでもよい、というのが開示されている実施形態の特徴である。説明してゆくが、フォールトトレラント論理514によって受信された(単数又は複数の)入力は、入力受信部518によって緩衝記憶され、フォールトトレラント論理514の制御下にバックアップインスタンス504へゲーティングされる。以下により詳細に説明してゆくが、このやり方では、フォールトトレラント論理514は、プライマリインスタンス502との同期化を確約するべくバックアップインスタンス504を取り囲んでいるが、バックアップインスタンス504は自身にとって外部のフォールトトレラント論理514に気付いている必要はない。
図1に示されている様に、通常の動作条件下で、(単数又は複数の)入力(ブロック102)がネットワーク508を介してプライマリインスタンス502によって受信される(ブロック106)と、プライマリインスタンス502は、当該(単数又は複数の)入力を、自身のプログラムされている機能に従って処理し、例えば、トレーダーの注文入力を、金融取引所における取引が完結されるように突き合わせる。処理の完了時又は処理中、プライマリインスタンス502はデータベース506相手に、例えば(単数又は複数の)入力の受信及び/又は処理に関連する監査データ又はトランザクションデータの様な入力関連データを記憶させるべく、トランザクションを行おうとするが、それについては、1つの実施形態による図5のフォールトトレラントシステムと共に使用するためのデータベースの動作を示す流れ図を描いている図2(ブロック202、204)に更に詳細に示している。データベース506とのトランザクションが制約違反以外の理由で失敗した場合(図2に図示せず)、プライマリインスタンス502はトランザクションをそれが成功するまで又は連続失敗の閾値が発現するまで再試行する。データベーストランザクションが成功すれば(図2のブロック206、208)、プライマリインスタンス502は、そのプログラム機能によって指示される通り、1つ又はそれ以上の応答/出力及び/又は確認通知を生成して、例えば(単数又は複数の)入力の起源元へ、送信する。例えば、プライマリインスタンス502が突き合わせサーバであるなら、(単数又は複数の)入力は取引注文を含んでいるであろうし、それに対する(単数又は複数の)応答は注文が受信されたことの確認通知や取引実行の確認を含んでいるであろう。プライマリインスタンス502の出力は、その意図された受信先へ送信されることに加えて、フォールトトレラント論理514の突き合わせ論理532にもコピーされる。突き合わせ論理532は、バッファ524とコンパレータ526を含んでいる。バッファ524は、所与の(単数又は複数の)の入力について、プライマリインスタンス502の(単数又は複数の)出力を、バックアップインスタンス504の対応する(単数又は複数の)出力がバックアップインスタンスによって送信されるまで保持する。次いで、所与の(単数又は複数の)入力についてのプライマリインスタンス502及びバックアップインスタンス504の(単数又は複数の)出力がコンパレータ526によって比較され、その結果がバックアップ故障検出論理528へ報告される。コンパレータ526は、比較される出力同士が完全整合か実質的整合かを判定していてもよいものと理解しておきたい。更に、コンパレータは、(単数又は複数の)出力の一部分、ハッシュ値、又はチェックサム、或いはそれらの組合せを比較するだけでもよい。
1つの実施形態では、プライマリインスタンス502は、時間的な機能性を実装しており、即ち、入力に対する機能を現在時刻の様な時間パラメータに基づいて遂行する。例えば、プライマリインスタンス502は、入力が生成された時間を入力がプライマリインスタンス502に到達する時間と比較してもよい。所与の入力が注文を表している場合、この機能性は、注文が失効しているかどうかを判定するのに利用することができるであろう。図5に示されている様に、プライマリインスタンス502はクロック入力550を含んでおり、当該クロック入力は、クロック回路又は時間の表示を提供するように動作する他のデバイスの様なクロック548に連結されている。バックアップインスタンス504も、クロック入力552を特徴としており、当該クロック入力は同様に、入力のコピーに対して特定の時間的機能を遂行するために時間入力を受信する。しかしながら、他の箇所で指摘した様に、バックアップインスタンス504は、必ずやプライマリインスタンス502より遅い時間に入力を処理する。バックアップインスタンス504が同様に現在時刻を入力として使用したとしても、プライマリインスタンス502と同じ結果には終わらないであろう。それ故、プライマリインスタンス502がその処理を完了し、それに基づく出力結果を生成したら、出力にはその処理に使用された特定の時間を表現しているデータが含まれている。このデータは、次いで、入力受信部518によって抽出され、対応する入力と併せてバックアップインスタンスのクロック入力552に提供されるので、実際の時間がずっと後であっても、バックアップインスタンス502にはプライマリインスタンス502によって使用されたのと等価の時間データが提供されることになる。この時間データは、絶対時間又は相対若しくは経過期間として規定されるものと理解しておきたい。これにより、確実に、バックアップインスタンスは時間ベースの機能に関して同じ結果を正確に作製するようになる。
データベース506のトランザクションが制約違反のせいで失敗すれば(図2のブロック206、210)、プライマリインスタンス502は、故障状態に入る(ブロック114)。以下に更に詳細に説明してゆくが、フォールトトレラント論理514は、制約違反がデータベース506によってプライマリインスタンス502に返されるように強いて、無理やりプライマリインスタンス502を故障状態に追い込むことができる。これは、障害状況でバックアップインスタンス504が引き継ぐことができるようにプライマリインスタンス502を無効にする目的で行われるものであって、事実上、プライマリインスタンス自身の内部の障害対処機構を活用している。プライマリインスタンス502によるデータベーストランザクションへの応答に制約違反を生じさせることは、プライマリインスタンス502が動作的に依存する外部トランザクションを完了するのを妨害又は阻止するための機構の一例であり、他のその様な機構も利用でき、それらはプライマリインスタンス502の実装に依存するものであることを理解しておきたい。更に、プライマリインスタンス502は、例えば、プロセスをキルしたり実行中のサーバからパワーを抜くなどして外部から終了させることもできるであろうが、強制的にプライマリインスタンス502を自己終了又はフェイルソフトさせれば、退き際をよりクリーンにすることができ、即ち、プライマリインスタンス502によって使用されているリソース、例えば割り当てられたメモリ、レジスタ、スタックスペースなどはオペレーティングシステムに復帰させることができ、コミットされていないトランザクション又は解決されていないトランザクションの様な何らかの曖昧状態は解消される。更に、プライマリインスタンスを通信又は対話から単純に切り離すのではなくて、強制的にプライマリインスタンス502を故障させることにより、プライマリインスタンス502によるリソースの継続消費と他のプロセスへの後効果などを軽減することができる。更に、制約違反をプライマリインスタンス502へ返すことを利用することにより、プライマリインスタンス502は、既知のポイントに停止されること、及び/又は少なくとも外部的には既知の状態に停止されることが保証され、故障より前にプライマリインスタンスによって処理されていた、順序付けされた入力のセットは、プライマリインスタンス502が手の届かない状態或いはそれ以外に一貫性のない状態になったとしても、フォールトトレラント論理514によって知られるか又は発見されることが保証される。
或る代わりの実施形態では、入力又はトランザクションは、それらの完了が重要不可欠であるか否かに基づいて差別化させることができる。具体的には、データベース動作の間での差別化、即ち、その完了を待つべきである動作と、「インフライト」即ち進行している間も他の処理を継続させることのできる動作、例えばその間にもメッセージを顧客に返したりできる動作との間の差別化を可能にする機能性が提供されていてもよい。例えば、拒絶された注文を持続させることには、3つの呼び出し、即ち、フォールトトレランス表へ1つ(メッセージシーケンス、メッセージ毎に1つ)、注文履歴表へ1つ、そして注文表へ1つ、が伴う。第1の呼び出しだけは待たれる必要がある。エンジンが、メッセージへの応答を送った後に、但し注文及び注文履歴呼び出しを首尾よく持続させるより前に故障するということになった場合、その影響は1つの拒絶された注文のログが取られなくなるというものである。これは、それほど重要ではないと考えられており、そこで、我々は、どの持続性動作が業務上重要性を有しているかを故障に関する我々のポリシーに照らして判定することにより、多くのデータベーストランザクションを、往復に要する時間から救い出すことができるはずである。これは、注文を観察してみると一目瞭然である。グッドティルキャンセル(GTC:Good Till Cancel(取り消しまで有効))注文とグッドティルデート(GTD:Good Till Date(指定日まで有効))注文は、取引所又はエンジンの故障とは無関係に実効性のあることが保証される注文である。結果として、我々は、メッセージへの返答に先んじてそれらが持続されていることを保証しなくてはならない。CMEポリシーにより、デイ(Day:当日限り有効)注文と当日のGTC注文(他のGTC注文やGTD注文は適用外)は、取引所の故障に関して除外されており、我々はそれらを待つ必要はない。このため、プライマリインスタンス502/バックアップインスタンス504は、2つの異なった入力型式の間で、出力を生成する前にデータベース動作が完了していなければならないものと、データベース動作が完了している必要はなく、ひいては完了前に出力が生成されてもよいものとを区別するように実装される。図1に示されている様に、トランザクション記憶の試行(ブロック110、126)と並行して、待機を要しないそれらの入力については、処理は、データベース506が記憶の完了を報告する(ブロック112、114、128、130)のを待つことなく、確認/応答の送信(ブロック116、132)を進めることができる。プライマリインスタンス502及びバックアップインスタンス504は、データベース506動作の完了に依存するトランザクションと依存しないトランザクションを識別するように適切にプログラムされているものと理解しておきたい。
フォールトトレラント論理516は、プライマリインスタンス502を実際にシャットダウンする必要はないが、プライマリインスタンス502が外界へそれ以上動作を送って、引き継ごうとしているバックアップインスタンス504との対立を生じさせたりしないように保証することだけはどうしても必要であることが理解されるであろう。具体的にいうと、開示されている実施形態では、フォールトトレラント論理516は、プライマリインスタンス502に接触を取れない、キルさせられない、又はそれ以外に直接影響を与えられないという最悪時シナリオを想定している。プライマリインスタンス502がデータベーストランザクションの様な動作的に依存する外部動作を完了させることを封じることにより、バックアップインスタンス504が、ネットワークから完全に切り離されてしまったプライマリインスタンス502を、当該プライマリインスタンスに接触を取ったりプライマリインスタンスを何らかのやり方で直接つついたりしなくても、引き継げることが保証される。データベースのブロックアウトが完了してしまえば、バックアップインスタンス504にとっては、プライマリインスタンス502自身が不応答状態のままであるかどうかとか、プライマリインスタンス自身が終了するかどうかとかはどうでもよいことであるが、とはいえ、プライマリインスタンス502は、制約違反を介してブロックアウトを見極めればやはりシャットダウンするものであり、それは今や無用なプロセスではあっても、情報のログを取ることと秩序だったシャットダウンにより、プロセスを監視しているものが故障に気付き適切に再起動のステップを取れるようになる。
以上に説明した様に、(単数又は複数の)入力、即ちそれらのコピー、はフォールトトレラント論理518の入力受信部518によっても受信される(ブロック104)。入力受信部518は、受信された(単数又は複数の)入力を、例えば受信順に、緩衝記憶し、それらの(単数又は複数の)入力を処理のためにバックアップインスタンス504へゲーティングする。具体的には、所与の入力、例えば、n、n−1、n−yなどについて、入力受信部518は、プライマリインスタンス502の(単数又は複数の)出力を監視して、次に続いて受信される(単数又は複数の)入力、例えば、n+1、+2、+xに対応する(単数又は複数の)出力がプライマリインスタンス502によって何時送信されるかを判定する(ブロック118)。これが起こったとき、入力受信部518は、所与の先行の(単数又は複数の)入力の1つ又はそれ以上、例えば、(n+x)−yを、処理のためにバックアップインスタンス504へ送る(ブロック120)。この様にして、バックアップインスタンス504は、常に、プライマリインスタンス502に遅れて歩調を合わせながら処理している。更に、次に続けて受信される入力についての出力の受信は、1つの実施形態では、バックアップインスタンス504による処理を待っている入力がプライマリインスタンス502によって現在処理中であること又は既に首尾よく処理されたことの裏付けになる。バックアップインスタンス504は、次いで、(単数又は複数の)入力を、プライマリインスタンス502と同じ方式(以上に説明済み)で処理する(ブロック122、124、126、128、139、132)。しかしながら、プライマリインスタンス502が正常に動作していて、障害が検出されていない状況では、バックアップインスタンス504は、データベース506との対話が阻止されていて、代わりに、成功したデータベーストランザクションの結果を模倣してバックアップインスタンス504へ返すデータベース模倣論理530と対話している。或る代わりの実施形態では、バックアップインスタンス504は、データベース506との対話を試みないようにプログラムされており、その結果、データベース模倣論理530の必要性はなくなる。更に、バックアップインスタンス504の(単数又は複数の)出力が、突き合わせ論理532へ提供されて、それらがプライマリインスタンス502の対応する(単数又は複数の)出力と整合しているかどうかが判定される間、バックアップインスタンス504は、(単数又は複数の)出力を他のエンティティへ通信してしまいプライマリインスタンス502の正常な動作に干渉してしまうことのないようにされている。ゲーティング論理520、522は、フォールトトレラント論理514の制御下に、プライマリインスタンス502かバックアップインスタンス504がその(単数又は複数の)出力を外部エンティティへ、例えばネットワーク512を介して、送信することを許可されるかどうかを、故障が検出されているかどうかなどに基づいて制御する。
プライマリインスタンス502とバックアップインスタンス504が正常に動作し続けている限り、即ち(単数又は複数の)入力を処理し必要な出力を生成している限り、システム500は、説明した通りに動作する。
図3は、図5のフォールトトレラントシステム500の動作、特にプライマリ故障検出論理516とバックアップ故障検出論理528の動作を、障害状況を検出し対処するための監視に関して示している、更に詳細な流れ図を描いている。図3に示している様に、プライマリ故障検出論理516とバックアップ故障検出論理528は、複数のプロセス/イベントループ/流れ、及び/又はスレッドを実装しており、それらは、イベントを監視し、それらのイベントに基づいて又はそれらのイベントの欠如に基づいて、所望のフォールトトレラント活動を実装するアクションをトリガする。上記の機能性を実装するのに使用されるプロセスやスレッドなどの数、それらの実行が並行であるか連続か、監視対象のイベントの性質、及び所与のイベント又はイベントの欠如に対応して取られるアクションは、実装依存性であるということ、具体的にいうと、どんなイベント、条件、又はそれらの組合せが障害と定義され、どんなイベント、条件、又はそれらの組合せが正常動作状態と定義されているかに依存していることを理解しておきたい。フォールトトレラント論理514、具体的には、プライマリ故障検出論理516とバックアップ故障検出論理528を、プライマリインスタンス502又はバックアップインスタンス504のどちらかが障害していると判明させるために満たさなければならない例示としてのイベント及び条件のセット並びにそれに関して取られる例示としてのアクションのセットに関連付けて説明してゆく。それに関する条件及びアクションについては、開示されている実施形態の範囲内で実装することのできるものが他にもあるものと理解しておきたい。
説明してゆくが、障害が何も検出されていない限り、システム500は、正常動作状態に留っており、プライマリインスタンス502は動作し、バックアップインスタンス504はプライマリインスタンス502に歩調を合わせて遅行している(ブロック302)。図4に示されている様に、正常動作状態の下では、バックアップインスタンス504の(単数又は複数の)出力は通信されることを差し止められ、一方でプライマリインスタンス502の(単数又は複数の)出力は、ゲーティング論理520、522によって、外部エンティティへ、例えばネットワーク512を介して、通信されることが許容されている。更に、バックアップインスタンス504のデータベース506へのアクセスは封じられており、バックアップインスタンス504のデータベーストランザクションの完了成功はデータベース模倣論理530によって模倣されるか、又は代わりに、バックアップインスタンス504はデータベース506と対話しないようにプログラムされている。
プロセスの流れの反復は、クロック、カウンタ、イベント、又は他のトリガによって確定することができるものであって、その所与の反復の都度、プライマリインスタンス502が出力を送信したか否かについて判定が下される(ブロック304)。1つ又はそれ以上の出力が受信されていれば、以上に説明した様に、出力が他の先行して受信されている入力に続けて受信された1つ又はそれ以上の入力に対応しているかどうかが判定され(ブロック118)、そうなら、先行して受信されている他の入力はプライマリインスタンス502によって処理されているはずであり、従って、次いで処理のためにバックアップインスタンス504へ送られることになる(ブロック120)。更に、受信された(単数又は複数の)出力は、バックアップインスタンス504からの対応する(単数又は複数の)出力の受信を持つ間も緩衝記憶される(ブロック324、306)。対応する(単数又は複数の)出力がバックアップインスタンス504から受信されると、それらは、プライマリインスタンス502の(単数又は複数の)出力と比較される(ブロック136)。それらが整合すると、処理は継続する。それらが整合しない場合、1つの実施形態では、バックアップインスタンス504に障害有りと判定され、バックアップインスタンス504は故障状態に入れられる(ブロック138)。代わりのやり方では、プライマリインスタンス502とバックアップインスタンス504の対応する(単数又は複数の)出力同士の不整合は、プライマリインスタンス502の故障を反映しているものと判定され、ここに記載されているフェイルオーバー機構がトリガされる。
プライマリインスタンス502からの出力がなければ、次に、出力が最後にプライマリインスタンスから検出されてから、閾値タイムアウトを経過又は超過したかどうかが判定される。1つの実施形態では、ここに記載されているイベント/プロセスの流れの全てによって使用されるものとしてのグローバルなタイムアウト閾値が定義されており、それらの比較動作で同閾値又はその倍数を利用することができる。代わりに、それぞれの特定のプロセス毎に別建ての閾値が定義されていてもよい。本実施形態では、タイムアウト閾値の何倍かの間、例えば閾値の10倍の間に、何も出力がプライマリインスタンス502から受信されていなければ(ブロック308)、フォールトトレラント論理514はプライマリインスタンス502へのハートビート入力を生成するが、この入力は以上に説明した様にバックアップインスタンス504へもコピーされ、そしてここに記載の機構をトリガしてプライマリインスタンス502からの何らかの形式の出力を強要する。これにより、フォールトトレラント論理514は、プライマリインスタンス502からの活動の欠如は、故障が原因なのか、或いは、例えば処理されるべき入力がないといった理に適ったものなのかを見極めることができる。ハートビート入力は、フォールトトレラント論理514にもその他の受信入力同様に受信され、プライマリインスタンス502が実際に故障してしまったかどうかを判定するためのここに記載の他の障害検出プロセスをトリガすることになる。
更に、プライマリインスタンス502から何も出力が受信されていないと判定されたとき、プライマリインスタンス502が故障してしまったと結論付けるのに、或る条件のセットが、連続(図示)又は並行に又は何か他の論理的配列でチェックされる。代わりの実施形態では、プライマリインスタンス502の故障という結論は、他の論理手段によるか又は他の条件及び/又はイベントに基づいて到達されてもよい。例示としての実施形態では、チェックされる条件には、おそらくは或る入力がプライマリインスタンス502によって受信されていることが、当該入力がフォールトトレラント論理514によって受信されていることから判断でき、出力の生成が待たれていると判定すること(ブロック312)が含まれる。繰り返すが、プライマリインスタンス502への入力がない場合には、理に適ったこととして、プライマリインスタンスからの出力はないことになる。加えて、出力を待っている入力がある場合は、入力の古さが判定され、定義されている閾値古さと比較される(ブロック314)。入力が閾値古さより古い場合、障害無しと判定されることになる。これは、システム500の始動中に受信される入力の様な、場合により実装とプライマリインスタンス502側の負荷によっては起こることが予想され得る取りこぼしを被った入力が、バックアップインスタンス504によって処理されることを防止し、フェイルオーバー条件を発動させるのを防ぐ。このチェックは、システム500の障害に対する寛容レベルについて実装に従って受容可能と思われるレベルに適合するように特別仕様化することができ、例えば、受容可能な閾値古さを調節してもよいであろうし、その様な障害の頻度を測定して受容可能な閾値に照らして比較してもよいであろう。エラー又は障害を断じて寛容できないシステム500では、このチェックは実装できないかもしれない。
更に、先行の出力はプライマリインスタンス502から受信されているかどうかが判定されるが、そのことはプライマリインスタンスが過去に機能していたことの証であり、システム500を最初に始動させたときに障害条件が確定してしまうのを防ぐ(ブロック316)。ここでもやはり、障害を寛容し得ないシステム500では、このチェックは実装できないかもしれない。これらの条件には合致するが、閾値タイムアウトの半分又は何分の一かしか経過していない場合(ブロック318、320)は、フォールトトレラント論理514及び/又はバックアップインスタンス504のネットワーク接続性がチェックされる。1つの実施形態では、ピング信号がフォールトトレラント論理514又はその上で実行中のサーバからプライマリインスタンス502又はその上で実行中のサーバの様な受信側へ送られており、例えば、ピングユーティリティ/プロセスを使用して、ネットワーク接続性の状態を判定するように設計された試験通信が送信されてもよい。処理が継続している間、別建てのプロセッサが、ネットワーク接続性がうまくいっている証しとなるピングへの応答を待つ(ブロック316)。何も応答が受信されなければ、ネットワーク接続性の喪失が推定されるため、バックアップインスタンス504は故障状態に入れられる。閾値タイムアウトを超過していて他の条件の全てに合致した場合は、プライマリインスタンス502の故障が確定する(ブロック302)。
図4に示されている様に、プライマリインスタンス502の故障が確定する(ブロック402)と、プライマリインスタンス502は、バックアップインスタンス504にフェイルオーバーされる。具体的には、プライマリインスタンス502の出力は、ゲーティング論理520によって通信されることを差し止められるか又は別のやり方で阻害され、一方でバックアップインスタンス504の出力はゲーティング論理522によって通信されることが許可される。加えて、バックアップインスタンス504は、データベース506とのトランザクション遂行を許可される。次いで、プライマリ故障検出論理516はブロッキングデータをデータベース506の中へ記憶する。ブロッキングデータは、プライマリインスタンス502が同様に記憶させることを試みるはずのストレージを占めるように構成されている。プライマリインスタンス502がマルチスレッド化されている1つの実施形態では、プライマリ故障検出論理516は、N個の非同期書き込みスレッドのブロックアウトに対処することができ、書き込みスレッドは順繰りに書き込んでいなくてもよいし、継続的に書き込んでいてもよい(故障時に跳び越えた先のブロックに書き込もうとするなど)。プライマリインスタンス502がなおアクティブであり入力を処理しようとしているなら、ブロッキングデータがデータベース506に制約違反をプライマリインスタンス502に返すように仕向けることになる。説明した様に、制約違反は、強制的にプライマリインスタンス502に自己停止させるはずである。プライマリインスタンス502が封じられてしまえば、フォールトトレラント論理514は、入力受信部518によって受信された入力で未処理のままになっている入力を分析し、且つデータベース506を分析して故障より前のプライマリインスタンス502の最終アクションを判定することによって、どの入力が処理される必要があるかを確定する(ブロック410)。次いで、これらの入力はバックアップインスタンス504へ送られて処理される(ブロック412)。するとバックアップインスタンスによる通常の処理が開始される(ブロック414)。
1つの実施形態では、バックアップインスタンス504が故障した場合、バックインスタンス504は故障したプライマリインスタンス502を引き継げないようにされる。更に、故障したバックアップインスタンス504を引き継ぐべく、別のバックアップインスタンス504が始動される。プライマリインスタンス502又はバックアップインスタンス504の何れかの故障の場合、警報が、他の監視用プログラム又はプロセスに送信されるか、或いはそれらに介入の必要性を警報する監視スタッフに送信される。
プライマリインスタンス502が正常に動作している間はプライマリインスタンス502に遅れてついて行っていれば、バックアップインスタンス504は、プライマリインスタンス502と同期を保つことについて気を患わせることなく、故障したプライマリインスタンス502によって終えられていない何らかの処理を解決することができる。動作時、開示されているフォールトトレラント論理514は、プライマリインスタンス502が動作を完全に停止したときに、又は処理を継続しているが正しい(単数又は複数の)出力を送り損ねたときに、又は所与の(単数又は複数の)入力についてのプライマリインスタンス502とバックアップインスタンス504の対応する(単数又は複数の)出力が整合し損ねたときに、故障を検出する。
1つの実施形態では、図6に示されている様に、プライマリインスタンス502とバックアップインスタンス504は、シカゴ・マーカンタイル取引所によって利用されているファルコン商取引エンジン(Falcon Trading Engine)600の様な、金融取引所の商取引エンジン600のための突き合わせエンジンのインスタンスである。突き合わせエンジン602とデータベース604は、冗長ペアになって実行されている。本システムは、何れの単一の突き合わせエンジン602A、602B、又はデータベースサーバについても、取引活動を中断させることなく、それを停止させることができる。ファルコン突き合わせエンジンのフォールトトレランスは、ここに説明されているカスタムアーキテクチャによってアプリケーションレベルで対処される。
突き合わせエンジン602は、上に説明されている様に、ペアになったプライマリ/バックアップ構成で実行するように設計されている。個々のファルコン突き合わせエンジン602A、602Bそれぞれは、緩く連結されたスレッドのセットを備える1つのプロセスである。完成された突き合わせエンジンプロセスの機能性は、これらのスレッド間で下位分割されている。このおかげで、物理的に別建てのプロセッサに対する作業の並列化が簡単になり、より費用の安いハードウェアを使用できるようになる。
図7と図8は、図6のフォールトトレラントシステムの更に詳細なブロック線図を描いている。突き合わせ構成要素602は、ファルコンエンジンの最高権威である。それは、注文の受け入れと突き合わせを行い、更に、ファルコンエンジン内のインライン限定のトランザクションの持続性を制御する。突き合わせ構成要素602は、気配値要求(request for quotes)と、入って来る注文と、注文の取り消しを、ファルコン・ゲートウェイから受け入れることになる。それは、応答と取引実行を、市場データ構成要素とファルコンゲートウェイの両方へ発送することになる。構成と管理の呼び出し全ては、突き合わせ構成要素602を通し、ゲートウェイ経由で、例えば、Java(登録商標)メッセージングサービス(「JMS」)を使用して送られる。突き合わせ構成要素602は、管理と構成の情報全てを、他の構成要素へ、ファルコン内部メッセージマネジャを介して通信する。
それぞれのファルコンインスタンス602A、602Bは、いつでも着信してくる注文を受け入れられるようになる前に、特定のエンジン状態を経ることになる。突き合わせ構成要素602は、エンジン状態に対する最高権威であり、それぞれのファルコン突き合わせエンジンサーバのその他全ての構成要素を制御する。市場スケジュールは、管理(Admin)データベースに記憶され、突き合わせサーバへ通信される(始動時、及び実行時間中には取引カレンダー更新を介す)。次に状態の変更が構成要素内でスケジュールされ、突き合わせ構成要素により起動される。状態の変更が起きた後、この情報は残りの構成要素へ管理オペレーション(AdminOperation)メッセージを介して送られる。管理サーバは、更に、突き合わせサーバの現在の状態を、管理オペレーションを送ることによって変更することもできる。管理上の管理オペレーション呼び出しは全て、ゲートウェイ構成要素によって受信され、突き合わせ構成要素へ送られる。突き合わせ構成要素が管理オペレーションを確認したら、全ての他の構成要素は同じ方式で応答する。
突き合わせ構成要素602の主要な実行経路は、単一のスレッドである。このスレッドは、メッセージを、内部メッセージバスから引き取り、それらを処理し、応答を発送する。結果として、マッチスレッドではどの所与の時点でも1つのオペレーションしか進行していない。データベースの持続性に関しては、多くのスレッドを非同期的に使用することができ、注文は後で記憶し直される。「ブロック」のサイズは、データベーススレッドの#*データベースバッチサイズに等しいものとして、上述されているプライマリ故障検出論理516は、N個の非同期書き込みスレッドのブロックアウトに対処することができ、書き込みスレッドは順繰りに書き込んでいなくてもよいし、継続的に書き込んでいてもよい(故障時に跳び越えた先のブロックに書き込もうとするなど)。
突き合わせスレッドの所与の注文控元帳について、単一の割り付けアルゴリズムと、構成可能なオーバーレイ量がある。着信してくる注文は、順々に、先ずそれぞれのオーバーレイへ回され、次に割り付けアルゴリズムへ回される。それぞれのオーバーレイと割り付けアルゴリズムは、次に、適切な充填を生成する。当該注文が上記のそれぞれを通過してしまえば、残り(仮にあった場合)が控元帳に載せられ、充填メッセージが送られる。ファルコン1.5には、着信してくる注文の注文割り付けを制御するオーバーレイが2つある―Lead Market Maker(値付け先導役)(「LMM」)とTOP(トップ)(Min(最小)/Max(最大))である。LMMでは、一部の特定のユーザーからの注文は、1つ1つの着信してくる注文について、例えばx%の優遇割り付けが受けられる。優遇割り付けの見返りとして、それらのユーザーは、多くの市場について気配値を提示し流動性をもたらすことに同意する。TOPでは、市場の動向を変える〔より良い値での最初の注文〕が、同価格でそれに参加している他の注文に勝って優遇割り付けを受けられる。MinとMaxは、或る注文についてそれがどれほどのMINサイズでなくてはならないかということとそれがトップ状態を失う前にどれほどのMAX割り付けを受けることができるかを確定する修飾子である。控元帳は、オーバーレイを全て或いは一部備えた構成とすることもできるし、オーバーレイを全く備えない構成とすることもできる。
突き合わせスレッドは、時限イベント(例えば、グループを開く/グループを閉じる)を発動しない。代わりに、これらのイベントは、専用スレッドによって発動される。当該イベントが発動されると、それは、メッセージに変換され、その他のメッセージと同じ様に突き合わせスレッドの待ち行列に載せられる。結果として、それらはその他のメッセージと同じ様に1度に1つずつ処理される。
ファルコン内でデータを持続させる理由は、回復と規制と監視(オペレーションスタッフによる)の3つしかない。このデータのうちの一部は、トランザクション式にインラインのディスクへ書き込まれる必要がある。これは、トランザクションを完了させている間、突き合わせサーバは応答の送発を遅らせなくてはならないことを意味する。
更に、業務特定データ及びシステム特定データの1つ又はそれ以上のログが維持されている。これらのログは、トランザクション式ではなく、ローカルディスクに常駐している。業務特定ログはファルコンが生成する全ての業務情報を収容し、システムログはシステム管理人のために相応化されたファルコン技術情報を収容している。
説明した様に、ファルコンアーキテクチャは、プライマリサーバ602A(インスタンス)と、活動的に実行するバックアップサーバ602B(インスタンス)で構成されることになる。バックアップ602Bは、プライマリの状態を正確に複製し、且つサービスのあからさまな中断なしに合理的に短い時間内にフェイルオーバーする能力を有することになろう。
バックアップがフェイルオーバーするのに掛かる最大遅延は、7−10秒となろう。時間はもっと短縮できるかもしれないが、偽陽性故障検出を防ぐ最適な設定の知見に基づき決定するとこうなる。フェイルオーバー時間は、構成可能なパラメータということになろう。
本システムは、重複メッセージについてそれらを重複可能とマーキングせずに送ることは決してない。本システムは、重複可能とマーキングされて送り出されるメッセージの数を限定しなくてはならない。本システムは、フェイルオーバーによって引き起こされたときに重複可能を送信するだけであって、正常動作中は、何も生成されることはない。
ファルコンフォールトトレランスは、以上に説明した様に、アクティブ/コピーキャットと呼ばれる概念に基づいている。このシステムでは、バックアップ602Bとプライマリ602Aは、注文エントリバス606からの入力メッセージを聴取する。1つの実施形態では、注文エントリバス606は論理構成要素であり、複数の注文エントリバス606があってもよい。更に、バックアップ602Bは、プライマリ602Aからの応答メッセージを聴取する。所与の入力への応答と、次に受信された入力への応答と、が受信されると、バックアップ602Bは、次いで、同じ入力を処理することによりプライマリ602Aをコピーし、当該プライマリ応答を自身の出力と比較する。バックアップサーバ602Bは、出力メッセージ発行とデータベース604への書き込み以外は、プライマリサーバと同じアクションを行う。アクティブ/コピーキャットを働かせるために、メッセージングインフラストラクチュアに関し以下の要件が存在しており、即ち:
・ファルコンによって送信される全てのメッセージは送信元及び単調増加式のシーケンス番号(送信元であるファルコンサーバ別)とによって固有に識別されることになる。これが、イベントシーケンス番号であり、ファルコンインスタンスに固有である。
・全ての入力メッセージは、固有に識別されなければならない。
・ファルコンのプライマリ602Aによって発行される全ての出力メッセージは、どのメッセージに対してそれが応答したのかを示す表示を有することになる。こうして、バックアップ602Bは、応答を生じさせることになった入力メッセージを識別することができる。
・ファルコンのプライマリ602Aによって発行される全ての出力メッセージは、現在の出力をもたらした入力メッセージの前にどの入力メッセージが処理されたかを示す表示を有することになる(例えば、入力メッセージ2への全ての応答は、前のフィールドにメッセージ1を有することになる)。
プライマリモードでは、フォールトトレランス特定クラスは使用されない。プライマリ602Aは、バックアップ602Bが存在しているか否かに気付いていず、即ち、バックアップ602Bを実行させる必要があるということは一切要件とはなっておらず、バックアップは、どんな場合にも送信されることになるトラフィックを受動的に聴取するものである。結果として、説明されているフォールトトレランスの実装は、プライマリの実行されているインスタンスへは性能上何ら影響を及ぼさない。
バックアップ602Bでは、実際のコピーキャット論理チェックは、フォールトトレラント(「FT」)メッセージマネジャにより行われる。これらのオブジェクトは、システムの業務論理構成要素(ゲートウェイ、市場データ、及び突き合わせサーバ)に、各々のプライマリ状態/バックアップ状態に殆ど無頓着でいられる。ゲートウェイ及び市場データは、始動時に限って各々の状態に気付いていればよく、そうすれば、それらは正しいFTメッセージマネジャをインスタンス化することができる。突き合わせサーバは、データベースへの書き込みを有効/無効にするために状態に気付いている必要がある。状態とは無関係に、それぞれの構成要素は、通常通りメッセージを送受信し、即ち、バックアップモードでは、構成要素のFTメッセージマネジャが入って来るメッセージを順序付けることと出力メッセージを差し止めることは責務である。
FTメッセージマネジャは、注文エントリ用に1つと市場データ用に1つのFTポリシーオブジェクトによって制御されている。
本実施形態では、以下のパラメータが構成でき、即ち:
−フォールトトレランス故障タイムアウト(FaultToleranceFailureTimeout)―フェイルオーバー条件が存在しているというイベントの時にフェイルオーバーするまでにバックアップはどれほど長く待たなくてはならないかということ。
−フォールトトレランス入力メッセージ失効(FaultToleranceInputMessageExpiration)―メッセージについてそれがどれほど古ければフェイルオーバーをもたらさないかということ。万一フェイルオーバーしても、これらのメッセージは、エンジンへ転送されない。
−フォールトトレランスMM受信トピック(FaultToleranceMMReceiveTopic)―FTポンオン(pong on)を受信するトピック。
−フォールトトレランスMM送信トピック(FaultToleranceMMSendTopic)―FTピングオン(ping on)を送信するトピック。空値/空白であれば、ピングは成功であると推測される。
−フォールトトレランスハートビートインターバル(FaultToleranceHeartbeatInterval)―活動なし期間の持続中、バックアップが入力を生成してそれをプライマリへ送り、プライマリがまだ活動しているかどうかを判定する前に、どれほど待たなくてはならないかということ。
注文エントリフォールトトレラントポリシーオブジェクトには、入力メッセージを、確実にそれらメッセージがプライマリ602Aと同じ順序で処理されるように並べ替える責任がある。それは、また、プライマリの出力がバックアップの出力と整合していることの妥当性確認を行い、必要があればフェイルオーバーを起動させる。バックアップファルコン602Bの全ての入力ソースは、各々のメッセージを注文エントリFTポリシーへ送る。これは、管理サーバ、他の注文エントリゲートウェイ、及び内部ファルコンタイマーイベントを含んでいる。結果として、全ての入力イベントは、プライマリによって処理されるのと同じ順序に並べ替えられることになる。
正常なオペレーション中のメッセージの流れは、次の通りであり、即ち:
1.メッセージが送信元から受信され、入力の待ち行列に入れられる。
2.1つ又はそれ以上の出力メッセージが、入力メッセージに応答したプライマリファルコンインスタンス602Aから受信される。
3.次の入力メッセージについての1つの出力メッセージが、プライマリファルコンインスタンス602Aから受信される。
4.当該メッセージは、プライマリ602Aが前の入力メッセージを首尾よく処理したことの証であるので、先の入力はバックアップサーバ602Bへ処理のために転送される。
フェイルオーバーは、以下の場合の全てが真であるときに起動され、即ち:
−故障タイムアウトの間プライマリ602Aの応答が何も受信されていない。これは、プライマリ602Aがバックアップ602Bに話しかけていないことを示している。
−プライマリ602Aによって応答されていない少なくとも1つの入力がある。これは、プライマリ602Aに応答を要求しているメッセージがあることを示している。
−当該入力は、構成できる秒数より古くない。これは、繁忙な市場で稼働中のプライマリ602Aによって出力が1つ取りこぼされたからといって、プライマリ602Aがメッセージを処理している限りは、確実に、その様な取りこぼされた出力が当日の更に後刻にフェイルオーバーを招くことのないようにする。
−当該入力は、バックアップ602Bが最初にプライマリから聴取した後の少なくとも1つの故障タイムアウトを経て受信された。これは、確実に、プライマリが始動している最中にバックアップ602Bによって受信されたメッセージがフェイルオーバーを招くことのないようにする。
−故障タイムアウトが半分失効していて、以上の条件の全てが真である場合、バックアップは、自身のネットワーク接続性を裏付けるべく、例えば管理サーバ及び/又は他の注文エントリゲートウェイなどへ、ピングを起こすことになる。故障タイムアウトが全部失効してしまうと、仮に当該ピングが成功であった場合、バックアップ602Bはフェイルオーバーを起動させることになる。ピングが成功しなかった場合は、バックアップは、先を行くプライマリ602Aを引き継ぐことができないという状態を入力することになる。
バックアップ602Bは、それが作製する出力をプライマリ602Aによって受信された応答と比較する。比較が不合格であれば、バックアップ602Bは、先を行くプライマリ602Aを引き継ぐことができないという状態を入力することになる。タイムスタンプフィールドとチェックサムフィールドを除く全てのFIXメッセージフィールドは、プライマリ602Aとバックアップ602Bの両方によってハッシュされそれらのハッシュが比較される。メッセージに何らかの差異があれば、バックアップ602Bは、それに着目し、先を行くプライマリ602Aを引き継ごうと試みることはしない。全ての重要なイベントは、適切なログレベルでログを取られる。
市場の活動が低調な期間中に故障を検出するためには、バックアップ602Bは、それが10*故障タイムアウトの様な構成できる期間の間にプライマリ602Aからの聴取がなければ、入力メッセージを生成することになる。入力メッセージは、プライマリ602Aとバックアップ602Bの両方へユーザーからの何れかの入力と同じ方式で送られる。入力メッセージにはエンジンへの影響はないが、それはプライマリ602Aからの出力メッセージを生成し、同メッセージはバックアップ602Bによって読み出され処理される。正味効果は、バックアップ602Bが、プライマリに絡むどんな故障をも、ユーザー入力がフェイルオーバーをトリガするのを待つまでもなく合理的な時間枠内で発見できるようになる、というものである。
開示されている突き合わせエンジンは、注文控元帳の移設、即ち実行中のプライマリサーバ602Aから新しく始動されたバックアップ602Bへコピーするプロセスを、プライマリを停止させることなく行えるようにする。控元帳の移設は、バックアップサーバ602Bが始動するときはいつでも、移設させるべき実効性のある控元帳の有無にかかわらず、使用される。起きているプライマリサーバ602Aがなければ、バックアップ602Bは、起きているプライマリサーバが存在するのを待って完全に始動することになる。
開示されている実施形態は、同時に実行するバックアップインスタンス540が幾つであってもそれらをサポートし、万一、故障が起こったなら、それらのうちの何れか1つが使用されることになるものと理解しておきたい。更に、追加のバックアップインスタンス540は、監査、例えばトレーダーの挙動のリアルタイム監査や環境試験を提供するとか、監視を有効にするという様な他の目的に、プライマリインスタンス502に影響を与えることなく、利用することもできる。これらのインスタンス540は、プライマリインスタンス502をバックアップするという目的では頼りにされていないインスタンスであって、つまりは非引き継ぎバックアップであるインスタンス540については、常に1メッセージ遅れという要件は緩和されてもよい。主バックアップインスタンス540は、部分的な出力をもたらしかねない失敗したメッセージを再処理することができなければならないので、1メッセージ遅れに留まらなくてはならないが、代わりの目的に使用される他のバックアップインスタンス540は、必ずしも当該の失敗したメッセージを処理し直す必要はなく、それらはメッセージをプライマリが受信したのと同じ順序で処理しさえすればよく、即ち、それらはプライマリが失敗したメッセージの処理を完了したことを知る必要はなく、プライマリがそれを処理し始めたことを知ってさえいればよいわけである。
バックアップ602Bが始動すると、それは、自身の構成をファルコン管理サーバから得る。バックアップは、次いで、プライマリサーバ602Aへ、それが活動しているかどうかをチェックするメッセージを送り、応答を待つ。起こり得る状況として2つの状況があり、即ち、プライマリ602Aは、起きていれば、直ちに応答するであろう。そうでなければ、プライマリ602Aは、始動挙動の一環として、始動に関するメッセージを送信する。このメッセージは応答として扱われ、バックアップ602Bにはプライマリ602Aが起きていることが知られる。
プライマリ602A確認のメッセージが受信されると、バックアップ602Bは、それが自身の構成ファイルをFASから受信して以来どれほどの時間が経過しているかを見るためにチェックする。3秒より長く経過していたなら、バックアップは、構成をFASから取得し直す。これは、FASがエンジン構成への変更を、バックアップ602Bが自身の構成ファイルをダウンロードした後に但しプライマリ602Aが自身の構成ファイルをダウンロードする前に行うリスクを最小限にするのに役立つ。仮にこれが起こったなら、バックアップ602Bは始動時にこれを検出し、直ちに故障することになる。よって、構成ファイルを取得し直すことで、意図的な「迅速故障」の場合が最少化される。
このプロセスに続いて、バックアップは、状態要求メッセージをプライマリ602Aへ送る。プライマリ602Aは、全ての変更可能な状態−データベースシーケンス番号、未処理の注文、ホスト注文番号(「HON」)、ホスト取引番号(「HTN」)など、を有する状態総和応答で応答する。バックアップ602Bが、この情報を受信し、適用すると、いつでもバックアップとして機能を果たせる状態になる。このプロセス中に管理サーバの変更が適用されるリスクを完全に排除するために、バックアップ602Bは、プライマリがFASから受信した最新のシーケンス番号を、それが構成オブジェクト内でFASから受信したものと比較する。シーケンス番号が相違するというリスクは極僅かではあるが、実際に相違があれば、それは、構成の受信と総和状態の受信の間の数秒の間に管理サーバからのユーザーが起こした構成変更のあったことを示す。この条件が検出されれば、バックアップ602Bは、シャットダウンするので、再始動させて、控元帳移設を再試行しなければならず、即ち、それは、持続性エラー状態(上では「迅速故障」と呼称)を示すものではない。
バックアップ602Bは、一旦起き上がると、全てのソース(他の注文エントリゲートウェイ管理サーバ、内部タイマーイベント)からの入力を待ち行列に入れるが、最初のプライマリ応答メッセージの受信後、1つの故障タイムアウトが経過するまでは、プライマリ602Aの故障を検出しようと試みることはしない。当該時間前にメッセージが受信されなければ、フェイルオーバーが引き起こされる。
プライマリ602Aの始動はかなり単純である。プライマリ602Aは、自身の構成をファルコン管理サーバからダウンロードし、メッセージを共有のエンジンバスに載せて送り、そこにそれ以外のプライマリエンジンがあるかどうかを判定する。プライマリ602Aは、応答を受信したなら、シャットダウンする。応答を受信しなければ、プライマリ602Aは、通常通り始動し、始動したことを示すメッセージを送る。
市場データフォールトトレラントポリシーには、バックアップ602Bからの市場データメッセージの出力を差し止める以外の役割はない。それは、妥当性確認もチェックも行わなければ、プライマリ602Aからの市場データ給送に加入もしない。全ての重要なイベントは、適切なログレベルでログを取られる。
フェイルオーバー条件の妥当性確認プロセスは、以下の機能を遂行し、即ち:
1)フェイルオーバータイムアウトの1/2が過ぎるのを待つ。この時間中にプライマリ602Aからの適切な応答メッセージが着信すれば、フェイルオーバーは必要ない。
2)「ピング」メッセージを、注文エントリ606バスを介して他の注文エントリゲートウェイへ送り、返答を聴取する。
3)フェイルオーバータイムアウトの1/2が過ぎるのを待つ。この時間中にプライマリ602Aからの適切な応答メッセージが着信すれば、フェイルオーバーは必要ない。
4)ピング応答が、注文エントリバス606を介して受信されると、次いで、バックアップ602Aはフェイルオーバーすることになる。受信されなければ、バックアップ602Aは、フェイルオーバーせず、代わりに、警報を監視に発送する。
プライマリモードへの切替プロセスは、以下の機能を遂行し、即ち:
1)バックアップは、プライマリ602Aをデータベースから締め出す。これはMSG SEQ TABLEに「ブロッキング」値を入力することによって実現される。プライマリ602Aは、これらの数値を書き込もうと試みたときに、結果として生じた制約違反を、バックアップ602Bの引き継ぎであると翻訳する(図10参照)。
2)バックアップ602Bは、「プライマリ停止」のメッセージをファルコン管理サーバへ送る。
3)ファルコン管理サーバは、カリフォルニア州パオアルト所在のTibco,Inc.が普及させたメッセージングプロトコルであるティブコ(Tibco)の様なメッセージングプロトコルを使って、「プライマリ停止」のメッセージを、故障するプライマリ602Aへ送る。
4)プライマリ602Aは沈黙する。
5)バックアップ602Bは、プライマリ602Aの状態を査定し、何であれプライマリ602Aが止めた順序付けの写しを取る。これは、直近に転送された入力メッセージをキーとして使用してデータベースに問い合わすことによって行われ、即ち、データベースは、プライマリ602Aによって書き込まれた何らかの後続メッセージの順序を返すことになる。時間ベースの入力処理を実装している実施形態では、バックアップ602Bには、更に、プライマリ602Aの状態を完全に複製するために、処理された入力の処理時間/タイムスタンプが必要となるであろう。
6)バックアップ602Bは、プライマリ602Aとして引き継ぐ。
7)バックアップ602Bは、入力メッセージを突き合わせサーバの中へ、プライマリ602Aがそれらを処理したのと同じ順序で転送する。入力がまだ受信されていなければ、入力を待つ。これらのメッセージから生じた出力は、重複可能(「posdup」)として送られる。プライマリ602Aによって書き込まれなかったメッセージがメッセージタイムアウトパラメータより古かったなら、それは、突き合わせサーバの中へ転送されることはない。代わりに、それは廃棄され、当該効果に対するメッセージがログを取られることになる。
8)バックアップ602Bは、これより、プライマリ602Aとして行動し、全ての入力メッセージをプライマリ602Aの中へ送り、出力を、市場データバスと注文エントリバス606の両方へ送る。
故障については以下の場合が検出される:
1.プライマリ602Aは、故障してしまい、メッセージを送信していない。この場合には、或る特定の入力メッセージについて部分出力が受信されるか又は何の出力も受信されず、後続の入力メッセージについては出力は何も受信されない。この場合には、バックアップ602Bが、自身がまだ接続されていること、そしてプライマリ602Aに故障があることを確認したなら、バックアップ602Bはフェイルオーバープロセスを起動させることになる。
結果:フェイルオーバー
2.バス又はネットワーク問題が起こり、プライマリ602Aは入力を受信すること又は出力を送信することができなくなる。この場合には、プライマリ602Aは、通信を無効にされ、フェイルオーバーが上記の様に進められる。
結果:フェイルオーバー
3.プライマリ602Aが、自身のネットワークインターフェース、データベース604、又はハードウェアに絡む問題を発見した。この場合には、プライマリ602Aは沈黙し、フェイルオーバーが上記の様に進められる。
結果:フェイルオーバー
4.オペレーションスタッフは、ファルコン管理サーバからフェイルオーバーを起動させる。この場合には、フェイルオーバーは、フェイルオーバータイムアウトを待つ必要なしに直ちに起こることになる。
結果:フェイルオーバー
5.ネットワーク状況のせいで、プライマリ602Aが入力メッセージを受信できなくなる。この場合には、バックアップ602Bは、入力メッセージを受信するが、当該メッセージに関連する如何なる応答もプライマリ602Aから受信することなく、タイムアウトが失効することになる。繁忙な市場では、プライマリ602Aが応答を送っている限り、この事態がフェイルオーバーを起動させることはない。閑散とした市場では、フェイルオーバーが起動されることになろう。
結果:フェイルオーバー又は正常
6.ネットワーク状況のせいで、プライマリ602Aとバックアップ602Bの間で、所与の入力についての応答メッセージの一部喪失が引き起こされる。この場合には、所与の入力メッセージについて(全部ではなく)一部の出力メッセージが受信され、後続の入力について少なくとも1つの応答が受信される。バックアップ602Bは、応答中のフィールドと前のフィールドの組合せを使用することによって、プライマリ602Aによって処理されたメッセージのシーケンスを確定することができる。出力の不等はFTメッセージマネジャがこれに着目する。
結果:正常
7.バス又はネットワーク問題が起こり、バックアップ602Bが入力又はプライマリ602Aの応答を受信できなくなる。この場合には、バックアップ602Bは、フェイルオーバータイムの1/2の時点でピングを試みることになる。ピングが失敗すれば、バックアップ602Bは引き継ごうと試みることはしない。
結果:バックアップは停止。再始動されるか又は新たなバックアップが始動される。
8.ネットワーク状況のせいで、プライマリ602Aとバックアップ602Bの間で所与の入力についての応答メッセージが全て失われる事態が引き起こされ、2つ以上の応答メッセージが送信されたと推測される。この場合には、所与の入力メッセージについての全ての出力メッセージは、プライマリ602Aとバックアップ602Bの間で取りこぼされ、後続の入力についての少なくとも1つの応答が受信される。バックアップ602Bは、前のメッセージ表示子を使用しても、出力メッセージの脱落中にどれほどの入力メッセージがプライマリによって処理されたかを知りようがない。結果として、バックアップ602Bは、自身がプライマリ602Aと同じシーケンスでメッセージを処理していると確信することがもはやできない。
結果:バックアップは停止されなくてはならない。再始動されるか又は新たなバックアップが始動される。
9.ネットワーク状況のせいで、バックアップ602Bが入力メッセージを受信できなくなる。この場合には、バックアップ602Bは、自身が受信しなかった入力メッセージに応答しているメッセージを受信することになる。
結果:バックアップは停止されなくてはならない。再始動されるか又は新たなバックアップが始動される。
10.プライマリ602Aからの出力メッセージとバックアップ602Bからの出力メッセージが相違する。この場合には、プライマリがバックアップより多くの応答メッセージを生成したか又は内容が異なっているかのどちらかである。エラーがログを取られ、高優先順位で報告され、するとバックアップはもはやバックアップとして行動できなくなる。
結果:バックアップは停止されなくてはならない。再始動されるか又は新たなバックアップが始動される。
11.FAILURE TIMEOUTの下に回復可能なデータベースエラー。バックアップ602Bはフェイルオーバーに備えるが、プライマリ602Aは、バックアップ602Bが引き継ぎを終える前は、書き込むことができるであろう。
結果:正常
12.FAILURE TIMEOUTの下に回復不可能なデータベースエラー。プライマリ602Aは、故障タイムアウトに反応しなくなり、バックアップ602Bが引き継ごうと試みることになる。バックアップ602Bは直ちに引き継ぐことはできないであろうが、データベースが回復され次第、バックアップはプライマリ602Aを締め出し、プライマリ602Aの役割を引き受ける。
結果:フェイルオーバー
別の実施形態では、故障したデータベース506に対処し、その様な故障のせいで、ここに記載されているフォールトトレラント機構が、完璧に機能しているプライマリインスタンス502からフェイルオーバーすることのないようにする機構が提供されている。データベース506自体が、故障又は遅延のシングルポイントとなっている場合もある(例えば、1つの実施形態では、データベース506は、オラクル(Oracle)RACを使って実装されており、オラクルRACは、場合により、内部故障後に再構成している間は何秒間もトランザクションを遅延させることがある)。図5に示されている様に、データベース切替機構544が提供されている。動作時、プライマリインスタンス502は、自身がデータベースからの応答を、その厳密な値は実装依存性であるX秒という時間内に得ていないと判定すれば、プライマリインスタンス502が完璧に正常であるにもかかわらずバックアップインスタンス504がいま正に引き継ぎに入ろうとしていると認識する。プライマリインスタンス502は、次いで、バックアップインスタンス504との会話を開始し、待機データベース542への切替を調整することができる。この切替は市場の中断なしに行われ、フェイルオーバープロセスとの調整が図られなくてはならない、というのも、データベースはどのインスタンスをプライマリインスタンスにするかの決定者であるために、データベース切替中はフェイルオーバーを無効にしておかなくてはならないからである。データベース切替が完了すれば、フェイルオーバーは、再度有効にされる。
図9は、図6のフォールトトレラントシステムの動作を実演する更に詳細なブロック線図を描いている。
バックアップ602Bは、「ブロッキング」データをメッセージシーケンス表に書き込むことによって、プライマリ602Aを締め出し、それにより「プライマリ暴走」を阻止する。プライマリ602Aは、メッセージの送信については、当該メッセージと関連付けられている入力が持続させられるまで送出することができないので、バックアップ602Bには、ブロッキングデータより前に書き込まれたメッセージしかプライマリ602Aによって送信され得ないことが分かっている。
図10は、図6のフォールトトレラントシステムと共に使用するためのデータベース604の例示としての動作を描いている。
図11は、図6のフォールトトレラントシステムによって利用される例示としてのデータ構造であって、注文履歴及び取引データの完全性データを提供するデータ構造を描いている。
引き継ぎ中のバックアップ602Bは、これより自身がデータベース内でプライマリ602Aとなることをマークした後、データベースに、入力メッセージ識別子ついて、当該バックアップがプライマリの処理を逃したかもしれない識別子を(バックアップが見た直近の入力IDを表明することによって)求める。バックアップ602Bは、次いで、それらの入力を、プライマリ602Aがそれらを処理したのと同じシーケンスで実行することになる。データベースにはバックアップが問い合わせた入力ID後に入力された全ての注文は無効である(そして、引き継ぎ中のバックアップによって再生されることになる)ことが分かっているため、データベース手続きは、それらのエントリを、注文履歴表から別の「フェイルオーバー注文履歴」表へと、取引表から別の「フェイルオーバー取引」表へと、移す。この様にして、注文履歴表と取引表は、照会のための一貫性が維持され、なお且つ何が起こったかについての完全な記録を保持する。
・アプリケーションフェイルオーバー中のデータを再生する。
・バックアップエンジンが、メッセージを、プライマリと同じ順序で処理する。
・フェイルオーバーイベントの時、バックアップは直近の既知のメッセージを識別する。メッセージは、注文表と取引表の1つ1つの入来記録にタグ付けされているMSG SEQによって識別される。
・DBは、直近の既知のメッセージ後にプライマリによって書き込まれた全ての注文と取引のデータを拾う。
・データを、注文表と取引表からフェイルオーバー表へ移す。
・プライマリデータがフェイルオーバー表へ移されることで、どのデータも失われない。
バックアップエンジン処理の妥当性確認
争議の裁定
規制の必要性の充足
に有用である。
・バックアップ(これよりプライマリ)が徹底して再生データを実際に挿入するので、更新は必要ない。
・FASは、常に、情報に対して一貫した所見が得られる。
i.実施例
Figure 2013069323
例えば:
・入力1、2、5、3、4、6が、プライマリによって受信される。
・入力2、1、5、4、6、3が、バックアップによって受信される。
・プライマリは、入力1、2、5、3、4を処理し、プライマリのデータベースに書き込む。
・バックアップは、1、2、5についてプライマリの出力を受信する。バックアップはそれらを処理する。
・その後、バックアップは、プライマリNIC故障のせいでタイムアウトを超過しても何も受信しない。
・バックアップは、引き継ぐことを決意する。
・バックアップは、プライマリをデータベースからブロックアウトする。
・バックアップは、プライマリが入力5の後に処理した入力を要求する。
・データベースは、入力3及び4から生じるデータを、注文履歴表から注文オーバーラップ表へ、取引表から取引オーバーラップ表へ移す。
・データベースは、入力ID3と4を返す。
・今やプライマリとなったバックアップは、プライマリとして3と4を処理し、データをデータベースに書き込む。
・今やプライマリとなったバックアップは、3と4についてpos−dupであるとするメッセージを発送する。
・今やプライマリとなったバックアップは、プライマリとして、これより6を処理する。
以上の詳細な説明は、従って、限定を課すのではなく説明を目的とすると考えられるべきであり、本発明の精神及び範囲を定義することを意図しているものは、付随の特許請求の範囲で並びにあらゆる等価物であることを理解されたい。
500 フォールトトレラントシステム
502 プライマリインスタンス
504 バックアップインスタンス
506 データベース
508、512 ネットワーク
514 フォールトトレラント論理
516 プライマリ故障検出論理
518 入力受信部
520、522 ゲーティング論理
524 バッファ
526 コンパレータ
528 バックアップ故障検出論理
530 出力突き合わせ論理
530 データベース模倣論理
532 突き合わせ論理
542 待機データベース
544 データベース切替機構
548 クロック
550 クロック入力
600 金融取引所の商取引エンジン
602 突き合わせエンジンクラスタ
602A プライマリサーバ、プライマリ
602B バックアップサーバ、バックアップ
604 データベースクラスタ
606 注文エントリバス

Claims (10)

  1. プライマリ突き合わせサーバに対してフォールトトレランスを提供する方法であって、前記プライマリ突き合わせサーバは、前記プライマリ突き合わせサーバによる処理の完了に依存して、第1のトランザクションをその受信に対応して処理し、それに基づく第1のプライマリ結果を生成するように動作していて、前記第1のトランザクションは第1の型式と第2の型式のうちの一方である、プライマリ突き合わせサーバに対するフォールトトレランスを提供する方法において、
    前記プライマリ突き合わせサーバの前記第1のトランザクションの受信の後に、当該プライマリ突き合わせサーバが前記第1のプライマリ結果を生成する可能性が低いと判定し、それに基づき、当該プライマリ突き合わせサーバが前記動作を完了するのを阻止する段階と、
    前記プライマリ突き合わせサーバが前記第1のプライマリ結果を生成した後に、当該プライマリ突き合わせサーバによって受信されている前記第1のトランザクションの第1のコピーを処理し、それに基づく第1のバックアップ結果を生成するように動作する第1のバックアップ突き合わせサーバを提供する段階と、
    前記プライマリ突き合わせサーバによって、前記第1のトランザクションが前記第1の型式であると判定し、それに基づき、前記プライマリ突き合わせサーバによる前記動作の完了とは独立に、当該第1のトランザクションを処理し、それに基づく前記第1のプライマリ結果を生成する段階と、
    前記プライマリ突き合わせサーバによって、前記第1のトランザクションが前記第2の型式であると判定し、それに基づき、前記プライマリ突き合わせサーバによる前記動作の完了を条件として、当該第1のトランザクションを処理し、それに基づく前記第1のプライマリ結果を生成する段階と、を含んでいる方法。
  2. 前記判定する段階は、更に、前記阻止する段階に先立って、前記動作の完了が妨げられていることを理由に前記プライマリ突き合わせサーバが前記第1のプライマリ結果を生成する可能性が低いと判定し、それに基づき、代わりのやり方で前記動作を完了させる段階を含んでいる、請求項1に記載の方法。
  3. 前記プライマリ突き合わせサーバは、ソフトウェアアプリケーション、プロセッサ、又はそれらの組合せを備えている、請求項1に記載の方法。
  4. 前記阻止する段階は、更に、前記プライマリ突き合わせサーバに自己終了させる段階を含んでいる、請求項1に記載の方法。
  5. 前記第1のトランザクションは、着信してくるトレーダー注文、注文取り消し、又はそれらの組合せを含んでいる、請求項1に記載の方法。
  6. プライマリ突き合わせサーバに対してフォールトトレランスを提供するためのシステムであって、前記プライマリ突き合わせサーバは、前記プライマリ突き合わせサーバによる処理の完了に依存して、第1のトランザクションをその受信に対応して処理し、それに基づく第1のプライマリ結果を生成するように動作していて、プライマリ突き合わせサーバに対するフォールトトレランスを提供するためのシステムにおいて、
    前記プライマリ突き合わせサーバに連結されていて、当該プライマリ突き合わせサーバの前記第1のトランザクションの受信の後に、当該プライマリ突き合わせサーバが前記第1のプライマリ結果を生成する可能性が低いと判定し、それに基づき、当該プライマリ突き合わせサーバが前記動作を完了するのを阻止するように動作する障害検出部と、
    前記プライマリ突き合わせサーバが前記第1のプライマリ結果を生成した後に、当該プライマリ突き合わせサーバによって受信されている前記第1のトランザクションの第1のコピーを処理し、それに基づく第1のバックアップ結果を生成するように動作する第1のバックアップ突き合わせサーバと、を備えており、
    前記第1のトランザクションは、第1の型式か第2の型式の一方であり、前記プライマリ突き合わせサーバは、更に、
    前記第1のトランザクションが前記第1の型式であると判定し、それに基づき、前記プライマリ突き合わせサーバによる前記動作の完了とは独立に、当該第1のトランザクションを処理し、それに基づく前記第1のプライマリ結果を生成するように、及び
    前記第1のトランザクションが前記第2の型式であると判定し、それに基づき、前記プライマリ突き合わせサーバによる前記動作の完了を条件として、当該第1のトランザクションを処理し、それに基づく前記第1のプライマリ結果を生成するように、動作する、システム。
  7. 前記障害検出部は、更に、前記阻止に先立って、前記動作の完了が妨げられていることを理由に前記プライマリ突き合わせサーバが前記第1のプライマリ結果を生成する可能性が低いと判定し、それに基づき、代わりのやり方で前記動作を完了させるように動作する、請求項6に記載のシステム。
  8. 前記プライマリ突き合わせサーバは、ソフトウェアアプリケーション、プロセッサ、又はそれらの組合せを備えている、請求項6に記載のシステム。
  9. 前記障害検出部は、更に、前記プライマリ突き合わせサーバに自己終了させるように動作する、請求項6に記載のシステム。
  10. 前記第1のトランザクションは、着信してくるトレーダー注文、注文取り消し、又はそれらの組合せを含んでいる、請求項6に記載のシステム。
JP2012253875A 2009-09-15 2012-11-20 フォールトトレラント動作をする金融取引所用突き合わせサーバ Active JP5528526B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/560,029 US8041985B2 (en) 2006-08-11 2009-09-15 Match server for a financial exchange having fault tolerant operation
US12/560,029 2009-09-15

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2012529775A Division JP5172043B2 (ja) 2009-09-15 2010-08-23 フォールトトレラント動作をする金融取引所用突き合わせサーバ

Publications (2)

Publication Number Publication Date
JP2013069323A true JP2013069323A (ja) 2013-04-18
JP5528526B2 JP5528526B2 (ja) 2014-06-25

Family

ID=43759625

Family Applications (3)

Application Number Title Priority Date Filing Date
JP2012529775A Active JP5172043B2 (ja) 2009-09-15 2010-08-23 フォールトトレラント動作をする金融取引所用突き合わせサーバ
JP2012253876A Active JP5689106B2 (ja) 2009-09-15 2012-11-20 フォールトトレラント動作をする金融取引所用突き合わせサーバ
JP2012253875A Active JP5528526B2 (ja) 2009-09-15 2012-11-20 フォールトトレラント動作をする金融取引所用突き合わせサーバ

Family Applications Before (2)

Application Number Title Priority Date Filing Date
JP2012529775A Active JP5172043B2 (ja) 2009-09-15 2010-08-23 フォールトトレラント動作をする金融取引所用突き合わせサーバ
JP2012253876A Active JP5689106B2 (ja) 2009-09-15 2012-11-20 フォールトトレラント動作をする金融取引所用突き合わせサーバ

Country Status (6)

Country Link
US (4) US8041985B2 (ja)
EP (3) EP3037969B1 (ja)
JP (3) JP5172043B2 (ja)
AU (1) AU2010295938B2 (ja)
CA (1) CA2774059A1 (ja)
WO (1) WO2011034687A1 (ja)

Families Citing this family (61)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7480827B2 (en) * 2006-08-11 2009-01-20 Chicago Mercantile Exchange Fault tolerance and failover using active copy-cat
US8041985B2 (en) * 2006-08-11 2011-10-18 Chicago Mercantile Exchange, Inc. Match server for a financial exchange having fault tolerant operation
US8307177B2 (en) 2008-09-05 2012-11-06 Commvault Systems, Inc. Systems and methods for management of virtualization data
US8369968B2 (en) * 2009-04-03 2013-02-05 Dell Products, Lp System and method for handling database failover
US11449394B2 (en) 2010-06-04 2022-09-20 Commvault Systems, Inc. Failover systems and methods for performing backup operations, including heterogeneous indexing and load balancing of backup and indexing resources
US8732517B1 (en) * 2011-06-30 2014-05-20 Amazon Technologies, Inc. System and method for performing replica copying using a physical copy mechanism
EP2727299B1 (en) * 2011-06-30 2018-05-16 Telefonaktiebolaget LM Ericsson (publ) Method and device for handling base sequences in a communications network
US8745157B2 (en) * 2011-09-02 2014-06-03 Trading Technologies International, Inc. Order feed message stream integrity
US9141609B2 (en) 2011-12-01 2015-09-22 Oracle International Corporation Reducing sequence cache latch contention in a database system
US9910893B2 (en) * 2011-12-01 2018-03-06 Oracle International Corporation Failover and resume when using ordered sequences in a multi-instance database environment
US9189295B2 (en) 2011-12-01 2015-11-17 Oracle International Corporation Generating an ordered sequence in a database system using multiple interleaved caches
EP2845110B1 (en) * 2012-04-30 2018-10-24 Hewlett-Packard Enterprise Development LP Reflective memory bridge for external computing nodes
US10762011B2 (en) 2012-04-30 2020-09-01 Hewlett Packard Enterprise Development Lp Reflective memory bridge for external computing nodes
US9329915B1 (en) * 2012-05-08 2016-05-03 Amazon Technologies, Inc. System and method for testing in a production environment
WO2014015369A1 (en) * 2012-07-24 2014-01-30 Newham, Scott Thomas A processor and a method for processing a received order
US8868604B2 (en) 2012-09-26 2014-10-21 Oracle International Corporation Methods and apparatus for implementing Semi-distributed Lock Management
US9740702B2 (en) 2012-12-21 2017-08-22 Commvault Systems, Inc. Systems and methods to identify unprotected virtual machines
US9223597B2 (en) 2012-12-21 2015-12-29 Commvault Systems, Inc. Archiving virtual machines in a data storage system
US20140196039A1 (en) 2013-01-08 2014-07-10 Commvault Systems, Inc. Virtual machine categorization system and method
EP2759933A1 (en) 2013-01-28 2014-07-30 Fujitsu Limited A process migration method, computer system and computer program
US9805104B2 (en) * 2013-02-15 2017-10-31 Microsoft Technology Licensing, Llc Recovery point objective enforcement
US9081753B2 (en) * 2013-03-14 2015-07-14 Microsoft Technology Licensing, Llc Virtual disk recovery and redistribution
CN104241088B (zh) * 2013-06-09 2017-07-14 中芯国际集成电路制造(上海)有限公司 条形结构的形成方法
US20150074536A1 (en) 2013-09-12 2015-03-12 Commvault Systems, Inc. File manager integration with virtualization in an information management system, including user control and storage management of virtual machines
WO2015044791A2 (en) * 2013-09-24 2015-04-02 Guestlogix, Inc. Multi-modal transaction engine for mobile retail systems
JP6307858B2 (ja) * 2013-11-29 2018-04-11 富士通株式会社 伝送装置、伝送システム、及び監視制御方法
US9189641B2 (en) * 2014-02-06 2015-11-17 Google Inc. Methods and systems for deleting requested information
WO2015145586A1 (ja) 2014-03-25 2015-10-01 株式会社Murakumo データベースシステム、情報処理装置、方法およびプログラム
US9563518B2 (en) 2014-04-02 2017-02-07 Commvault Systems, Inc. Information management by a media agent in the absence of communications with a storage manager
US20160019317A1 (en) 2014-07-16 2016-01-21 Commvault Systems, Inc. Volume or virtual machine level backup and generating placeholders for virtual machine files
US9361191B2 (en) * 2014-08-28 2016-06-07 Bank Of America Corporation Methods and apparatus for data recovery following a service interruption at a central processing station
US10896464B2 (en) 2014-09-19 2021-01-19 Trading Technologies International, Inc. System, method, and tool for synthetic order recovery
US9983936B2 (en) 2014-11-20 2018-05-29 Commvault Systems, Inc. Virtual machine change block tracking
EP3265991A4 (en) * 2015-03-04 2018-11-14 Furuno Electric Co., Ltd. Data processing system and method to use the data processing system
US9983917B2 (en) 2015-11-30 2018-05-29 International Business Machines Corporation Monitoring and responding to operational conditions of a logical partition from a separate logical partition
US11436208B2 (en) * 2015-12-18 2022-09-06 Sap Se Computerized software engine to assess physical value using document versioning
US10943297B2 (en) 2016-08-09 2021-03-09 Chicago Mercantile Exchange Inc. Systems and methods for coordinating processing of instructions across multiple components
US10748210B2 (en) 2016-08-09 2020-08-18 Chicago Mercantile Exchange Inc. Systems and methods for coordinating processing of scheduled instructions across multiple components
US10565426B2 (en) * 2016-08-16 2020-02-18 Guangdong Oppo Mobile Telecommunications Corp., Ltd. Fingerprint chip package structure, input assembly and terminal
US10417102B2 (en) 2016-09-30 2019-09-17 Commvault Systems, Inc. Heartbeat monitoring of virtual machines for initiating failover operations in a data storage management system, including virtual machine distribution logic
US10162528B2 (en) 2016-10-25 2018-12-25 Commvault Systems, Inc. Targeted snapshot based on virtual machine location
US10678758B2 (en) 2016-11-21 2020-06-09 Commvault Systems, Inc. Cross-platform virtual machine data and memory backup and replication
US10326862B2 (en) 2016-12-09 2019-06-18 Chicago Mercantile Exchange Inc. Distributed and transactionally deterministic data processing architecture
US20180276022A1 (en) 2017-03-24 2018-09-27 Commvault Systems, Inc. Consistent virtual machine replication
US10387073B2 (en) 2017-03-29 2019-08-20 Commvault Systems, Inc. External dynamic virtual machine synchronization
US10877928B2 (en) 2018-03-07 2020-12-29 Commvault Systems, Inc. Using utilities injected into cloud-based virtual machines for speeding up virtual machine backup operations
US11386494B2 (en) * 2018-09-19 2022-07-12 Coinone Inc. Cryptocurrency trading method and system
KR102172751B1 (ko) * 2018-09-19 2020-11-02 (주) 아이펀팩토리 가상화폐 거래 방법 및 시스템
US11200124B2 (en) 2018-12-06 2021-12-14 Commvault Systems, Inc. Assigning backup resources based on failover of partnered data storage servers in a data storage management system
US10768971B2 (en) 2019-01-30 2020-09-08 Commvault Systems, Inc. Cross-hypervisor live mount of backed up virtual machine data
US11169723B2 (en) 2019-06-28 2021-11-09 Amazon Technologies, Inc. Data storage system with metadata check-pointing
TWI724670B (zh) * 2019-12-04 2021-04-11 財團法人工業技術研究院 容錯系統及其控制方法
US11467753B2 (en) 2020-02-14 2022-10-11 Commvault Systems, Inc. On-demand restore of virtual machine data
US11442768B2 (en) 2020-03-12 2022-09-13 Commvault Systems, Inc. Cross-hypervisor live recovery of virtual machines
US11099956B1 (en) 2020-03-26 2021-08-24 Commvault Systems, Inc. Snapshot-based disaster recovery orchestration of virtual machine failover and failback operations
US11500669B2 (en) 2020-05-15 2022-11-15 Commvault Systems, Inc. Live recovery of virtual machines in a public cloud computing environment
US11182096B1 (en) * 2020-05-18 2021-11-23 Amazon Technologies, Inc. Data storage system with configurable durability
US11656951B2 (en) 2020-10-28 2023-05-23 Commvault Systems, Inc. Data loss vulnerability detection
CN113190371B (zh) * 2021-05-18 2024-04-05 京东科技信息技术有限公司 一种任务补偿方法、装置、电子设备及可读存储介质
WO2023017477A1 (en) * 2021-08-13 2023-02-16 Financial & Risk Organisation Limited Deterministic credit system
US20230401230A1 (en) * 2022-06-09 2023-12-14 Salesforce, Inc. Database systems and related replication monitoring methods

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004133598A (ja) * 2002-10-09 2004-04-30 Fujitsu Ltd 複数データベースの二重化制御プログラム
JP2009129169A (ja) * 2007-11-22 2009-06-11 Internatl Business Mach Corp <Ibm> 耐障害性トランザクション処理システム及び処理方法

Family Cites Families (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4228496A (en) 1976-09-07 1980-10-14 Tandem Computers Incorporated Multiprocessor system
US4590554A (en) 1982-11-23 1986-05-20 Parallel Computers Systems, Inc. Backup fault tolerant computer system
US5088021A (en) 1989-09-07 1992-02-11 Honeywell, Inc. Apparatus and method for guaranteed data store in redundant controllers of a process control system
JPH0448333A (ja) * 1990-06-18 1992-02-18 Nec Corp ロールバック後の自動制御移行方式
JPH05128080A (ja) 1991-10-14 1993-05-25 Mitsubishi Electric Corp 情報処理装置
US5363503A (en) 1992-01-22 1994-11-08 Unisys Corporation Fault tolerant computer system with provision for handling external events
US5621885A (en) 1995-06-07 1997-04-15 Tandem Computers, Incorporated System and method for providing a fault tolerant computer program runtime support environment
JPH10254723A (ja) * 1997-03-14 1998-09-25 Toyo Commun Equip Co Ltd 二重化コンピュータシステム
US7515697B2 (en) 1997-08-29 2009-04-07 Arbinet-Thexchange, Inc. Method and a system for settlement of trading accounts
US6324654B1 (en) 1998-03-30 2001-11-27 Legato Systems, Inc. Computer network remote data mirroring system
US6199171B1 (en) 1998-06-26 2001-03-06 International Business Machines Corporation Time-lag duplexing techniques
US6393582B1 (en) 1998-12-10 2002-05-21 Compaq Computer Corporation Error self-checking and recovery using lock-step processor pair architecture
US6169726B1 (en) 1998-12-17 2001-01-02 Lucent Technologies, Inc. Method and apparatus for error free switching in a redundant duplex communication carrier system
JP2000305856A (ja) * 1999-04-26 2000-11-02 Hitachi Ltd ディスクサブシステム及びこれらの統合システム
GB2353113B (en) 1999-08-11 2001-10-10 Sun Microsystems Inc Software fault tolerant computer system
US6578160B1 (en) * 2000-05-26 2003-06-10 Emc Corp Hopkinton Fault tolerant, low latency system resource with high level logging of system resource transactions and cross-server mirrored high level logging of system resource transactions
US20020026400A1 (en) * 2000-08-22 2002-02-28 Bondglobe Inc. System and method to establish trading mechanisms employing auctions and reverse auctions
US20040133606A1 (en) 2003-01-02 2004-07-08 Z-Force Communications, Inc. Directory aggregation for files distributed over a plurality of servers in a switched file system
JP4457184B2 (ja) 2001-02-13 2010-04-28 ネットアップ,インコーポレイテッド ストレージシステムにおけるフェイルオーバー処理
US6971044B2 (en) 2001-04-20 2005-11-29 Egenera, Inc. Service clusters and method in a processing system with failover capability
JP4054323B2 (ja) * 2001-06-15 2008-02-27 株式会社東芝 分散システムおよび同システムの時刻管理方法
JP2003015900A (ja) 2001-06-28 2003-01-17 Hitachi Ltd 追走型多重化システム、及び追走により信頼性を高めるデータ処理方法
US6954877B2 (en) 2001-11-29 2005-10-11 Agami Systems, Inc. Fault tolerance using logical checkpointing in computing systems
DE60106467T2 (de) * 2001-12-14 2006-02-23 Hewlett-Packard Development Co., L.P., Houston Verfahren zum Installieren Überwachungsagenten, System und Computerprogramm von Objekten in einem IT-Netz Überwachung
GB0206604D0 (en) 2002-03-20 2002-05-01 Global Continuity Plc Improvements relating to overcoming data processing failures
US6978396B2 (en) 2002-05-30 2005-12-20 Solid Information Technology Oy Method and system for processing replicated transactions parallel in secondary server
JP3982353B2 (ja) 2002-07-12 2007-09-26 日本電気株式会社 フォルトトレラントコンピュータ装置、その再同期化方法及び再同期化プログラム
US7120825B2 (en) 2003-06-06 2006-10-10 Hewlett-Packard Development Company, L.P. Adaptive batch sizing for asynchronous data redundancy
US7139939B2 (en) 2003-06-20 2006-11-21 International Business Machines Corporation System and method for testing servers and taking remedial action
US7290015B1 (en) * 2003-10-02 2007-10-30 Progress Software Corporation High availability via data services
JP2005165600A (ja) * 2003-12-02 2005-06-23 Nec Corp トランザクション処理システム、トランザクション処理方法およびプログラム
JP4288418B2 (ja) 2003-12-02 2009-07-01 日本電気株式会社 計算機システムおよび状態取得方法ならびに状態取得プログラム
US6859811B1 (en) * 2004-01-15 2005-02-22 Oracle International Corporation Cluster database with remote data mirroring
US20060112219A1 (en) 2004-11-19 2006-05-25 Gaurav Chawla Functional partitioning method for providing modular data storage systems
GB0426309D0 (en) * 2004-11-30 2004-12-29 Ibm Method and system for error strategy in a storage system
US7519859B2 (en) 2005-08-30 2009-04-14 International Business Machines Corporation Fault recovery for transaction server
TWI416901B (zh) * 2005-11-30 2013-11-21 Ibm 故障容忍之異動處理系統
US7882079B2 (en) * 2005-11-30 2011-02-01 Oracle International Corporation Database system configured for automatic failover with user-limited data loss
US7725764B2 (en) 2006-08-04 2010-05-25 Tsx Inc. Failover system and method
US7480827B2 (en) 2006-08-11 2009-01-20 Chicago Mercantile Exchange Fault tolerance and failover using active copy-cat
US8041985B2 (en) * 2006-08-11 2011-10-18 Chicago Mercantile Exchange, Inc. Match server for a financial exchange having fault tolerant operation
US7434096B2 (en) 2006-08-11 2008-10-07 Chicago Mercantile Exchange Match server for a financial exchange having fault tolerant operation
US8275907B2 (en) * 2008-06-26 2012-09-25 Microsoft Corporation Adding individual database failover/switchover to an existing storage component with limited impact

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004133598A (ja) * 2002-10-09 2004-04-30 Fujitsu Ltd 複数データベースの二重化制御プログラム
JP2009129169A (ja) * 2007-11-22 2009-06-11 Internatl Business Mach Corp <Ibm> 耐障害性トランザクション処理システム及び処理方法

Also Published As

Publication number Publication date
US9336087B2 (en) 2016-05-10
US20120011391A1 (en) 2012-01-12
JP2013506892A (ja) 2013-02-28
AU2010295938A1 (en) 2012-04-05
US8656210B2 (en) 2014-02-18
US8041985B2 (en) 2011-10-18
EP3037969A1 (en) 2016-06-29
JP5172043B2 (ja) 2013-03-27
US20100017647A1 (en) 2010-01-21
JP2013117955A (ja) 2013-06-13
US20130290770A1 (en) 2013-10-31
EP2478437A4 (en) 2013-03-20
EP2478437B1 (en) 2014-12-03
JP5689106B2 (ja) 2015-03-25
EP2478437A1 (en) 2012-07-25
CA2774059A1 (en) 2011-03-24
EP3037969B1 (en) 2018-01-24
JP5528526B2 (ja) 2014-06-25
EP2846265A1 (en) 2015-03-11
US20140201563A1 (en) 2014-07-17
US8433945B2 (en) 2013-04-30
EP2846265B1 (en) 2016-04-27
AU2010295938B2 (en) 2014-06-26
WO2011034687A1 (en) 2011-03-24

Similar Documents

Publication Publication Date Title
JP5528526B2 (ja) フォールトトレラント動作をする金融取引所用突き合わせサーバ
US9244771B2 (en) Fault tolerance and failover using active copy-cat
US8762767B2 (en) Match server for a financial exchange having fault tolerant operation

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130708

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140227

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140415

R150 Certificate of patent or registration of utility model

Ref document number: 5528526

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S633 Written request for registration of reclamation of name

Free format text: JAPANESE INTERMEDIATE CODE: R313633

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250