(57)【特許請求の範囲】
【請求項１】
各々がメッセージにシーケンス番号を付与して配信する複数の配信単位を有し、複数の配信単位間で同一のシーケンス番号を付与されたメッセージが同一の内容を有する同期配信系、および各々がメッセージにシーケンス番号を付与して配信する複数の配信単位を有し、複数の配信単位間で同一のシーケンス番号を付与されたメッセージが必ずしも同一の内容を有さない非同期配信系が階層化された金融情報配信システムのうち自装置より上位の階層にある他の装置からメッセージを受信する受信手段と、
データを記憶する記憶手段と、
前記受信手段により受信されたメッセージが前記同期配信系から発信されたメッセージである場合、前記受信されたメッセージのシーケンス番号に従ってそのメッセージを記憶すべきか判断し、そのメッセージを記憶すべきと判断したときにはそのメッセージを前記記憶手段に記憶させ、前記受信手段により受信されたメッセージが前記非同期配信系の中から定められた一の配信単位から発信されたメッセージである場合、そのメッセージを前記記憶手段に記憶させ、前記記憶手段に記憶されているメッセージの中から順番に一のメッセージを処理対象として特定する特定手段と、
前記特定手段により前記処理対象として特定されたメッセージに含まれる金融情報に対し、金融工学による加工であって、同一の階層にある他のサーバと同一の加工を行う加工手段と、
前記特定手段により前記処理対象として特定されたメッセージが前記同期配信系から発信されたメッセージであった場合、そのメッセージにグループ番号と、同一の前記グループ番号内で単調増加するシーケンス番号を付加し、前記特定手段により前記処理対象として特定されたメッセージが前記非同期配信系から発信されたメッセージであった場合、そのメッセージに単調増加するシーケンス番号を付加する付加手段と、
前記加工手段による加工および前記付加手段による付加がされたメッセージを下位の装置に送信する送信手段と
を有するサーバ。
【請求項２】
前記加工手段は、前記加工において所定の処理単位毎にメッセージを並列処理し、
前記グループ番号は、前記処理単位毎に異なる
ことを特徴とする請求項１に記載のサーバ。
【請求項３】
前記記憶手段は、前記受信手段が受信したメッセージのうち、前記同期配信系から発信されたメッセージの、最新のシーケンス番号を前記グループ番号毎に記憶し、
前記特定手段は、前記受信手段により受信されたメッセージが前記同期配信系から発信されたメッセージであり、そのメッセージが前記グループ番号を含み、かつ、そのグループ番号に対するシーケンス番号が前記記憶手段に記憶されている、そのグループ番号に対するシーケンス番号よりも大きい場合、そのグループ番号に対するシーケンス番号を前記記憶手段に記憶させ、そのメッセージを処理対象として特定する
ことを特徴とする請求項１に記載のサーバ。
【請求項４】
前記付加手段は、自装置よりも上位の装置により付加されたシーケンス番号の順番に従って、新たなシーケンス番号を前記メッセージに付加する
ことを特徴とする請求項１−３のいずれかの項に記載のサーバ。
【請求項５】
前記受信手段により受信されたメッセージが前記対象配信単位から発信されたメッセージであり、かつ、そのメッセージのシーケンス番号が前記記憶手段に記憶されている最新のメッセージのシーケンス番号よりも２単位以上大きい場合、欠落しているシーケンス番号のメッセージの再送信を前記対象配信単位に要求する要求手段と、
前記一の配信単位に障害が発生した場合、前記対象配信単位を、前記一の配信単位から前記非同期配信系の中の別の配信単位に変更する変更手段と
を有する
ことを特徴とする請求項１−４のいずれかの項に記載のサーバ。
【請求項６】
各々がメッセージにシーケンス番号を付与して配信する複数の配信単位を有し、複数の配信単位間で同一のシーケンス番号を付与されたメッセージが同一の内容を有する同期配信系、および各々がメッセージにシーケンス番号を付与して配信する複数の配信単位を有し、複数の配信単位間で同一のシーケンス番号を付与されたメッセージが必ずしも同一の内容を有さない非同期配信系が階層化された金融情報配信システムのうち一のサーバが、自装置より上位の階層にある他の装置からメッセージを受信するステップと、
前記受信されたメッセージが前記同期配信系から発信されたメッセージである場合、前記受信されたメッセージのシーケンス番号に従ってそのメッセージを記憶すべきか判断し、そのメッセージを記憶すべきと判断したときにはそのメッセージを、前記一のサーバが有する記憶手段に記憶させるステップと、
前記受信されたメッセージが前記非同期配信系の中から定められた一の配信単位から発信されたメッセージである場合、前記一のサーバがそのメッセージを前記記憶手段に記憶させるステップと、
前記一のサーバが、前記記憶手段に記憶されているメッセージの中から順番に一のメッセージを処理対象として特定するステップと、
前記処理対象として特定されたメッセージに含まれる金融情報に対し、金融工学による加工であって、同一の階層にある他のサーバと同一の加工を、前記一のサーバが行うステップと、
前記処理対象として特定されたメッセージが前記同期配信系から発信されたメッセージであった場合、そのメッセージにグループ番号と、同一の前記グループ番号内で単調増加するシーケンス番号を付加し、前記特定手段により前記処理対象として特定されたメッセージが前記非同期配信系から発信されたメッセージであった場合、そのメッセージに単調増加するシーケンス番号を、前記一のサーバが付加するステップと、
前記一のサーバが、前記加工および前記付加がされたメッセージを下位の装置に送信するステップと
を有する金融情報配信方法。
【請求項７】
コンピュータに、
各々がメッセージにシーケンス番号を付与して配信する複数の配信単位を有し、複数の配信単位間で同一のシーケンス番号を付与されたメッセージが同一の内容を有する同期配信系、および各々がメッセージにシーケンス番号を付与して配信する複数の配信単位を有し、複数の配信単位間で同一のシーケンス番号を付与されたメッセージが必ずしも同一の内容を有さない非同期配信系が階層化された金融情報配信システムのうち一のサーバが、自装置より上位の階層にある他の装置からメッセージを受信するステップと、
前記受信されたメッセージが前記同期配信系から発信されたメッセージである場合、前記受信されたメッセージのシーケンス番号に従ってそのメッセージを記憶すべきか判断し、そのメッセージを記憶すべきと判断したときにはそのメッセージを、前記一のサーバが有する記憶手段に記憶させるステップと、
前記受信されたメッセージが前記非同期配信系の中から定められた一の配信単位から発信されたメッセージである場合、前記一のサーバがそのメッセージを前記記憶手段に記憶させるステップと、
前記一のサーバが、前記記憶手段に記憶されているメッセージの中から順番に一のメッセージを処理対象として特定するステップと、
前記処理対象として特定されたメッセージに含まれる金融情報に対し、金融工学による加工であって、同一の階層にある他のサーバと同一の加工を、前記一のサーバが行うステップと、
前記処理対象として特定されたメッセージが前記同期配信系から発信されたメッセージであった場合、そのメッセージにグループ番号と、同一の前記グループ番号内で単調増加するシーケンス番号を付加し、前記処理対象として特定されたメッセージが前記非同期配信系から発信されたメッセージであった場合、そのメッセージに単調増加するシーケンス番号を付加するステップと、
前記加工および前記付加がされたメッセージを下位の装置に送信するステップと
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、金融情報を配信する技術に関する。
【背景技術】
【０００２】
現在、有価証券市場に代表される金融商品の取引の多くは、ネットワークを利用して電子的に行なわれている。この種の取引では、投資家は、ネットワークに自らの端末を接続する。投資家は、その端末に証券取引所等から随時供給される金融情報の内容を基に、注文処理をかけるタイミングやその内容を判断している。投資家の判断は、証券取引所等から供給される金融情報の内容に依存している。したがって、端末に到達する金融情報に遅延が生じた場合、投資家は、陳腐化した古い情報に依存した判断を下してしまうことになる。すなわち、金融取引上大きな損失が生まれてしまうことがある。このように、金融情報の配信においては即時性が重要である（例えば特許文献１参照）。
【０００３】
金融情報の配信においては、即時性に加えて信頼性も重要である。特許文献２は、配信サーバの負荷およびネットワークの負荷を軽減できる証券・金融データ配信システムを開示している。この証券・金融データ配信システムにおいて、受信・編集サーバは、情報提供元装置から受信したデータに順番に番号を振り、マルチキャスト配信サーバおよび問い合わせサーバに送信する。マルチキャスト配信サーバは、電文をグループ情報に基づいてマルチキャスト配信する。問い合わせサーバは、クライアントからの要求に応じて、欠落したデータを送信する。特許文献３は、マルチキャストパケット転送装置を開示している。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００６−０３１３７１号公報
【特許文献２】特開２００８−１４７８１９号公報
【特許文献３】特開２００７−２７４３３２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
特許文献２に記載されているような、ネットワークの上位（上流）の装置においてデータに番号を振るシステムでは、下位（下流）の装置はその番号によってしか順序性の判断をすることができなかった。
本発明は、ネットワーク上の下位の装置においてより柔軟な処理を可能にする金融情報配信システム、サーバ、金融情報配信方法およびプログラムを提供する。
【課題を解決するための手段】
【０００６】
（発明１）本発明は、各々がメッセージにシーケンス番号を付与して配信する複数の配信単位を有し、複数の配信単位間で同一のシーケンス番号を付与されたメッセージが同一の内容を有する同期配信系、および各々がメッセージにシーケンス番号を付与して配信する複数の配信単位を有し、複数の配信単位間で同一のシーケンス番号を付与されたメッセージが必ずしも同一の内容を有さない非同期配信系が階層化された金融情報配信システムのうち自装置より上位の階層にある他の装置からメッセージを受信する受信手段と、データを記憶する記憶手段と、前記受信手段により受信されたメッセージが前記同期配信系から発信されたメッセージである場合、前記受信されたメッセージのシーケンス番号に従ってそのメッセージを記憶すべきか判断し、そのメッセージを記憶すべきと判断したときにはそのメッセージを前記記憶手段に記憶させ、前記受信手段により受信されたメッセージが前記非同期配信系の中から定められた一の配信単位から発信されたメッセージである場合、そのメッセージを前記記憶手段に記憶させ、前記記憶手段に記憶されているメッセージの中から順番に一のメッセージを処理対象として特定する特定手段と、前記特定手段により前記処理対象として特定されたメッセージに含まれる金融情報に対し、金融工学による加工であって、同一の階層にある他のサーバと同一の加工を行う加工手段と、前記特定手段により前記処理対象として特定されたメッセージが前記同期配信系から発信されたメッセージであった場合、そのメッセージにグループ番号と、同一の前記グループ番号内で単調増加するシーケンス番号を付加し、前記特定手段により前記処理対象として特定されたメッセージが前記非同期配信系から発信されたメッセージであった場合、そのメッセージに単調増加するシーケンス番号を付加する付加手段と、前記加工手段による加工および前記付加手段による付加がされたメッセージを下位の装置に送信する送信手段とを有するサーバを提供する。
【０００７】
（発明２）発明１において、前記加工手段は、前記加工において所定の処理単位毎にメッセージを並列処理し、前記グループ番号は、前記処理単位毎に異なってもよい。
【０００８】
（発明３）発明１において、前記記憶手段は、前記受信手段が受信したメッセージのうち、前記同期配信系から発信されたメッセージの、最新のシーケンス番号を前記グループ番号毎に記憶し、前記特定手段は、前記受信手段により受信されたメッセージが前記同期配信系から発信されたメッセージであり、そのメッセージが前記グループ番号を含み、かつ、そのグループ番号に対するシーケンス番号が前記記憶手段に記憶されている、そのグループ番号に対するシーケンス番号よりも大きい場合、そのグループ番号に対するシーケンス番号を前記記憶手段に記憶させ、そのメッセージを処理対象として特定してもよい。
【０００９】
（発明４）発明１または２において、前記付加手段は、自装置よりも上位の装置により付加されたシーケンス番号の順番に従って、新たなシーケンス番号を前記メッセージに付加してもよい。
【００１０】
（発明５）発明１−４のいずれかにおいて、前記受信手段により受信されたメッセージが前記対象配信単位から発信されたメッセージであり、かつ、そのメッセージのシーケンス番号が前記記憶手段に記憶されている最新のメッセージのシーケンス番号よりも２単位以上大きい場合、欠落しているシーケンス番号のメッセージの再送信を前記対象配信単位に要求する要求手段と、前記一の配信単位に障害が発生した場合、前記対象配信単位を、前記一の配信単位から前記非同期配信系の中の別の配信単位に変更する変更手段とを有してもよい。
【００１１】
（発明６）本発明は、各々がメッセージにシーケンス番号を付与して配信する複数の配信単位を有し、複数の配信単位間で同一のシーケンス番号を付与されたメッセージが同一の内容を有する同期配信系、および各々がメッセージにシーケンス番号を付与して配信する複数の配信単位を有し、複数の配信単位間で同一のシーケンス番号を付与されたメッセージが必ずしも同一の内容を有さない非同期配信系が階層化された金融情報配信システムのうち一のサーバが、自装置より上位の階層にある他の装置からメッセージを受信するステップと、前記受信されたメッセージが前記同期配信系から発信されたメッセージである場合、前記受信されたメッセージのシーケンス番号に従ってそのメッセージを記憶すべきか判断し、そのメッセージを記憶すべきと判断したときにはそのメッセージを、前記一のサーバが有する記憶手段に記憶させるステップと、前記受信されたメッセージが前記非同期配信系の中から定められた一の配信単位から発信されたメッセージである場合、前記一のサーバがそのメッセージを前記記憶手段に記憶させるステップと、前記一のサーバが、前記記憶手段に記憶されているメッセージの中から順番に一のメッセージを処理対象として特定するステップと、前記処理対象として特定されたメッセージに含まれる金融情報に対し、金融工学による加工であって、同一の階層にある他のサーバと同一の加工を、前記一のサーバが行うステップと、前記処理対象として特定されたメッセージが前記同期配信系から発信されたメッセージであった場合、そのメッセージにグループ番号と、同一の前記グループ番号内で単調増加するシーケンス番号を付加し、前記特定手段により前記処理対象として特定されたメッセージが前記非同期配信系から発信されたメッセージであった場合、そのメッセージに単調増加するシーケンス番号を、前記一のサーバが付加するステップと、前記一のサーバが、前記加工および前記付加がされたメッセージを下位の装置に送信するステップとを有する金融情報配信方法を提供する。
【００１２】
（発明７）本発明は、コンピュータに、各々がメッセージにシーケンス番号を付与して配信する複数の配信単位を有し、複数の配信単位間で同一のシーケンス番号を付与されたメッセージが同一の内容を有する同期配信系、および各々がメッセージにシーケンス番号を付与して配信する複数の配信単位を有し、複数の配信単位間で同一のシーケンス番号を付与されたメッセージが必ずしも同一の内容を有さない非同期配信系が階層化された金融情報配信システムのうち一のサーバが、自装置より上位の階層にある他の装置からメッセージを受信するステップと、前記受信されたメッセージが前記同期配信系から発信されたメッセージである場合、前記受信されたメッセージのシーケンス番号に従ってそのメッセージを記憶すべきか判断し、そのメッセージを記憶すべきと判断したときにはそのメッセージを、前記一のサーバが有する記憶手段に記憶させるステップと、前記受信されたメッセージが前記非同期配信系の中から定められた一の配信単位から発信されたメッセージである場合、前記一のサーバがそのメッセージを前記記憶手段に記憶させるステップと、前記一のサーバが、前記記憶手段に記憶されているメッセージの中から順番に一のメッセージを処理対象として特定するステップと、前記処理対象として特定されたメッセージに含まれる金融情報に対し、金融工学による加工であって、同一の階層にある他のサーバと同一の加工を、前記一のサーバが行うステップと、前記処理対象として特定されたメッセージが前記同期配信系から発信されたメッセージであった場合、そのメッセージにグループ番号と、同一の前記グループ番号内で単調増加するシーケンス番号を付加し、前記処理対象として特定されたメッセージが前記非同期配信系から発信されたメッセージであった場合、そのメッセージに単調増加するシーケンス番号を付加するステップと、前記加工および前記付加がされたメッセージを下位の装置に送信するステップとを実行させるためのプログラムを提供する。
【発明の効果】
【００１３】
発明１のサーバによれば、この下位の階層のサーバは、一つ上位の階層の装置により付加されたシーケンス番号のみを用いる場合と比較して、複数の階層で付加された複数のシーケンスの番号のうちどの階層で付加されたものを用いるか自由に設計でき、より柔軟な処理を行うことができる。
発明２のサーバによれば、この下位の階層のサーバは、上位の階層の装置における並列処理の単位毎に付加されたグループ番号を用いて処理を行うことができる。
発明３のサーバによれば、多重に配信されるメッセージの順序性をグループ番号に基づいて判断することができる。
発明４のサーバによれば、この下位の階層のサーバは、異なる階層のサーバで付加された異なるシーケンス番号のうち、任意のものを利用して処理をすることができる。
発明５のサーバによれば、同期配信系については冗長化されているサーバが一つでも稼動していれば配信が停止せず、非同期配信系については対象配信単位に障害が発生した場合には対象配信単位を切り替える構成を有していない場合と比較して、システムの信頼性が向上する。
発明６の金融情報配信方法によれば、各階層のサーバは、その階層で独自にシーケンス番号を付加することができる。下位の階層のサーバは、一つ上位の階層の装置により付加されたシーケンス番号のみを用いる場合と比較して、複数の階層で付加された複数のシーケンスの番号のうちどの階層で付加されたものを用いるか自由に設計でき、より柔軟な処理を行うことができる。
発明７のプログラムによれば、この下位の階層のサーバは、一つ上位の階層の装置により付加されたシーケンス番号のみを用いる場合と比較して、複数の階層で付加された複数のシーケンスの番号のうちどの階層で付加されたものを用いるか自由に設計でき、より柔軟な処理を行うことができる。
【図面の簡単な説明】
【００１４】
【図１】一実施形態に係る金融情報配信システム１の構成を示す図である。
【図２】サーバ３１の機能構成を示す図である。
【図３】サーバ３１のハードウェア構成を示す図である。
【図４】金融情報配信システム１の動作を示すフローチャートである。
【図５】同期配信系１０から配信されるメッセージを例示する図である。
【図６】非同期配信系２０から配信されるメッセージを例示する図である。
【図７】ステップＳ１３０における処理の詳細を示すフローチャートである。
【図８】ステップＳ１３０における処理の詳細を示すフローチャートである。
【図９】シーケンス番号が付加された後のメッセージを例示する図である。
【図１０】ステップＳ２１０における処理の詳細を示すフローチャートである。
【図１１】シーケンス番号が付加された後のメッセージを例示する図である。
【図１２】シーケンス番号が付加された後のメッセージを例示する図である。
【図１３】シーケンス番号が付加された後のメッセージを例示する図である。
【発明を実施するための形態】
【００１５】
１．構成
図１は、本発明の一実施形態に係る金融情報配信システム１の構成を示す図である。金融情報配信システム１は、同期配信系１０と、非同期配信系２０と、データ配信システム３０と、クライアント４０とを有する。金融情報配信システム１において、同期配信系１０および非同期配信系２０は金融情報を含むメッセージ（ある書式を有するデータ、いわゆる電文）を配信する。データ配信システム３０は、同期配信系１０および非同期配信系２０から配信されたメッセージを加工し、クライアント４０に送信する。
【００１６】
同期配信系１０は、配信単位１１および配信単位１２を有する。配信単位１１および配信単位１２は、それぞれ個別のサーバ装置、または単一のサーバ装置上で動作するソフトウェアにより実現される機能である。配信単位１１および配信単位１２は、それぞれ、メッセージを配信する。メッセージは、ヘッダおよび本文を含む。ヘッダは、シーケンス番号（またはＩＤ）を含む。シーケンス番号は、１単位ずつ単調に増加する番号である。本文は、金融情報を含む。配信単位１１および配信単位１２が配信するメッセージにおいて、同一のシーケンス番号を有するメッセージは、同一の金融情報を含む。例えば、配信単位１１から配信されるシーケンス番号１のメッセージと、配信単位１２から配信されるシーケンス番号１のメッセージとは、同一の金融情報を含む。同期配信系１０の「同期」とはこの性質に由来している。この例で、データ配信システム３０におけるメッセージの送信には、コネクションレスのプロトコルであるＵＤＰ（User Datagram Protocol）が用いられる。データの欠落に対応できるように、金融情報配信システム１は、複数の配信単位から同一の情報を配信する冗長な構成を採用している。配信単位１１および配信単位１２は、メッセージを配信すべき装置のアドレスの一覧（グループ情報）を有しており、この一覧に含まれるアドレスの複数の装置に、同一のメッセージを送信（いわゆるマルチキャスト）する。
【００１７】
非同期配信系２０は、配信単位２１および配信単位２２を有する。配信単位２１および配信単位２２は、それぞれ、メッセージを配信する。配信単位２１および配信単位２２が配信するメッセージにおいて、同一のシーケンス番号を有するメッセージは、必ずしも同一の金融情報を含むとは限らない（同一の場合もある）。例えば、配信単位２１から配信されるシーケンス番号１のメッセージと、配信単位２２から配信されるシーケンス番号１のメッセージとは、異なる金融情報を含む。非同期配信系２０の「非同期」とはこの性質に由来している。
【００１８】
データ配信システム３０は、複数のサーバ３１を有する。複数のサーバ３１は、階層化されている。一の階層には、一または複数のサーバ３１が存在する。一の階層のサーバ３１は、自装置より上位の一または複数の装置からメッセージを受信し、自身より下位の一または複数の装置にメッセージを送信する。図１の例では、サーバ３１は３階層に区分されている。各階層は、３つのサーバ３１を含む。以下の説明において、複数のサーバ３１の各々を区別する場合は、サーバ３１（ｘ，ｙ）と表記する。サーバ３１（ｘ，ｙ）は、第ｙ階層におけるｘ番目のサーバ３１を示す。例えば、サーバ３１（２，１）は、第１階層における２番目のサーバ３１を示す。図１の例では、同期配信系１０および非同期配信系２０からメッセージを直接受信するサーバ３１が最上位（第１階層）に区分され、クライアント４０にメッセージを直接送信するサーバ３１が最下位（第３階層）に区分される。
【００１９】
クライアント４０は、データ配信システム３０から送信されるメッセージを受信し、受信したメッセージに応じた処理を行う。例えば、クライアント４０は、受信したメッセージに含まれる金融情報をリアルタイムでチャートに表示する。
【００２０】
図２は、サーバ３１の機能構成を示す図である。受信部３０１は、自装置より上位の階層にある他の装置からメッセージを受信する。記憶部３０２は、各種のデータを記憶する。特定部３０３は、処理対象となるメッセージを特定する。受信部３０１により受信されたメッセージが同期配信系１０から発信されたメッセージである場合、特定部３０３は、受信されたメッセージのシーケンス番号に従ってそのメッセージを記憶すべきか判断し、そのメッセージを記憶すべきと判断したときにはそのメッセージを記憶部３０２に記憶させる。受信部３０１により受信されたメッセージが非同期配信系２０の中から定められた一の配信単位から発信されたメッセージである場合、特定部３０３は、そのメッセージを記憶部３０２に記憶させる。特定部３０３は、記憶部３０２に記憶されているメッセージの中から順番に一のメッセージを処理対象として特定する。加工部３０４は、特定部３０３により処理対象として特定されたメッセージに含まれる金融情報に対し、金融工学による加工（演算）を行う。この加工は、同一の階層にある他のサーバと同一である。特定部３０３により処理対象として特定されたメッセージが同期配信系１０から発信されたメッセージであった場合、付加部３０５は、そのメッセージにグループ番号と、同一のグループ番号内で単調増加するシーケンス番号を付加する。特定部３０３により処理対象として特定されたメッセージが非同期配信系２０から発信されたメッセージであった場合、付加部３０５は、そのメッセージに単調増加するシーケンス番号を付加する。送信部３０６は、加工部３０４による加工および付加部３０５による付加がされたメッセージを下位の装置に送信する。
【００２１】
また、受信部３０１により受信されたメッセージが対象配信単位から発信されたメッセージであり、かつ、そのメッセージのシーケンス番号が記憶部３０２に記憶されている最新のシーケンス番号よりも２単位以上大きい場合、要求部３０７は、欠落しているシーケンス番号のメッセージの再送信を対象配信単位に要求する。変更部３０８は、対象配信単位に障害が発生した場合、対象配信単位を別の配信単位に変更する。
【００２２】
図３は、サーバ３１のハードウェア構成を示す図である。サーバ３１は、ＣＰＵ（Central Processing Unit）３５１、ＲＯＭ（Read Only Memory）３５２、ＲＡＭ（random Access Memory）３５３、ＨＤＤ（Hard Disk Drive）３５４、および通信ＩＦ３５５を有する。ＣＰＵ３５１は、ＲＡＭ３５３をワークエリアとして、ＲＯＭ３５２またはＨＤＤ３５４に記憶されているプログラムを実行する演算装置である。ＲＯＭ３５２は、プログラムやデータを記憶する不揮発性の記憶装置である。ＲＡＭ３５３は、プログラムやデータを記憶する揮発性の記憶装置である。ＨＤＤ３５４は、プログラムやデータを記憶する不揮発性の外部記憶装置である。通信ＩＦ３５５はネットワークを介した通信を行うためのインターフェースである。ＣＰＵ３５１がＨＤＤ３５４に記憶されているプログラムを実行することにより、サーバ３１には、図２に示される機能構成が実装される。プログラムを実行しているＣＰＵ３５１は、特定部３０３、加工部３０４、付加部３０５、要求部３０７、および変更部３０８の一例である。ＣＰＵ３５１に制御される通信ＩＦ３５５は、受信部３０１および送信部３０６の一例である。ＣＰＵ３５１に制御されるＲＡＭ３５３は、記憶部３０２の一例である。
【００２３】
２．動作
図４は、金融情報配信システム１の動作、特に、サーバ３１の動作を示すフローチャートである。以下、次のような具体例を用いて金融情報配信システム１の動作を説明する。同期配信系１０は、甲証券取引所の金融情報配信システムである。非同期配信系２０は、甲証券取引所とは異なる乙証券取引所の金融情報配信システムである。同期配信系１０および非同期配信系２０から配信されるメッセージは、各証券取引所における株式の約定に関する金融情報を含む。データ配信システム３０は、上位の装置から受信したメッセージに含まれる金融情報に対し金融工学による加工を行い、下位の装置にメッセージを送信する。以下、複数のサーバ３１のうち一のサーバ３１に注目してその動作を説明する。
【００２４】
図５は、同期配信系１０（配信単位１１および配信単位１２）から配信されるメッセージを例示する図である。この例で、メッセージのヘッダはシーケンス番号を有する。メッセージの本文は、金融情報として銘柄、価格および出来高の情報を含む。例えば、シーケンス番号１の金融情報は、Ａ社の株式について１２５０円で１００株の売買が成立したことを示している。シーケンス番号が小さいものが時間的に先に配信される。
【００２５】
図６は、非同期配信系２０（配信単位２１および配信単位２２）から配信されるメッセージを例示する図である。メッセージのヘッダおよび本文の構成は同期配信系１０の場合と同様である。
【００２６】
２−１．第１階層のサーバ３１の動作
再び図４を参照する。ここではまず、第１階層のサーバ３１に注目する。ステップＳ１１０において、受信部３０１は、上位階層の装置、この例では、配信単位１１、配信単位１２、配信単位２１、および配信単位２２のいずれかからメッセージを受信する。また、受信部３０１は、メッセージに受信時刻を付与する。
【００２７】
ステップＳ１２０において、特定部３０３は、受信したメッセージが同期配信系から送信されたものであるか判断する。この例で、メッセージのヘッダは、そのメッセージが同期配信系から送信されたものであるか非同期配信系から送信されたものであるかを示すフラグを含んでいる。特定部３０３は、ヘッダに含まれるフラグに基づいて、そのメッセージが同期配信系から送信されたものであるか判断する。別の例で、メッセージのヘッダは、そのメッセージの送信元である配信系を特定する識別子を含んでいてもよい。この場合、特定部３０３は、配信系の識別子に基づいて、そのメッセージが同期配信系から送信されたものであるか判断する。メッセージが同期配信系から送信されたものであると判断された場合（ステップＳ１２０：ＹＥＳ）、特定部３０３は、処理をステップＳ１３０に移行する。メッセージが同期配信系から送信されたものでない、すなわち非同期配信系から送信されたものであると判断された場合（ステップＳ１２０：ＮＯ）、特定部３０３は、処理をステップＳ２１０に移行する。
【００２８】
２−１−１．同期配信系からのメッセージの処理
図７は、ステップＳ１３０における処理の詳細、具体的にはメッセージの入力処理を示すフローチャートである。ステップＳ１３０において、特定部３０３は、処理対象となるメッセージを特定し、下流の処理に出力する。この処理は、メッセージをキューに入力する処理（スレッド）と、キューからメッセージを下流の処理に出力する処理（スレッド）とを含む。メッセージをキューに入力する処理の詳細は以下のとおりである。特定部３０３は、各グループについて、複数の配信単位から配信されたメッセージを受け、シーケンス番号に基づいて、シーケンス番号に従った順番でメッセージを下流の処理に出力する。記憶部３０２は、メッセージを記憶するための領域であるキューを有している。キューはグループ毎に設けられる。この例で、キューはリングバッファであり、大きさがＮの配列である。配列の要素はインデックスにより識別される。データの書き込み位置および読み出し位置を示すポインタとして、変数ｈおよび変数ｔが用いられる。すなわち、変数ｈおよび変数ｔは、キューの先頭および末端をそれぞれ示す。また、ここでは、次にキューに入れるべきメッセージのシーケンス番号を示す変数として、変数ｋが用いられる。変数ｋは、ステップＳ１３０以前に初期化されている。ステップＳ１３０１において、特定部３０３は、受信したメッセージのシーケンス番号ｓｅｑと変数ｋとを比較する。ｓｅｑ＝ｋであった場合、特定部３０３は、処理をステップＳ１３０２に移行する。ｓｅｑ＞ｋであった場合、特定部３０３は、処理をステップＳ１３０４に移行する。ｓｅｑ＜ｋであった場合、特定部３０３は、処理をステップＳ１３０７に移行する。
【００２９】
ステップＳ１３０２において、特定部３０３は、受信したメッセージをキューの末端に挿入する。ステップＳ１３０３において、特定部３０３は、ｋ＝ｋ＋１として変数ｋに１を加算して変数ｋを更新する。このとき、変数ｔは１つずらされて更新される。
【００３０】
ステップＳ１３０４において、特定部３０３は、（ｓｅｑ−ｋ）個の空のメッセージをキューに挿入する。空メッセージは、そのメッセージが欠落している状態であることを示す情報と、その位置に本来入るべきメッセージのシーケンス番号と、擬似的な受信時刻としてシーケンスｓｅｑを持つメッセージの受信時刻とを含む。ステップＳ１３０５において、特定部３０３は、受信したメッセージを空メッセージの後に挿入する。例えば、ｋ＝３、ｓｅｑ＝５であった場合、特定部３０３は、５−３＝２個の空のメッセージをキューに挿入し、その次にシーケンス番号５のメッセージを挿入する。すなわち、シーケンス番号２のメッセージとシーケンス番号５のメッセージとの間には、２個の空メッセージが挿入される。ステップＳ１３０６において、特定部３０３は、ｋ＝ｋ＋（ｓｅｑ−ｋ）＋１として変数ｋを更新する。すなわち、特定部３０３は、空メッセージを含め挿入されたメッセージの数だけ変数ｋを増加させる。このとき、変数ｔは、（（ｓｅｑ−ｋ）＋１）ずらされて更新される。
【００３１】
ステップＳ１３０７において、特定部３０３は、キューにおいて次にメッセージが入るべき位置ｉを算出する。位置ｉは、ｉ＝Ｃ−（ｋ−ｓｅｑ）により算出される。ここで、Ｃはキューの容量すなわちエンキューされているメッセージの数を示す。ステップＳ１３０８において、特定部３０３は、キューにおいて次にメッセージが入るべき位置が未送信の位置であるか、すなわち、ｉ≧ｈであるか判断する。キューにおいて次にメッセージが入るべき位置が未送信の位置であると判断された場合（Ｓ１３０８：ＹＥＳ）、特定部３０３は、処理をステップＳ１３０９に移行する。キューにおいて次にメッセージが入るべき位置が未送信の位置でないと判断された場合（Ｓ１３０８：ＮＯ）、特定部３０３は、処理をステップＳ１３１０に移行する。
【００３２】
ステップＳ１３０９において、特定部３０３は、受信したメッセージをＳ１３０７で算出した位置ｉのメッセージと置換する。このとき、変数ｔは更新されない。ステップＳ１３１０において、特定部３０３は、受信したメッセージを破棄する。ステップＳ１３０３、Ｓ１３０６、Ｓ１３０９、またはＳ１３１０の処理を終了すると、特定部３０３は、図７の処理を終了する。特定部３０３は、メッセージを受信するたびにステップＳ１３０１−Ｓ１３１０の処理を実行する。
【００３３】
図８は、メッセージの出力処理を示すフローチャートである。ステップＳ１３２０において、特定部３０３は、キューが空であるか判断する。キューが空であるか否かの判断は、変数ｈおよび変数ｔに基づいて行われる。ｈ＝ｔであれば、キューは空である。それ以外の場合は、キューは空ではない。キューが空であると判断された場合（Ｓ１３２０：ＹＥＳ）、特定部３０３はアイドルする。キューが空ではないと判断された場合（Ｓ１３２０：ＮＯ）、特定部３０３は、キューの先頭要素が空メッセージであるか判断する（ステップＳ１３２１）。キューの先頭要素は空メッセージではないと判断された場合（Ｓ１３２１：ＮＯ）、特定部３０３は、処理をステップＳ１３２２に移行する。キューの先頭要素が空メッセージであると判断された場合（Ｓ１３２１：ＹＥＳ）、特定部３０３は、処理をステップＳ１３２３に移行する。
【００３４】
ステップＳ１３２２において、特定部３０３は、キューの先頭要素のメッセージを読み出し、下流の処理に出力する。このとき、変数ｈは更新される。
ステップＳ１３２３において、特定部３０３は、一定時間待機する。具体的には、特定部３０３は、キューの先頭要素に入っている空メッセージの受信時刻と現在時刻とを比較し、その差がしきい値に達するまで待機する。待機中に新たなメッセージが到着し、キューの先頭要素が空メッセージでなくなった場合、特定部３０３は、ステップＳ１３２２と同様に、先頭のキューのメッセージを読み出し、下流の処理に出力する。一定時間待機してもキューの先頭要素が空メッセージのままであった場合、特定部３０３は、空のメッセージが有するシーケンス番号（図７のステップＳ１３０４の処理で計算済み）を欠落したメッセージ番号として記憶部３０２に記憶する。さらに、特定部３０３は、ダミーのメッセージを生成し、生成したダミーメッセージを下流の処理に出力する（ステップＳ１３２４）。
【００３５】
特定部３０３は、所定の周期で図８の処理を実行する。なお、図７の処理と図８の処理とを別々に説明したが、これらの処理は並列に行われる。
【００３６】
再び図４を参照する。ステップＳ１４０において、加工部３０４は、処理対象のメッセージに含まれる金融情報について、金融工学に基づく加工（演算）を行う。ある階層のサーバ３１の加工部３０４による加工は、同一の階層のサーバ３１の加工部３０４による加工と同一である。加工部３０４による加工の詳細は、どのように設計されてもよい。この例で、加工部３０４は、複数の金融情報を並列処理する。並列処理の単位として、例えば配信系が用いられる。すなわち、加工部３０４は、同期配信系１０から配信されるメッセージと、非同期配信系２０から配信されるメッセージとを並列処理する。あるいは別の例で、並列処理の単位として、金融情報の一部、例えば銘柄が用いられてもよい。この場合、加工部３０４は、Ａ社の約定情報、Ｂ社の約定情報、Ｃ社の約定情報、・・・を並列処理する。さらにこの場合、加工部３０４は、複数の配信系から配信されるメッセージを用いて加工を行ってもよい。例えば、加工部３０４は、同期配信系１０から配信されるメッセージに含まれるＡ社の価格と、非同期配信系２０から配信されるメッセージに含まれるＡ社の価格との差をとる加工を行ってもよい。さらに別の例で、加工部３０４は、ｎ個のメッセージからｎ＋１個のメッセージを生成する処理、またはｎ個のメッセージからｎ−１個のメッセージを生成する処理のように、上位の装置から送信されたメッセージの数を増減させる加工を行ってもよい。
【００３７】
ステップＳ１５０において、付加部３０５は、加工が行われたメッセージに、グループ番号を付加する。この例で、グループ番号は、同期配信系と１：１に対応している。すなわち、同期配信系１０に対し、グループ番号１が付加される。図１には示していないが、同期配信系１０とは別の同期配信系があれば、その同期配信系に対してグループ番号２が付加される。さらに別の同期配信系があれば、その同期配信系に対してグループ番号３が付加される。メッセージは送信元である同期配信系１０の識別子を含んでおり、付加部３０５は、この識別子に基づいてグループ番号を付加する。
【００３８】
別の例で、付加部３０５は、加工部３０４における並列処理の単位毎にグループ番号を付加してもよい。例えば、加工部３０４が、約定情報を銘柄毎に並列処理する場合、付加部３０５は、銘柄毎に異なるグループ番号を付加する。この場合、付加部３０５は、例えば、Ａ社の約定情報にはグループ番号１を、Ｂ社の約定情報にはグループ番号２を、Ｃ社の約定情報にはグループ番号３を付加する。さらに別の例で、付加部３０５は、メッセージの配信元と、加工部３０４における並列処理の単位との組み合わせに応じて異なるグループ番号を付加してもよい。この場合、付加部３０５は、例えば、同期配信系１０から配信されたＡ社の約定情報にはグループ番号１を、非同期配信系２０から配信されたＡ社の約定情報にはグループ番号２を、同期配信系１０から配信されたＢ社の約定情報にはグループ番号３を、非同期配信系２０から配信されたＢ社の約定情報にはグループ番号４を付加する。
【００３９】
ステップＳ１６０におけるシーケンス番号は、同一のグループ番号を有するメッセージ群の中で単調増加するように付加される。
【００４０】
図９は、ステップＳ１６０においてシーケンス番号が付加された後のメッセージを例示する図である。この例で、メッセージは、第１階層のサーバ３１により付加されたグループ番号（ＧｒＩＤ１）およびシーケンス番号（ａｄｄ  ｓｅｑ１）、並びに配信元の同期配信系１０により付加されたシーケンス番号（ｓｅｑ）を含む。なお、図中メッセージの本文としてオリジナルのデータ（銘柄、価格および出来高）が示されているが、実際にはメッセージの本文は金融工学に基づく加工がされている。
【００４１】
再び図４を参照する。ステップＳ１７０において、送信部３０６は、下位の階層の装置にメッセージを送信する。このとき、送信部３０６は、付加部３０５が付加したシーケンス番号の順番に従ってメッセージを送信する。この例で、記憶部３０２は、メッセージを送信すべき下位の階層のサーバ３１のアドレスの一覧を記憶している。送信部３０６は、記憶部３０２に記憶されているアドレスを宛先として、メッセージを送信する。
【００４２】
２−１−２．非同期配信系からのメッセージの処理
図１０は、ステップＳ２１０における処理の詳細を示すフローチャートである。この例で、特定部３０３は、非同期配信系２０の配信単位の中から一の配信単位を対象配信単位（アクティブな配信単位）として、対象配信単位からのメッセージを使用する。特定部３０３は、対象配信単位以外の配信単位からのメッセージを破棄する。詳細は以下のとおりである。この処理は、図７および図８の処理と同様に、メッセージをキューに入力する処理（スレッド）と、キューからメッセージを下流の処理に出力する処理（スレッド）とを含む。ここでは、メッセージをキューに入力する処理について説明する。記憶部３０２は、メッセージを記憶するための領域であるキューを有している。キューは、同期配信系のためのものとは別に設けられる。図７および図８で説明したものと同様に、キューはリングバッファである。
【００４３】
ステップＳ２１０１において、特定部３０３は、受信したメッセージが対象配信単位から配信されたものであるか判断する。この例で、メッセージは送信元である配信単位の識別子を含んでいる。また、記憶部３０２は、配信単位を特定する識別子（例えば、配信単位２１の識別子）を記憶している。特定部３０３は、メッセージに含まれる識別子と、記憶部３０２に記憶されている識別子とを比較し、これらが一致した場合、受信したメッセージが対象配信単位から配信されたものであると判断する。受信したメッセージが対象配信単位から配信されたものであると判断された場合（Ｓ２１０１：ＹＥＳ）、特定部３０３は、処理をステップＳ２１０２に移行する。受信したメッセージが対象配信単位から配信されたものでないと判断された場合（Ｓ２１０１：ＮＯ）、特定部３０３は、処理をステップＳ２１１２に移行する。
【００４４】
ステップＳ２１０２において、特定部３０３は、受信したメッセージのシーケンス番号ｓｅｑと変数ｋとを比較する。ｓｅｑ＝ｋであった場合、特定部３０３は、処理をステップＳ２１０３に移行する。ｓｅｑ＞ｋであった場合、特定部３０３は、処理をステップＳ２１０５に移行する。ｓｅｑ＜ｋであった場合、特定部３０３は、処理をステップＳ２１０９に移行する。
【００４５】
ステップＳ２１０３において、特定部３０３は、受信したメッセージをキューの末端に挿入する。ステップＳ２１０４において、特定部３０３は、ｋ＝ｋ＋１として変数ｋに１を加算して変数ｋを更新する。このとき、変数ｔは１つずらされて更新される。
【００４６】
ステップＳ２１０５において、特定部３０３は、（ｓｅｑ−ｋ）個の空のメッセージをキューに挿入する。空メッセージは、そのメッセージが欠落している状態であることを示す情報と、その位置に本来入るべきメッセージのシーケンス番号と、擬似的な受信時刻としてシーケンスｓｅｑを持つメッセージの受信時刻とを含む。ステップＳ２１０６において、特定部３０３は、受信したメッセージを空メッセージの後に挿入する。ステップＳ２１０７において、特定部３０３は、ｋ＝ｋ＋（ｓｅｑ−ｋ）＋１として変数ｋを更新する。すなわち、特定部３０３は、空メッセージを含め挿入されたメッセージの数だけ変数ｋを増加させる。このとき、変数ｔは、（（ｓｅｑ−ｋ）＋１）ずらされて更新される。ステップＳ２１０８において、要求部３０７は、欠落しているメッセージの再送を対象配信単位に要求する。
【００４７】
ステップＳ２１０９において、特定部３０３は、キューにおいて次にメッセージが入るべき位置ｉを算出する。位置ｉは、ｉ＝Ｃ−（ｋ−ｓｅｑ）により算出される。ここで、Ｃはキューの容量すなわちエンキューされているメッセージの数を示す。ステップＳ２１１０において、特定部３０３は、キューにおいて次にメッセージが入るべき位置が未送信の位置であるか、すなわち、ｉ≧ｈであるか判断する。キューにおいて次にメッセージが入るべき位置が未送信の位置であると判断された場合（Ｓ２１１０：ＹＥＳ）、特定部３０３は、処理をステップＳ２１１１に移行する。キューにおいて次にメッセージが入るべき位置が未送信の位置でないと判断された場合（Ｓ２１１０：ＮＯ）、特定部３０３は、処理をステップＳ２１１２に移行する。
【００４８】
ステップＳ２１１１において、特定部３０３は、受信したメッセージを、ステップＳ２１０９で算出した位置ｉに挿入する。このとき、変数ｔは更新されない。ステップＳ２１１２において、特定部３０３は、受信したメッセージを破棄する。ステップＳ２１０４、Ｓ２１１１、またはＳ２１１２の処理を終了すると、特定部３０３は、図１０の処理を終了する。特定部３０３は、メッセージを受信するたびにステップＳ２１０１−Ｓ２１１２の処理を実行する。ステップＳ２１０８の再送要求に対する応答としてメッセージが再送され、受信部３０１がこれを受信すると、図１０のフローが実行され、ステップＳ２１０９以降の処理によって処理される。
メッセージを下流の処理に出力する処理は、図８で説明したものと同様である。
【００４９】
再び図４を参照する。ステップＳ２２０において、加工部３０４は、メッセージを加工する。ステップＳ２３０において、付加部３０５は、メッセージにシーケンス番号を付加する。ステップＳ２４０において、送信部３０６は、第２階層のサーバ３１にメッセージを送信する。ステップＳ２２０、Ｓ２３０、およびＳ２４０の処理は、ステップＳ１４０、Ｓ１６０、およびＳ１７０の処理と同様に行われる。
【００５０】
図１１は、ステップＳ２３０においてシーケンス番号が付加された後のメッセージを例示する図である。この例で、メッセージは、第１階層のサーバ３１により付加されたシーケンス番号（ａｄｄ  ｓｅｑ１）、および配信元の同期配信系１０により付加されたシーケンス番号（ｓｅｑ）を含む。図９の例とは異なり、メッセージのヘッダはグループ番号を含んでいない。それ以外の内容については図９の例と同様である。
【００５１】
図４においては、例えばステップＳ１３０の処理およびステップＳ１４０の処理がこの順番で行われるように説明した。しかし、これらの処理は、並列に行われる。すなわち、あるメッセージについてステップＳ１４０の加工が行われている間、別のメッセージについてステップＳ１３０の処理が行われる。他の処理についても同様である。
【００５２】
２−２．第２階層のサーバ３１の動作
次に、第２階層のサーバ３１に注目してその動作を説明する。第２階層のサーバ３１の動作も基本的に第１階層のサーバ３１と同様である。第１階層のサーバ３１（１，１）、サーバ３１（２，１）、およびサーバ３１（３，１）において、加工部３０４はいずれも同一の加工を行う。すなわち、第２階層のサーバ３１は、３つの送信元（サーバ３１（１，１）、サーバ３１（２，１）、およびサーバ３１（３，１））から、内容が同一のメッセージを計３つ受信する。このメッセージは、配信元である同期配信系１０または非同期配信系２０により付加されたシーケンス番号と、第１階層のサーバ３１により付加されたシーケンス番号および（場合により）グループ番号とを含んでいる。以下、第ｙ階層の装置により付加されたシーケンス番号を、シーケンス番号（ｙ）と表す。ｙ＝０は配信元（同期配信系１０または非同期配信系２０）を示す。グループ番号についても同様である。
【００５３】
この例において、第２階層のサーバ３１の特定部３０３は、シーケンス番号（１）を用いて処理対象のメッセージを特定する。メッセージにグループ番号（１）が含まれる場合、特定部３０３は、グループ毎に処理対象のメッセージを特定してもよい。この場合、記憶部３０２は、グループ毎にキューを設ける。あるいは別の例で、特定部３０３は、シーケンス番号（０）を用いて処理対象のメッセージを特定してもよい。
【００５４】
この例において、第２階層のサーバ３１の加工部３０４は、メッセージに含まれる金融情報が特定の条件を満たす場合に、メッセージの数を増やす処理を行う。
【００５５】
図１２は、第２階層のサーバ３１によりステップＳ１５０においてシーケンス番号が付加された後のメッセージを例示する図である。この例のメッセージは、元は同期配信系１０から配信されたものである。このメッセージは、第２階層のサーバ３１により付加されたグループ番号（ＧｒＩＤ２）およびシーケンス番号（ａｄｄ  ｓｅｑ２）、第１階層のサーバ３１により付加されたグループ番号（ＧｒＩＤ１）およびシーケンス番号（ａｄｄ  ｓｅｑ１）、並びに配信元の同期配信系１０により付加されたシーケンス番号（ｓｅｑ）を含む。また、図中Ｃ社とＧ社に関する金融情報を含むメッセージについては、加工部３０４により、１つのメッセージから新たな２つのメッセージが生成される（既存のものとあわせて計３つ）。第２階層のサーバ３１において、追加されたメッセージも含めてすべてのメッセージに対し、シーケンス番号（ａｄｄ  ｓｅｑ２）が付加される。なお、図中メッセージの本文としてオリジナルのデータ（銘柄、価格および出来高）が示されているが、実際にはメッセージの本文は金融工学に基づく加工がされている点は既に説明したとおりである。
【００５６】
図１３は、第２階層のサーバ３１によりステップＳ２３０においてシーケンス番号が付加された後のメッセージを例示する図である。この例のメッセージは、元は非同期配信系２０から配信されたものである。この例で、メッセージは、第２階層のサーバ３１により付加されたシーケンス番号（ａｄｄ  ｓｅｑ２）、第１階層のサーバ３１により付加されたシーケンス番号（ａｄｄ  ｓｅｑ１）、および配信元の同期配信系１０により付加されたシーケンス番号（ｓｅｑ）を含む。図９の例とは異なり、メッセージのヘッダはグループ番号を含んでいない。それ以外の内容については図１２の例と同様である。
【００５７】
第２階層のサーバ３１は、図１２または図１３に示されるメッセージを第３階層のサーバ３１に送信する。
【００５８】
２−３．第３階層以降の動作
第３階層以降のサーバ３１も、第２階層のサーバ３１と同様に動作する。例えば第３階層のサーバ３１の特定部３０３は、シーケンス番号（０）、シーケンス番号（１）、またはシーケンス番号（２）を用いて処理対象のメッセージを特定することができる。すなわち、特定部３０３は、シーケンス番号（０）、シーケンス番号（１）、またはシーケンス番号（２）のうち任意のものを、キューにおける順序性の根拠とすることができる。上位の階層の装置で付加されたシーケンス番号のうち、どの階層のシーケンス番号を用いるかは、どのように設計されてもよい。例えば、特定部３０３は、ある特定の階層ｊのシーケンス番号（ｊ）を用いてもよい。あるいは、特定部３０３は、階層ｊのシーケンス番号（ｊ）を用いている場合に、階層ｊにおいて障害が発生したとの情報を取得したときに、別の階層（例えばそれよりも上位の階層である階層ｊ−１）のシーケンス番号を用いるように、処理を変更してもよい。この場合、記憶部３０２は、使用するシーケンス番号の階層を特定するパラメータｊを記憶している。なお、これは第２階層、第４階層以降のサーバ３１についても同様である。
【００５９】
最終階層のサーバ３１は、メッセージをクライアント４０に送信する。最終階層のサーバ３１の記憶部３０２は、メッセージを送信すべきクライアント４０のアドレスの一覧を記憶している。送信部３０６は、記憶部３０２に記憶されているアドレスを宛先として、メッセージを送信する。
【００６０】
３．他の実施形態
本発明は上述の実施形態に限定されるものではなく種々の変形実施が可能である。以下、変形例をいくつか説明する。以下の変形例のうち２つ以上のものが組み合わせて用いられてもよい。
【００６１】
金融情報配信システム１の構成は図１に示したものに限定されない。金融情報配信システム１は、複数の同期配信系を有してもよい。金融情報配信システム１は、複数の非同期配信系を有してもよい。一の配信系が３つ以上の配信単位を有してもよい。データ配信システム３０において、サーバ３１に階層の数は３つに限定されない。また、すべての階層のサーバ３１の数は同一でなくてもよい。ＵＤＰ以外の別のプロトコルが用いられてもよい。さらに、サーバ３１の構成は図２に示したものに限定されない。これらの機能の一部、例えば要求部３０７および変更部３０８の機能が省略されてもよい。
【００６２】
上述の実施形態において、非同期配信系２０から配信されたメッセージにはグループ番号が付加されない例を説明した。しかし、付加部３０５は、メッセージに含まれる金融情報の内容（例えば、銘柄）に応じて、非同期配信系２０から配信されたメッセージにグループ番号を付加してもよい。
【００６３】
シーケンス番号に基づいて処理対象のメッセージを特定する処理の詳細は、図７、図８、および図１０に示したものに限定されない。シーケンス番号に従った順番で処理を行うことができるようにするものであれば、どのようなアルゴリズムが用いられてもよい。また、キューの実装はリングバッファに限定されない。
【００６４】
実施形態で説明した金融情報および金融情報を用いた加工はあくまで例示であって、これ以外の金融情報および加工（演算）が用いられてもよい。
【００６５】
上述の実施形態においてＣＰＵ３５１によって実行されるプログラムは、磁気記録媒体（磁気テープ、磁気ディスク（ＨＤＤ、ＦＤ（Flexible Disk））など）、光記録媒体（光ディスク（ＣＤ（Compact Disk）、ＤＶＤ（Digital Versatile Disk））など）、光磁気記録媒体、半導体メモリ（フラッシュＲＯＭなど）などのコンピュータ読取り可能な記録媒体に記憶した状態で提供されてもよい。また、このプログラムは、インターネットのようなネットワーク経由でダウンロードされてもよい。
【符号の説明】
【００６６】
１…金融情報配信システム、１０…同期配信系、１１…配信単位、１２…配信単位、２０…非同期配信系、２１…配信単位、２２…配信単位、３０…データ配信システム、３１…サーバ、４０…クライアント、３０１…受信部、３０２…記憶部、３０３…特定部、３０４…加工部、３０５…付加部、３０６…送信部、３０７…要求部、３０８…変更部、３５１…ＣＰＵ、３５２…ＲＯＭ、３５３…ＲＡＭ、３５４…ＨＤＤ、３５５…通信ＩＦ
【要約】
【課題】ネットワーク上の下位の装置においてより柔軟な処理を可能にすること。
【解決手段】金融情報配信システム１は、同期配信系１０と、非同期配信系２０と、データ配信システム３０と、クライアント４０とを有する。金融情報配信システム１において、同期配信系１０および非同期配信系２０は金融情報を含むメッセージを配信する。データ配信システム３０は、同期配信系１０および非同期配信系２０から配信されたメッセージを加工し、クライアント４０に送信する。このとき、データ配信システム３０において、各サーバ３１は、同期配信系１０から配信されたメッセージに対してはグループ番号およびシーケンス番号を、非同期配信系２０から配信されたメッセージに対してはシーケンス番号を付加する。
【選択図】図１【図１】
0004771266.tif 000002
【図２】
0004771266.tif 000003
【図３】
0004771266.tif 000004
【図４】
0004771266.tif 000005
【図５】
0004771266.tif 000006
【図６】
0004771266.tif 000007
【図７】
0004771266.tif 000008
【図８】
0004771266.tif 000009
【図９】
0004771266.tif 000010
【図１０】
0004771266.tif 000011
【図１１】
0004771266.tif 000012
【図１２】
0004771266.tif 000013
【図１３】
0004771266.tif 000014