(57)【要約】【課題】分散処理システムにおいてデータセンタに到達したトランザクションの順序と受付順序との間に順序入替わりが発生する。【解決手段】トランザクションが複数の断片パケットに分割して転送され、かつその断片パケットには当該トランザクションに所属していることを識別できる情報（トランザクションID）が付与されている状況において、WANルータ110は、断片パケットが必ず通る経路においてタイムスタンプを付与し、受付サーバ120でのトランザクション復元時に最も遅いタイムスタンプをトランザクションの受付時刻とし、さらに処理サーバ150では、受付時刻からシステムの最大遅延時間Tw経過させてから受付時刻順にトランザクション処理を行う。【選択図】図１
2012129857.tif 000002
【特許請求の範囲】
【請求項１】
データ処理システムであって、
ネットワークに接続されるルータと、前記ルータに接続される負荷分散サーバと、
前記負荷分散サーバに接続される複数の受付サーバと、複数の前記受付サーバに接続される処理サーバとから構成され、
前記ルータは、入力されるパケットに対しタイムスタンプを付与するルーティング処理部を有し、
前記受付サーバは、同一の識別子を有する複数の前記パケットに分割されて伝送されたトランザクションに対し、複数の前記パケットに付与した前記タイムスタンプの最も遅い時刻を前記トランザクションの受付時刻として付与する処理部を有し、
前記処理サーバは、複数の前記受付サーバから受信した複数の前記トランザクションのうち、予め設定した最大遅延時間を経過した前記トランザクションに対し付与された前記トランザクションの受付時刻に従ってソートする処理部を有する、
ことを特徴とするデータ処理システム。
【請求項２】
請求項１に記載のデータ処理システムであって、
前記ルーティング処理部は、前記パケットのヘッダ解析を行うヘッダ解析処理部と、前記パケットに前記タイムスタンプを付与すルータイムスタンプ付与処理部と、前記タイムスタンプが付与された前記パケットを転送するフォワーディング処理部を備える、
ことを特徴とするデータ処理システム。
【請求項３】
請求項２に記載のデータ処理システムであって、
前記タイムスタンプ付与処理部は、前記パケットに対し、タイムスタンプオプションを認識する識別コードと前記タイムスタンプを付与する、
ことを特徴とするデータ処理システム。
【請求項４】
請求項１に記載のデータ処理システムであって、
前記負荷分散サーバは処理部を有し、
前記処理部は、前記パケットの前記識別子に対応して、転送すべき前記受付サーバを決定して、前記パケットを転送する、
ことを特徴とするデータ処理システム。
【請求項５】
請求項３に記載のデータ処理システムであって、
前記受付サーバの前記処理部は、前記負荷分散サーバから転送される前記パケットのヘッダ解析を実行し、前記パケット中の前記識別コードを検出して前記タイムスタンプを抽出し、前記パケット中の前記識別子に基づき、トランザクション識別子（ID）を決定し、前記トランザクションIDを前記タイムスタンプと関連付けて記憶する、
ことを特徴とするデータ処理システム。
【請求項６】
請求項５に記載のデータ処理システムであって、
前記受付サーバの前記処理部は、受付時刻決定部を備え、前記受付時刻決定部は、記憶した前記トランザクションIDと前記タイムスタンプに基づき、前記トランザクションIDに関連する前記タイムスタンプ群のなかで、最も遅い時刻の値を、対応する前記トランザクションの受付時刻とし、前記トランザクションIDと前記トランザクションと前記受付時刻を前記処理サーバに転送する、
ことを特徴とするデータ処理システム。
【請求項７】
請求項６に記載のデータ処理システムであって、
前記処理サーバは記憶部を備え、前記処理部は、ソートした前記トランザクションを前記記憶部に記憶し、記憶した前記トランザクションを前記受付時刻に基づき順次処理する、
ことを特徴とするデータ処理システム。
【請求項８】
請求項６に記載のデータ処理システムであって、
前記処理サーバの前記処理部は、前記最大遅延時間に、前記処理サーバと前記ルータの最大時計誤差時間を加えた時間を経過した前記トランザクションに対し、付与された前記受付時刻に従って前記ソートを実行する、
ことを特徴とするデータ処理システム。
【請求項９】
請求項６に記載のデータ処理システムであって、
前記処理サーバの前記処理部は、前記最大遅延時間に、前記処理サーバと前記ルータの最大時計誤差時間を加えた時間を経過した、或いは前記処理サーバの前記処理部が確認した最新確認時刻より前記最大遅延時間と最少遅延時間の差以上前の、前記トランザクションに対し付与された前記受付時刻に従って前記ソートを実行する、
ことを特徴とするデータ処理システム。
【請求項１０】
ネットワークから入力されるパケットを受け付ける複数の受付サーバと、複数の前記受付サーバに接続される処理サーバから構成されるデータ処理システムにおけるデータ順序保証方法であって、
入力される前記パケットに対しタイムスタンプを付与し、
前記受付サーバは、同一の識別子を有する複数の前記パケットに分割されて伝送された前記トランザクションに対し、複数の前記パケットに付与した前記タイムスタンプの最も遅い時刻を前記トランザクションの受付時刻として付与し、
前記処理サーバは、複数の前記受付サーバから受信した複数の前記トランザクションのうち、予め設定した前記データ処理システムの最大遅延時間を経過した前記トランザクションに対し付与された前記受付時刻に従ってソートする、
ことを特徴とするデータ順序保証方法。
【請求項１１】
請求項１０に記載のデータ順序保証方法であって、
入力される前記パケットに対し、前記タイムスタンプに加え、タイムスタンプオプションを認識する識別コードを付与する、
ことを特徴とするデータ順序保証方法。
【請求項１２】
請求項１０に記載のデータ順序保証方法であって、
前記パケットの前記識別子に対応して、転送すべき前記受付サーバを決定して、決定された前記受付サーバが当該パケットを受け付ける、
ことを特徴とするデータ順序保証方法。
【請求項１３】
請求項１２に記載のデータ順序保証方法であって、
前記受付サーバは、転送される前記パケットのヘッダ解析を実行し、前記パケット中の前記識別コードを検出して前記タイムスタンプを抽出し、前記パケット中の前記識別子に基づき、トランザクションIDを決定し、前記トランザクションIDを前記タイムスタンプと関連付けて管理する、
ことを特徴とするデータ順序保証方法。
【請求項１４】
請求項１３に記載のデータ順序保証方法であって、
前記受付サーバは、前記トランザクションIDと前記タイムスタンプに基づき、前記トランザクションIDに関連する前記タイムスタンプ群の中で、最も遅い時刻の値を、対応する前記トランザクションの受付時刻とし、前記トランザクションIDと前記トランザクションと前記受付時刻を前記処理サーバに転送する、
ことを特徴とするデータ順序保証方法。
【請求項１５】
請求項１４に記載のデータ順序保証方法であって、
前記処理サーバは、前記最大遅延時間に、前記データ処理システムの最大時計誤差時間を加えた時間を経過した前記トランザクションに対し、付与された前記受付時刻に従って前記ソートを実行する、
ことを特徴とするデータ順序保証方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理システムに係り、特に大規模なデータを取り扱い、データ受付順序と処理順序が一致していることが必須な分野における分散処理技術に関する。
【背景技術】
【０００２】
データセンタ内に到達した大量のデータに対し、その到達順序を考慮しつつ、その大量なデータを処理したいという要求がある。例えば証券取引システムなどがこれに該当し、数ミリ（ｍ)秒単位で受付処理を実行し、高速に取引処理を行う。このような背景に対し、膨大な取引データ（トランザクション）を処理するために受付サーバなどを複数配置し、並列分散処理化する技術がある（特許文献１）。また順序保証に関してはパケット送信パケットにタイムスタンプを付与し、受信側でタイムスタンプ順に並べ替える技術がある（特許文献２）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開2009-9613号公報
【特許文献２】特開平03-255748号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１による並列分散処理は大量のデータを処理するための処理性能を得るには有効な手段であるが、データセンタ内に到達した順序に基づく処理を行う点については課題が残る。特許文献１では複数の受付サーバにてデータのフォーマットチェックなどの処理を行い、後段の取引サーバである処理サーバのキューへ送信する。このキューへの到達順序によって取引要求データ、すなわちトランザクションの優先順序、すなわち受付順序が決定される。この処理フローでは、受付サーバごとに処理性能の違いがある場合はもちろん、同一処理性能であったとしても、キャッシュの状態、ネットワーク上の位置、温度によって処理時間が変化する。したがって、データセンタに到達したトランザクションの順序と、受付順序とでは順序が入れ替わる問題が発生する場合が合ある。
【０００５】
特許文献２による順序保証方式では、受付サーバ側でタイムスタンプを付与する場合においては受付けサーバごとの処理性能差や時計の誤差があるためタイムスタンプ自体に信頼性がない。これに対し、WAN(Wide Area Network)ルータなどデータセンタ内に到達したパケットが必ず通る経路上でタイムスタンプを付与した場合においても、１つのトランザクションが複数のパケットに分割されて転送されている場合には、複数のトランザクションの断片パケットがWANルータを互い違いに通過することがあり、タイムスタンプから単純に処理順序を判定することができない。
【０００６】
本発明の目的は、上記の課題を解決し、到達したトランザクションの順序と受付順序との間に順序入替わりが発生することの無い,データ処理システム、およびデータ順序保証方法を提供することにある。
【課題を解決するための手段】
【０００７】
上記の目的を達成するため、本発明においては、ネットワークに接続されたルータと、ルータに接続される負荷分散サーバと、負荷分散サーバに接続される複数の受付サーバと、複数の受付サーバに接続される処理サーバとから構成され、ルータは、入力されるパケットに対しタイムスタンプを付与するルーティング処理部を有し、受付サーバは、同一識別子を有する複数のパケットに分割されて伝送されたトランザクションに対し、複数のパケットに付与したタイムスタンプの最も遅い時刻を当該トランザクションのタイムスタンプとして付与する処理部を有し、処理サーバは、複数の前記受付サーバから受信した複数のトランザクションのうち、予め設定した最大遅延時間を経過したトランザクションに対して付与されたトランザクションのタイムスタンプに従ってソートする処理部を有するデータ処理システムを提供する。
【０００８】
また、上記の目的を達成するため、本発明においては、複数の受付サーバと、複数の受付サーバに接続される処理サーバとから構成されるデータ処理システムにおけるデータ順序保証方法であって、データ処理システムに入力されるパケットに対しタイムスタンプを付与し、受付サーバは、同一の識別子を有する複数のパケットに分割されて伝送されたトランザクションに対し、複数のパケットに付与したタイムスタンプの最も遅い時刻をトランザクションの受付時刻であるタイムスタンプとして付与し、処理サーバは、複数の受付サーバから受信した複数のトランザクションのうち、予め設定した最大遅延時間を経過したトランザクションに対し付与された受付時刻であるタイムスタンプに従ってソートするデータ順序保証方法を提供する。
【０００９】
すなわち、上記の目的を達成するため、本発明においては、トランザクションが複数の断片パケットに分割して転送され、かつその断片パケットには当該トランザクションに所属していることを識別できるトランザクションIDが付与されている状況において、断片パケットが必ず通る経路においてタイムスタンプを付与し、受付サーバでのトランザクション復元時に最も遅いタイムスタンプを受付時刻とし、さらに処理サーバでは受付時刻からシステムの最大遅延時間Tw経過させてから受付時刻順にトランザクション処理を行う構成とする。
【発明の効果】
【００１０】
受付サーバの処理性能差や設置台数によらず、トランザクションの受付順序通りの順序で処理することが可能となる。
【図面の簡単な説明】
【００１１】
【図１】第１の実施例におけるシステム構成図である。
【図２】第１の実施例におけるWANルータの構成図である。
【図３】第１の実施例におけるWANルータの処理フローを示す図である。
【図４】第１の実施例におけるタイムスタンプを付与したパケットに関する図である。
【図５】第１の実施例における負荷分散サーバの構成図である。
【図６】第１の実施例における負荷分散サーバの処理フローを示す図である。
【図７】第１の実施例における受付サーバの処理フローを示す図である。
【図８】第１の実施例における受付サーバの処理イメージ図である。
【図９】第１の実施例における処理サーバの処理フローを示す図である。
【図１０】第１の実施例における処理サーバの処理イメージ図である。
【図１１Ａ】第１の実施例における処理サーバの処理順序保証原理の説明図である。
【図１１Ｂ】第１の実施例における処理サーバの処理順序保証手段の説明図である。
【図１２】第１の実施例における最大遅延時間Twの構成要素を示す図である。
【図１３】第２の実施例における進んだ時計誤差を含んだ処理サーバにおける処理順序保証方法に関する図である。
【図１４】第２の実施例における処理サーバの処理フローを示す図である。
【図１５】第３の実施例における遅れた時計誤差を含んだ処理サーバにおける処理順序保証方法に関する図である。
【図１６】第３の実施例における処理サーバの処理フローを示す図である。
【発明を実施するための形態】
【００１２】
本発明を実施するための形態を図面に従い説明する。図１〜図１５において、同一の数番は同一物を示している。本明細書において、データ処理システムの各サーバで実行される機能ブロックを、「処理」、「部」、あるいは「手段」等として表現する。例えば、受付時刻付与機能を、「受付時刻付与処理」、「受付時刻付与部」、「受付時刻付与手段」等と称する。また、本明細書のデータ処理システムにおいては、各種のサーバが用いられるが、このサーバは、ネットワークに接続可能な通常のコンピュータである。
【実施例１】
【００１３】
以下、第１の実施例に係るデータ処理システムを図１〜図１２に従い説明する。
＜全体システム構成＞
図１に第１の実施例に係る分散処理システム100の全体システム構成を示す。分散処理システム100はWANルータ110、負荷分散サーバ115、ネットワークスイッチ160、受付サーバ120、ネットワークスイッチ170、処理サーバ150から構成される。
【００１４】
分散処理システム100は、例えばデータセンタなどを指すが、本質は上位ネットワークと単一のネットワーク経路で接続されているシステム環境を指すものであり、データセンタに限定するものではない。ここでは金融や証券などの取引システムを例に分散処理システム100を説明する。
【００１５】
WANルータ110は、公衆ネットワークと分散処理システム100の内部ネットワークとをつなぐルータであり、プロトコル変換などを行う。負荷分散サーバ115は特定の受付サーバ120の処理負荷が著しく増大することのないように処理を割り振るサーバであり、受付サーバ120の処理状況管理やパケットのIP(Internet Protocol)アドレスの付け替えなどを行う。ネットワークスイッチ160はWANルータ110と受付サーバ120を繋ぐスイッチであり、パケットのフォワーディング処理などルータと同じ働きをする。これはL3スイッチと呼ばれる既存の技術となんら変わりはない。
【００１６】
受付サーバ120は、取引注文に関する取引データ（以下、トランザクション）を受け付けるサーバであり、大量のトランザクションを処理可能とするために、複数台（N台）を並列に配置している。ネットワークスイッチ170はネットワークスイッチ160と同様のスイッチであり、受付サーバと処理サーバを繋ぐネットワーク経路である。処理サーバ150は受付サーバ120群で受け付けられたトランザクション群を受付順序通りに処理するシステムである。
【００１７】
以下、WANルータ110、負荷分散サーバ115、受付サーバ120、処理サーバ150について詳細な構成と処理内容を示し、本発明にかかる分散処理システム100が到達したトランザクションの順序通りに処理を実行できることを示す。
＜ルータ＞
図２、図３、図４を用いて、実施例１におけるWANルータ110の構成とその処理内容を示す。図２に示すように、WANルータ110はEtherPhyLSI210、ルーティングエンジンLSI220、入力ポート選択部222、ヘッダ解析処理部224、タイムスタンプ付与処理部225、フォワーディング処理部226、出力ポート選択部228、アドレス用メモリ230、パケット用メモリ240、CPU250、時計ユニット260から構成される。なお、EtherPhyLSI210は、通常のイーサネット（登録商標）の物理層用集積回路（IC）チップで構成される。図３の処理フローに示すように、伝送データであるフレーム（フレームとはパケットにフレームヘッダを付加したデータの呼び名）はEtherPhyLSI210によって受信され、ルーティングエンジンLSI220へ送られる（ステップ310）。
【００１８】
ルーティングエンジンLSI220では、入力ポート選択部222から出力されるフレームのフレームヘッダ情報を解析し、ＭＡＣアドレスなどを確認して転送先に関する情報を生成するとともにIPパケット部を抽出する。転送先に関する情報はフォワーディング処理部226へ出力し、抽出したパケットはタイムスタンプ付与処理部225へ出力する（ステップ311）。
【００１９】
図４に示すパケットフォーマットの一例のように、タイムスタンプ付与処理部225では、元パケット410のヘッダに対し、タイムスタンプオプションを認識する識別コードとタイムスタンプを付与して、タイムスタンプ付与パケット420を作成し（ステップ312）、パケット用メモリ240へIPパケットを格納する（ステップ314）。識別コードとタイムスタンプはIPパケットのオプション領域に付与すればよい。オプション領域とは例えばインターネットプロトコルであるIPv4(Version 4)では拡張情報部、IPv6(Version 6)では拡張ヘッダ部に該当するタイムスタンプの時刻情報は時計ユニット260から取得する。
【００２０】
フォワーディング処理部226は、次のパケットを転送先決定処理が可能な状態になるとパケット用メモリ240から次のパケットを読み出し（ステップ316）、ヘッダ解析処理部224から入力された転送先に関する情報と、アドレス用メモリ230上の情報を元に、次に転送するべきアドレスを決定する（ステップ318）。転送先アドレスを決定すると、IPパケットに転送先アドレスを示すフレームヘッダを付与してフレーム化し、出力ポート選択部228を介してEtherPhyLSI210に当該フレームを送り、次の装置へと送信する（ステップ320）。なお、CPU250はルーティングエンジンLSI220の設定変更や補助的な処理などを行うために設置されている。なお、このルーティングエンジンLSI220とCPU250とで実現されるルーティング機能を纏めてルーティング処理部と呼ぶ場合がある。
【００２１】
ここで、ルーティングエンジンLSI220の入力ポートの信号線221は1本（シリアル転送）であるのに対し、ルーティングエンジンLSI220の内部の信号線223は例えば64本（64bitパラレル転送）の束線である。そのため、例えばルーティングエンジンLSI220の入力ポート数が4ポートであり、信号線221が8Gbpsである場合、信号線223は最大32Gbpsの帯域が必要となるが、信号線223が64bit幅であれば500MHzの周波数で動作させることで破綻させることなく処理可能である。
＜負荷分散サーバ＞
次に図５を用いて本実施例における負荷分散サーバ115の構成の一例を示す。なお、図１の他のサーバである受付サーバ120や処理サーバ150も、図５に示すサーバのハードウェア構成を有している。上述の通り、サーバ115の構成自体は、一般のサーバシステム、IPネットワークに接続可能なコンピュータ構成となんら変わりない。
【００２２】
負荷分散サーバ115は、ネットワークインタフェース部を構成するEtherPhyLSI510、処理部であるCPU(Central Processing Unit)520、記憶部であるRAM(Random Access Memory)530やROM(Read Only Memory)540と、これらを繋ぐバス550から構成される。EtherPhyLSI510は、例えば上述のように、パケットの送受信を行うICチップとして構成される。RAM530はCPU520の主記憶装置として使用されるメモリチップである。ROM540はCPU520のブートアップ時などに使用されるプログラム等が記憶されるメモリチップである。処理部であるCPU520は、バス550を介したEtherPhyLSI510、RAM530、ROM540のデバイス制御や、種々の演算処理を実行するチップである。
【００２３】
図６を用いて、本実施例の負荷分散サーバ115の処理内容を示す。以下、フレームとパケットの区別は必要ないため、フレームも単にパケットと呼ぶ。負荷分散サーバ115は伝送データであるパケットをEtherPhyLSI510によって受信し、これをCPU520へと転送し、IPパケットの受信処理を行う（ステップ610）。CPU520ではパケットのヘッダ解析行い（ステップ612）、分割されたパケットの断片パケットであるかを判定する（ステップ614）。分割されたパケットの断片パケットであるとは、一つのデータを通信する際の途中経路の最大伝送単位（MTU：Maximum Transmission Unit）より、通信したいデータ量が大きいときにはデータを複数のパケットに分割して送信するが、この分割して送信される複数パケットの内の一部のパケットであることを指す。例えばインターネットプロトコルであるIPv4では、フラグメント・フラグとフラグメント・オフセットの情報から断片パケットであるか否かを判定できる。断片パケットである場合には、パケットのデータ識別子（パケットID）を検出する（ステップ620）。IPv4ではパケットヘッダの識別子（またはIDフィールドと呼ばれる）がこれに該当し、IPv6では拡張ヘッダにあるフラグメントに関する情報のIDが該当する。
【００２４】
検出したパケットIDと負荷分散サーバ115が有している、図示を省略したパケットIDと転送先受付サーバ120のアドレスに関するデータベース（DB）の情報を比較し（ステップ622）、既にDB内に検出したパケットIDがある場合は既知のパケットIDを有しているとして、DBに登録されている同一のパケットIDを転送済みの受付サーバ120へ転送する（ステップ624）。一方、DB内に当該パケットIDが無かった場合は、パケットIDと転送先受付サーバ120のアドレス情報をDBに格納し（ステップ630）、受付可能な受付サーバ120へ当該パケットを転送する（ステップ632）。
【００２５】
受付サーバ120が受付可能か否かは、定期的、あるいは何らかのイベントをトリガにして受付サーバ120から処理状態に関する情報を取得し、管理することで把握できる。ステップ614において当該パケットが断片パケットでなかった場合には、受付可能な受付サーバ120へパケットを転送する（ステップ640）。
【００２６】
なお、DB上のパケットIDと転送先受付サーバ120のアドレス情報は、受付サーバ側で、当該パケットIDへの処理に対するイベントを受け取り、消去または無効化するなどの管理を行う。
＜受付サーバ＞
受付サーバ120の構成自身は、上述した通り、図５の負荷分散サーバ115と同様であるため、構成に関する説明は省略する。図７、図８を用いて本実施例の受付サーバ120の処理内容を示す。
【００２７】
図７は受付サーバ120の処理フロー図である。受付サーバ120は伝送データであるパケットをEtherPhyLSIによって受信し、パケットを処理部であるCPUへと転送し、IPパケットの受付処理を行う（ステップ710）。CPUは、パケットのヘッダ解析により、タイムスタンプオプション用の識別コードを検出し、後ろに続けて挿入されているタイムスタンプ情報を抽出する（ステップ712）。同時にヘッダ解析では当該パケットが断片パケットであるかを判定し（ステップ714）、断片パケットである場合には、パケットのデータ識別ID（負荷分散サーバ115の説明でパケットIDとして表現した識別子に該当する。）を抽出し、このデータ識別IDがDBに存在しない時、当該受付サーバ120固有の値を付与するなどしてトランザクションIDを作成する（ステップ716）。タイムスタンプとトランザクションIDを関連付けて、図８に図示したデータベース（DB）に格納し、テーブルを作成する（ステップ718）。その後、断片パケット群を統合して、パケットを再構成する（ステップ720）。
【００２８】
断片パケットではない場合、トランザクションIDを生成し（ステップ722）、タイムスタンプとトランザクションIDを関連付けてDBへ格納する（ステップ724）。ここで、トランザクションIDはDB中でユニークな値を設定する必要がある。次にパケットからデータ（またはトランザクションと表現できる）を抽出し、ステップ716で抽出した、またはステップ722で作成したトランザクションID情報と関連付けて管理する（ステップ726）。なお、本実施例においては、単一のパケットまたは複数の断片パケットによってトランザクションが伝送されていることを前提としている。
【００２９】
CPUは次にトランザクションの受付処理を行う（ステップ728）。證券取引システムなどでは、指定された銘柄が存在するか、データに不備がないかなどのトランザクションのフォーマットチェックが受付処理に該当する。
【００３０】
次に、当該データのトランザクションIDに関連するすべてのタイムスタンプ情報をDBから取得して、これらを用いて適切な受付時刻を決定する。本実施例における最も好適な受付時刻決定手段は、当該IDに関連するタイムスタンプ群の中で最も遅い時刻のタイムスタンプの値を受付時刻として採用することであり、その根拠については後述の順序保証の原理説明で述べることとする。決定した受付時刻をトランザクションのデータへ追加する（ステップ730）。トランザクションと受付時刻とトランザクションIDを処理サーバ150に転送するための送信処理を実施する（ステップ732）ことにより、受付サーバの処理フローが完了する。
【００３１】
図８は本実施例の受付サーバ120の処理イメージを示す機能ブロック図である。受信処理810ではステップ710を実施する。ヘッダ解析処理820ではステップ712、ステップ714、ステップ716、ステップ718、ステップ722、ステップ724を実施し、DB870へトランザクションIDとタイムスタンプ情報821を出力し、テーブル875を作成する。パケット復元処理825ではステップ720を実施する。データ抽出処理830ではステップ726を実施し、受付処理840ではステップ728を実施する。このときトランザクションとトランザクションIDはセットで管理する。受付時刻付与処理850はステップ730を実施する処理であり、受付時刻決定処理860へトランザクションID851を送り、受付時刻決定処理860は受けとったIDに関するタイムスタンプ群871から最も遅いタイムスタンプの時刻を受付時刻862としてトランザクションに付与する。送信処理880はステップ732を実施する。
【００３２】
上述した一連の処理において、ソフトウェアで処理する場合にはDB870を除く機能ブロック810〜880はRAM上の領域で実現され、それ以外はすべてCPU上で処理される。また、高速化のためこれらを専用ハードウェアで実現することも可能である。
＜処理サーバ＞
処理サーバ150の構成も、負荷分散サーバ115と同様であるため、構成に関する説明は省略する。図９、図１０を用いて処理サーバ150の処理内容を示す。
【００３３】
図９は処理サーバ150の処理フローである。まず、伝送データであるIPパケットがEtherPhyLSIによって受信され、CPUへと転送され受信処理が行われる（ステップ910）。次にデータ抽出処理1020においてパケットからデータ部分の抽出処理が行われる。ここで、パケットが部分パケットである場合には、パケットが復元され、データ部分が抽出される（ステップ912）。データ部分にあるトランザクションとトランザクションIDと受付時刻情報を関連付けてDB1070に格納する。データ部にトランザクションID情報が無い場合はDB1070上でユニークな値を作成し、設定する（ステップ914）。未処理であり、かつ現在時刻よりシステムの最大遅延時間Tw以上前の受付時刻を持つトランザクションのトランザクションIDと受付時刻情報を、ソート処理間隔ΔTごとにDB1070から読み出し、受付時刻が早い順にトランザクションIDをソートする（ステップ916）。ステップ916で決定されたトランザクションIDのソート順に、DBからトランザクションを読み出し、処理キューに格納する（ステップ918）。最後に、処理キューからトランザクションを取り出して、当該データに対し取引処理を実行する（ステップ920）。
【００３４】
図１０は処理サーバ150の処理イメージを示す機能ブロック図である。受信処理1010ではステップ910を実施する。データ抽出処理1020ではステップ912とステップ914を実施し、DB1070にテーブル1075を作成する。DB1070上のテーブル1075は、上述の通り、トランザクションIDと受付時刻情報とトランザクションとを有する。ソート処理1030はステップ916を実施する。データ読出し処理1040ではステップ918を実施する。処理キュー1050は順序づけられたデータを蓄えるバッファであり、優先順序が関連付けられたテーブルで構成されていてもよい。取引処理1060はステップ920を実施する。
【００３５】
図１０において、DB1070と処理キュー1050はRAM上の領域で実現され、処理ブロックはCPUによって実行される。また、処理サーバの処理系である受信処理1010、データ抽出処理1020、ソート処理1030、データ読出し処理1040、取引処理1060を専用ハードウェアで実現することで、処理速度をより高速化することができる。
【００３６】
以上が、本実施例に係る分散処理システム100の構成と処理内容である。
＜順序保証の原理説明＞
以下、図１１Ａを用いて本実施例のシステム構成によって処理順序を保証した処理が可能となる原理を説明する。
【００３７】
図１１Ａは2台の受付サーバによる構成において断片パケットによって伝送された5つのトランザクションを受け付けた例のタイムチャートを模式的に示している。テーブル1110は受付サーバ１で受信したパケットから作成されたトランザクションID（以下、単にID）とタイムスタンプのテーブルであり、図８のDB870上のテーブルに該当する。同様に、テーブル1120は受付サーバ2で受信したパケットから作成されたIDとタイムスタンプのテーブルである。ここで、表記を簡単にするため、タイムスタンプの時刻情報は秒以上、μ秒以下の精度を省略して記述している。
【００３８】
図１１Ａにおいて、例えばID1174のトランザクションは4つのパケットに分割されて送られており、最初の断片パケットが2msの時刻でWANルータ110を通過し、最後の断片パケットが25msの時刻でWANルータ110を通過していることを示している。このときID1174は全ての断片パケットがシステムに到達した時刻、すなわちWANルータを通過した時刻を基準とした受付順序としては５番目である。しかし、負荷分散サーバ115の処理時間の差、ネットワークスイッチ160の遅延や受付サーバ120の性能差に伴う処理時間の差によって処理サーバ150へは1番早くに到着してしまっている。このとき、従来技術によるシステムでは処理サーバ150への到達時刻時点、または受付サーバ120での受付処理時にタイムスタンプを付与した時刻時点の順序では、処理時間のバラつきのために順序が入れ替わる可能性がある。これはシステム全体の性能が向上し、全体の平均処理時間が小さくなればなるほど、顕著に表れる。
【００３９】
そのため、本実施例では、その処理時間のバラつきを考慮して、最後の断片パケットがWANルータ110を通過した時刻より、システム全体の最大遅延時間Tw経過したトランザクションに対して、これより後により若い受付時刻を持ったトランザクションが現れない（すなわち順序を決定可能である）と判断し、処理を行うことを特徴とする。これにより、本実施例の処理システムでは、受付順序に対する処理順序を保証することができる。
【００４０】
ここで、トランザクション受付時刻を最後の断片パケットを基準とすることについては、公衆ネットワークは非常に遅延が大きいため、その他の断片パケットを基準にした場合に最大遅延時間Twを設計値として制御できないことがその理由である。例えば、最初の断片パケットのWANルータ通過時刻を基準とした場合、どれだけ待てば順序が確定するのかが判断できない。
＜順序決定処理方法＞
図１１Ｂに、本実施例の処理サーバ150におけるトランザクションの順序決定のための手段を示す。処理サーバ150はソート処理間隔ΔTごとに未処理の順序決定可能なトランザクションについてソート処理を行う。図１１ＢのTime slot０、Time slot１、Time slot２はソート処理間隔ΔTごとに区切られたタイムスロットである。処理サーバ150は、例えば、Time slot１ではその前タイムスロットであるTime slot０の期間に順序決定可能となったID1160とID1133のトランザクションについてソート処理を行い、次のタイムスロットであるTime slot２の時刻になるまでには順序を確定させる。同様にTime slot１の期間に順序決定可能となったID1174とID1189はTime slot２の期間にソート処理され、次のタイムスロットまでに順序が確定する。以上が、処理サーバ150における順序確定手段である。
【００４１】
なお、ソート処理間隔ΔTは任意の設計パラメータであり、システムにおいてソート処理間隔ΔT内に最大いくつのトランザクションがソート対象となる可能性があり、ソート処理間隔ΔT内にソート可能かを考慮して決定すればよい。
＜処理時間見積もり＞
図１２は、本実施例における、データ処理システムを構成する分散処理システム100の最大遅延時間Twの遅延要素を示す図であり、これを用いて処理時間見積もりによる、最大遅延時間Twの算出例を示す。同図に示すように、分散処理システムの最大遅延時間Twは、WANルータ110のタイムスタンプ付与処理（ステップ312）からパケット送信処理(ステップ320)までの最大遅延時間Twrと、負荷分散サーバ115の最大遅延時間Tlbと、ネットワークスイッチ160の最大遅延時間Tns1と、受付サーバ120の最大遅延時間Trsとネットワークスイッチ170の最大遅延時間Tns2と、処理サーバ150でのID、データ、受付時刻を関連付けてDBへ格納する処理（ステップ914）完了までの最大遅延時間Tesの総和である。
【００４２】
各コンポーネントの処理時間は処理対象データによってばらつくが、基本的には分岐処理の最悪ケースの処理時間計算することで最大遅延時間を算出できる。例えば、CPU処理ではキャッシュに対するアクセスは常にキャッシュミスが起きる場合での処理時間を計上すればよい。また、大きくばらつく原因となる要因に対しては、システムに制約をあたえることでその最大遅延時間を制御できる。例えば、ルータやネットワークスイッチにおいてはパケットの転送先決定処理で全ての処理がキャッシュミスしたときの１つあたりのパケット処理時間とパケット用メモリ240への最大格納パケット数を規定し、その積をとることで最大遅延時間を計算できる。
【００４３】
負荷分散サーバ115、受付サーバ120、処理サーバ150においても同様に、トランザクションのフォーマットを規定し、さらにパケットの最大分割数など、パケットにおけるオプションに制限を設けることで1つのパケットまたはトランザクションあたりの最大処理時間を算出可能であり、１つのサーバあたりに滞留可能（蓄積可能）なパケットまたはトランザクションの数に制限を設けることで各コンポーネントの最大遅延時間を計算できる。なお、受付サーバ120の最大遅延時間Trsは最も処理性能が低い受付サーバ120の最大処理時間を採用する。なお、ストリーム処理のようなリアルタイム性を保証するシステムにおいて、最大遅延時間を計算することは一般的であり、計算方法も知られている。
【００４４】
以上に示したように、本実施例により、トランザクションが複数の断片パケットに分割して転送され、かつその断片パケットには当該トランザクションに所属していることを識別できる情報（トランザクションID）が付与されている状況において、データセンタ内に到達したトランザクション順に処理することを保証した大規模データ処理が実現可能となる。
【００４５】
以上で説明した第１の実施例では、処理サーバ150の時計を元に最大遅延時間Tw経過したことを判定した。しかし、WANルータ110の時計と処理サーバ150の時計との間に誤差がある場合には、WANルータでのタイムスタンプ付与時間より最大遅延時間Tw経過していないにも関わらず、ソート処理1030を実行してしまう恐れがある。
【実施例２】
【００４６】
図１３に第２の実施例として、進んだ時計誤差を含んだ処理サーバ150における順序保証方法を示す。図１３の例では処理サーバ150の時計がWANルータ110の時計よりも進んでいる。そのため、処理サーバ150の時計による処理順序決定可能時刻はWANルータ110の時計を基準とした正しいトランザクションの処理サーバ最悪到着時刻よりも時計誤差時間分だけ早い時刻となる。このとき、図１３のように処理サーバの時計による処理順序決定可能時刻より後に到達したトランザクション（ID1360）と処理サーバの時計による処理順序決定可能時刻より前に到達したトランザクション（ID1389）がある場合、ID1389のトランザクションはTime slot０でソート処理され、ID1360のトランザクションはTime slot１でソート処理されることがあり、WANルータを通過した順序に基づく処理順序を保証できない場合がある。すなわち、ID1389のトランザクションはID1360のトランザクションより受付時刻が遅いにも関わらず、先に取引処理が実行されてしまう可能性がある。
【００４７】
これを防ぐために、分散処理システム100におけるWANルータ110と処理サーバ150の時計誤差の最大値、すなわち最大時計誤差時間ΔTwresを考慮し、処理サーバ150での処理順序決定可能条件を受付時刻から（Tw＋ΔTwres）経過していることとする。これにより、時計誤差がある場合においても必ず本来の処理順序決定可能時刻以降にソート処理が行われることになるため、処理順序を保証することができる。なお、データ処理システムを構成する分散処理システム100の最大時計誤差時間ΔTwresはシステム設計値として算出可能である。
【００４８】
図１４に第２の実施例における処理サーバの処理フローを示す。第１の実施例の図９に示す処理フローとの違いは処理順序決定可能条件のみである。まず、伝送データであるパケットがEtherPhyLSIによって受信され、CPUへと転送され受信処理が行われる（ステップ1410）。次にデータ抽出処理1020においてパケットからデータ部分の抽出処理が行われる。ここで、パケットが部分パケットである場合にはパケットが復元され、データ部分が抽出される（ステップ1412）。データ部分にあるデータ（トランザクション）と受付時刻とトランザクションIDを関連付けてDB1070に格納する。データ部にトランザクションID情報が無い場合はDB1070上でユニークな値を作成し、設定する（ステップ1414）。処理サーバ150の現在時刻より（最大遅延時間Tw＋最大時計誤差時間ΔTwres）以上前の受付時刻を持つ未処理のトランザクションにおけるトランザクションIDと受付時刻をソート処理間隔ΔTごとにDB1070から読み出し、受付時刻が早い順にトランザクションIDをソートする（ステップ1416）。トランザクションIDのソート順にDB1070からトランザクションを読み出し、処理キューに格納する（ステップ1418）。最後に、処理キューからトランザクションを取り出して取引処理を実行する（ステップ1420）。
【００４９】
以上説明した第２の実施例によれば、処理サーバの時計がWANルータの時計よりも進んでいた場合に対応可能な順序保証方法を提供することができる。しかし、第２の実施例による解決手段では処理サーバ150の時計がWANルータ110よりも遅れていた場合に、トランザクションの処理順序確定までに要する遅延時間が増大する問題がある。
【実施例３】
【００５０】
図１５に、第３の実施例として、遅れた時計誤差を含んだ処理サーバ150において上記処理遅延時間増大の問題を緩和する方法を示す。図１５の例では処理サーバ150の時計がWANルータ110の時計よりも遅れているために、トランザクションの処理サーバ最悪到着時刻よりも時計誤差と最大時計誤差時間ΔTwresの和だけ遅くに処理順序が決定される。すなわち、取引処理までの遅延時間が増大する。そこで、本実施例においては、処理サーバの時計に頼らず、トランザクションの処理サーバ最悪到着時刻（言い換えれば処理順序を決定可能な時刻）を経過したことを認識する手段を導入する。具体的には第２の実施例におけるトランザクションの処理順序決定可能条件に「当該トランザクションの受付時刻に対し、（最大遅延時間Tw−最小遅延時間Tb）経過した受付時刻を持つトランザクションを確認できたこと」を追加する。なお、最小遅延時間とは分散処理システム100のWANルータ110通過時から処理サーバ150到達時までの最小時間であり、この最少時間をデータ処理システムの最小遅延時間と呼ぶ。
【００５１】
今、システムの最大遅延時間Twを50m秒、システムの最小遅延時間Tbを2m秒、時計誤差を8m秒、最大時計誤差を10m秒とし、ID1560のトランザクション受付時刻が21m秒であったとする。このとき実施例２の形態ではID1560の処理順序決定可能時刻1510は89m秒（＝21m秒＋50m秒＋8m秒＋10m秒）となるが、ID1589のように69m秒以上の受付時刻を有するトランザクションが処理サーバ150に到着したならば、ID1560の処理順序を決定できる。なぜなら、処理サーバ150にWANルータ110を70m秒で通過したトランザクションが到達したならば、現在のWANルータ110の時計時刻は少なくとも最小遅延時間Tbを加えた72m秒以上であることが分かり、ID1560のトランザクションが受付時刻21m秒から最大遅延時間50m秒以上経過しており処理順序決定可能条件を満たしていることが分かるためである。このように、第３の実施例では、第２の実施例による処理順序決定可能時刻1510を後続トランザクションの受付時刻を利用した処理順序決定可能時刻1520まで前倒しが可能であり、取引処理実行までの平均遅延時間を小さくすることができる。
【００５２】
すなわち、第３の実施例ではWANルータ110と処理サーバ150の時刻補正方法から想定される最大時計誤差時間ΔTwresおよびシステムの最小遅延時間Tbを算出し、現在時刻より（Tw＋ΔTwres）以上前の受付時刻を有しかつ未処理であるトランザクション、または処理サーバ150が確認した最新の受付時刻より（Tw−Tb）以上前の受付時刻を有しかつ未処理であるトランザクションを処理順序決定可能とすることで時計誤差を含むシステムに対しても処理順序を保証し、第２の実施例より小さな遅延時間での取引処理実行を可能とする。なお、最小遅延時間Tbは、システムにおけるベストケースの処理時間を計算することで算出可能である。ベストケースとは最も処理時間の小さい分岐を選択した場合の処理を指す。
【００５３】
図１６は第３の実施例における処理サーバ150の処理フローである。まず、伝送データであるIPパケットがEtherPhyLSIによって受信され、CPUへと転送され受信処理が行われる（ステップ1610）。次にデータ抽出処理1020においてパケットからトランザクション部分の抽出処理が行われる。ここで、パケットが部分パケットである場合にはパケットが復元され、データ部分が抽出される（ステップ1612）。そして、本実施例においては、データ部分にある受付時刻を確認し、最も遅い時刻であれば最新確認時刻としてメモリに格納し、値を更新する（ステップ1613）。データ部分にあるトランザクションとトランザクションIDと受付時刻情報とを関連付けてDBに格納する。データ部にトランザクションID情報が無い場合はDB上でユニークな値を作成し、設定する（ステップ1614）。処理サーバ150の現在時刻より（最大遅延時間Tw＋最大時計誤差時間ΔTwres）以上前の受付時刻を持つ未処理のトランザクション、あるいは最新確認時刻より（最大遅延時間Tw−最小遅延時間Tb）以上前の受付時刻を持つ未処理のトランザクション、に対するトランザクションIDと受付時刻情報をDBから読み出し、受付時刻が早い順にトランザクションIDをソートする（ステップ1616）。トランザクションIDのソート順にDBからトランザクションを読み出し、処理キューに格納する（ステップ1618）。最後に、処理キューからトランザクションを取り出して取引処理を実行する（ステップ1620）。
【００５４】
以上説明した実施例３のデータ処理システムによれば、処理順序決定可能時刻を後続トランザクションの受付時刻を利用した処理順序決定可能時刻まで前倒しが可能であり、取引処理実行までの平均遅延時間を小さくすることができる。
【００５５】
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明のより良い理解のために詳細に説明したのであり、必ずしも説明の全ての構成を備えるものに限定されものではない。
【００５６】
また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることが可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
【００５７】
更に、上述した各構成、機能、処理部等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現しても良いし、それらの一部又は全部を実現するプログラムを作成することによりソフトウェアで実現しても良いことは言うまでもない。
【符号の説明】
【００５８】
100  分散処理システム
110  WANルータ
115  負荷分散サーバ
120  受付サーバ
150  処理サーバ
160、170  ネットワークスイッチ
210  EtherPhy LSI
220  ルーティングエンジンLSI
221,223,227  信号線
222  入力ポート選択部
224  ヘッド解析処理部
225  タイムスタンプ付与処理部
226  フォワーディング処理部
228  出力ポート選択部
230  アドレス用メモリ
240  パケット用メモリ
250  CPU
260  時計。
【図１】
2012129857.tif 000003
【図２】
2012129857.tif 000004
【図３】
2012129857.tif 000005
【図４】
2012129857.tif 000006
【図５】
2012129857.tif 000007
【図６】
2012129857.tif 000008
【図７】
2012129857.tif 000009
【図８】
2012129857.tif 000010
【図９】
2012129857.tif 000011
【図１０】
2012129857.tif 000012
【図１１Ａ】
2012129857.tif 000013
【図１１Ｂ】
2012129857.tif 000014
【図１２】
2012129857.tif 000015
【図１３】
2012129857.tif 000016
【図１４】
2012129857.tif 000017
【図１５】
2012129857.tif 000018
【図１６】
2012129857.tif 000019