JP2012129857A - データ処理システム、およびデータ順序保証方法 - Google Patents

データ処理システム、およびデータ順序保証方法 Download PDF

Info

Publication number
JP2012129857A
JP2012129857A JP2010280521A JP2010280521A JP2012129857A JP 2012129857 A JP2012129857 A JP 2012129857A JP 2010280521 A JP2010280521 A JP 2010280521A JP 2010280521 A JP2010280521 A JP 2010280521A JP 2012129857 A JP2012129857 A JP 2012129857A
Authority
JP
Japan
Prior art keywords
time
transaction
server
reception
processing
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.)
Pending
Application number
JP2010280521A
Other languages
English (en)
Inventor
Masanari Hamamoto
真生 濱本
Atsushi Tomoda
敦 友田
Atsushi Miyamoto
篤志 宮本
Tetsuya Yamada
哲也 山田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2010280521A priority Critical patent/JP2012129857A/ja
Publication of JP2012129857A publication Critical patent/JP2012129857A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

【課題】分散処理システムにおいてデータセンタに到達したトランザクションの順序と受付順序との間に順序入替わりが発生する。
【解決手段】トランザクションが複数の断片パケットに分割して転送され、かつその断片パケットには当該トランザクションに所属していることを識別できる情報(トランザクションID)が付与されている状況において、WANルータ110は、断片パケットが必ず通る経路においてタイムスタンプを付与し、受付サーバ120でのトランザクション復元時に最も遅いタイムスタンプをトランザクションの受付時刻とし、さらに処理サーバ150では、受付時刻からシステムの最大遅延時間Tw経過させてから受付時刻順にトランザクション処理を行う。
【選択図】図1

Description

本発明は、データ処理システムに係り、特に大規模なデータを取り扱い、データ受付順序と処理順序が一致していることが必須な分野における分散処理技術に関する。
データセンタ内に到達した大量のデータに対し、その到達順序を考慮しつつ、その大量なデータを処理したいという要求がある。例えば証券取引システムなどがこれに該当し、数ミリ(m)秒単位で受付処理を実行し、高速に取引処理を行う。このような背景に対し、膨大な取引データ(トランザクション)を処理するために受付サーバなどを複数配置し、並列分散処理化する技術がある(特許文献1)。また順序保証に関してはパケット送信パケットにタイムスタンプを付与し、受信側でタイムスタンプ順に並べ替える技術がある(特許文献2)。
特開2009-9613号公報 特開平03-255748号公報
特許文献1による並列分散処理は大量のデータを処理するための処理性能を得るには有効な手段であるが、データセンタ内に到達した順序に基づく処理を行う点については課題が残る。特許文献1では複数の受付サーバにてデータのフォーマットチェックなどの処理を行い、後段の取引サーバである処理サーバのキューへ送信する。このキューへの到達順序によって取引要求データ、すなわちトランザクションの優先順序、すなわち受付順序が決定される。この処理フローでは、受付サーバごとに処理性能の違いがある場合はもちろん、同一処理性能であったとしても、キャッシュの状態、ネットワーク上の位置、温度によって処理時間が変化する。したがって、データセンタに到達したトランザクションの順序と、受付順序とでは順序が入れ替わる問題が発生する場合が合ある。
特許文献2による順序保証方式では、受付サーバ側でタイムスタンプを付与する場合においては受付けサーバごとの処理性能差や時計の誤差があるためタイムスタンプ自体に信頼性がない。これに対し、WAN(Wide Area Network)ルータなどデータセンタ内に到達したパケットが必ず通る経路上でタイムスタンプを付与した場合においても、1つのトランザクションが複数のパケットに分割されて転送されている場合には、複数のトランザクションの断片パケットがWANルータを互い違いに通過することがあり、タイムスタンプから単純に処理順序を判定することができない。
本発明の目的は、上記の課題を解決し、到達したトランザクションの順序と受付順序との間に順序入替わりが発生することの無い,データ処理システム、およびデータ順序保証方法を提供することにある。
上記の目的を達成するため、本発明においては、ネットワークに接続されたルータと、ルータに接続される負荷分散サーバと、負荷分散サーバに接続される複数の受付サーバと、複数の受付サーバに接続される処理サーバとから構成され、ルータは、入力されるパケットに対しタイムスタンプを付与するルーティング処理部を有し、受付サーバは、同一識別子を有する複数のパケットに分割されて伝送されたトランザクションに対し、複数のパケットに付与したタイムスタンプの最も遅い時刻を当該トランザクションのタイムスタンプとして付与する処理部を有し、処理サーバは、複数の前記受付サーバから受信した複数のトランザクションのうち、予め設定した最大遅延時間を経過したトランザクションに対して付与されたトランザクションのタイムスタンプに従ってソートする処理部を有するデータ処理システムを提供する。
また、上記の目的を達成するため、本発明においては、複数の受付サーバと、複数の受付サーバに接続される処理サーバとから構成されるデータ処理システムにおけるデータ順序保証方法であって、データ処理システムに入力されるパケットに対しタイムスタンプを付与し、受付サーバは、同一の識別子を有する複数のパケットに分割されて伝送されたトランザクションに対し、複数のパケットに付与したタイムスタンプの最も遅い時刻をトランザクションの受付時刻であるタイムスタンプとして付与し、処理サーバは、複数の受付サーバから受信した複数のトランザクションのうち、予め設定した最大遅延時間を経過したトランザクションに対し付与された受付時刻であるタイムスタンプに従ってソートするデータ順序保証方法を提供する。
すなわち、上記の目的を達成するため、本発明においては、トランザクションが複数の断片パケットに分割して転送され、かつその断片パケットには当該トランザクションに所属していることを識別できるトランザクションIDが付与されている状況において、断片パケットが必ず通る経路においてタイムスタンプを付与し、受付サーバでのトランザクション復元時に最も遅いタイムスタンプを受付時刻とし、さらに処理サーバでは受付時刻からシステムの最大遅延時間Tw経過させてから受付時刻順にトランザクション処理を行う構成とする。
受付サーバの処理性能差や設置台数によらず、トランザクションの受付順序通りの順序で処理することが可能となる。
第1の実施例におけるシステム構成図である。 第1の実施例におけるWANルータの構成図である。 第1の実施例におけるWANルータの処理フローを示す図である。 第1の実施例におけるタイムスタンプを付与したパケットに関する図である。 第1の実施例における負荷分散サーバの構成図である。 第1の実施例における負荷分散サーバの処理フローを示す図である。 第1の実施例における受付サーバの処理フローを示す図である。 第1の実施例における受付サーバの処理イメージ図である。 第1の実施例における処理サーバの処理フローを示す図である。 第1の実施例における処理サーバの処理イメージ図である。 第1の実施例における処理サーバの処理順序保証原理の説明図である。 第1の実施例における処理サーバの処理順序保証手段の説明図である。 第1の実施例における最大遅延時間Twの構成要素を示す図である。 第2の実施例における進んだ時計誤差を含んだ処理サーバにおける処理順序保証方法に関する図である。 第2の実施例における処理サーバの処理フローを示す図である。 第3の実施例における遅れた時計誤差を含んだ処理サーバにおける処理順序保証方法に関する図である。 第3の実施例における処理サーバの処理フローを示す図である。
本発明を実施するための形態を図面に従い説明する。図1〜図15において、同一の数番は同一物を示している。本明細書において、データ処理システムの各サーバで実行される機能ブロックを、「処理」、「部」、あるいは「手段」等として表現する。例えば、受付時刻付与機能を、「受付時刻付与処理」、「受付時刻付与部」、「受付時刻付与手段」等と称する。また、本明細書のデータ処理システムにおいては、各種のサーバが用いられるが、このサーバは、ネットワークに接続可能な通常のコンピュータである。
以下、第1の実施例に係るデータ処理システムを図1〜図12に従い説明する。
<全体システム構成>
図1に第1の実施例に係る分散処理システム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が到達したトランザクションの順序通りに処理を実行できることを示す。
<ルータ>
図2、図3、図4を用いて、実施例1におけるWANルータ110の構成とその処理内容を示す。図2に示すように、WANルータ110はEtherPhyLSI210、ルーティングエンジンLSI220、入力ポート選択部222、ヘッダ解析処理部224、タイムスタンプ付与処理部225、フォワーディング処理部226、出力ポート選択部228、アドレス用メモリ230、パケット用メモリ240、CPU250、時計ユニット260から構成される。なお、EtherPhyLSI210は、通常のイーサネット(登録商標)の物理層用集積回路(IC)チップで構成される。図3の処理フローに示すように、伝送データであるフレーム(フレームとはパケットにフレームヘッダを付加したデータの呼び名)はEtherPhyLSI210によって受信され、ルーティングエンジンLSI220へ送られる(ステップ310)。
ルーティングエンジンLSI220では、入力ポート選択部222から出力されるフレームのフレームヘッダ情報を解析し、MACアドレスなどを確認して転送先に関する情報を生成するとともにIPパケット部を抽出する。転送先に関する情報はフォワーディング処理部226へ出力し、抽出したパケットはタイムスタンプ付与処理部225へ出力する(ステップ311)。
図4に示すパケットフォーマットの一例のように、タイムスタンプ付与処理部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の周波数で動作させることで破綻させることなく処理可能である。
<負荷分散サーバ>
次に図5を用いて本実施例における負荷分散サーバ115の構成の一例を示す。なお、図1の他のサーバである受付サーバ120や処理サーバ150も、図5に示すサーバのハードウェア構成を有している。上述の通り、サーバ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のデバイス制御や、種々の演算処理を実行するチップである。
図6を用いて、本実施例の負荷分散サーバ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の構成自身は、上述した通り、図5の負荷分散サーバ115と同様であるため、構成に関する説明は省略する。図7、図8を用いて本実施例の受付サーバ120の処理内容を示す。
図7は受付サーバ120の処理フロー図である。受付サーバ120は伝送データであるパケットをEtherPhyLSIによって受信し、パケットを処理部であるCPUへと転送し、IPパケットの受付処理を行う(ステップ710)。CPUは、パケットのヘッダ解析により、タイムスタンプオプション用の識別コードを検出し、後ろに続けて挿入されているタイムスタンプ情報を抽出する(ステップ712)。同時にヘッダ解析では当該パケットが断片パケットであるかを判定し(ステップ714)、断片パケットである場合には、パケットのデータ識別ID(負荷分散サーバ115の説明でパケットIDとして表現した識別子に該当する。)を抽出し、このデータ識別IDがDBに存在しない時、当該受付サーバ120固有の値を付与するなどしてトランザクションIDを作成する(ステップ716)。タイムスタンプとトランザクションIDを関連付けて、図8に図示したデータベース(DB)に格納し、テーブルを作成する(ステップ718)。その後、断片パケット群を統合して、パケットを再構成する(ステップ720)。
断片パケットではない場合、トランザクションIDを生成し(ステップ722)、タイムスタンプとトランザクションIDを関連付けてDBへ格納する(ステップ724)。ここで、トランザクションIDはDB中でユニークな値を設定する必要がある。次にパケットからデータ(またはトランザクションと表現できる)を抽出し、ステップ716で抽出した、またはステップ722で作成したトランザクションID情報と関連付けて管理する(ステップ726)。なお、本実施例においては、単一のパケットまたは複数の断片パケットによってトランザクションが伝送されていることを前提としている。
CPUは次にトランザクションの受付処理を行う(ステップ728)。證券取引システムなどでは、指定された銘柄が存在するか、データに不備がないかなどのトランザクションのフォーマットチェックが受付処理に該当する。
次に、当該データのトランザクションIDに関連するすべてのタイムスタンプ情報をDBから取得して、これらを用いて適切な受付時刻を決定する。本実施例における最も好適な受付時刻決定手段は、当該IDに関連するタイムスタンプ群の中で最も遅い時刻のタイムスタンプの値を受付時刻として採用することであり、その根拠については後述の順序保証の原理説明で述べることとする。決定した受付時刻をトランザクションのデータへ追加する(ステップ730)。トランザクションと受付時刻とトランザクションIDを処理サーバ150に転送するための送信処理を実施する(ステップ732)ことにより、受付サーバの処理フローが完了する。
図8は本実施例の受付サーバ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と同様であるため、構成に関する説明は省略する。図9、図10を用いて処理サーバ150の処理内容を示す。
図9は処理サーバ150の処理フローである。まず、伝送データであるIPパケットがEtherPhyLSIによって受信され、CPUへと転送され受信処理が行われる(ステップ910)。次にデータ抽出処理1020においてパケットからデータ部分の抽出処理が行われる。ここで、パケットが部分パケットである場合には、パケットが復元され、データ部分が抽出される(ステップ912)。データ部分にあるトランザクションとトランザクションIDと受付時刻情報を関連付けてDB1070に格納する。データ部にトランザクションID情報が無い場合はDB1070上でユニークな値を作成し、設定する(ステップ914)。未処理であり、かつ現在時刻よりシステムの最大遅延時間Tw以上前の受付時刻を持つトランザクションのトランザクションIDと受付時刻情報を、ソート処理間隔ΔTごとにDB1070から読み出し、受付時刻が早い順にトランザクションIDをソートする(ステップ916)。ステップ916で決定されたトランザクションIDのソート順に、DBからトランザクションを読み出し、処理キューに格納する(ステップ918)。最後に、処理キューからトランザクションを取り出して、当該データに対し取引処理を実行する(ステップ920)。
図10は処理サーバ150の処理イメージを示す機能ブロック図である。受信処理1010ではステップ910を実施する。データ抽出処理1020ではステップ912とステップ914を実施し、DB1070にテーブル1075を作成する。DB1070上のテーブル1075は、上述の通り、トランザクションIDと受付時刻情報とトランザクションとを有する。ソート処理1030はステップ916を実施する。データ読出し処理1040ではステップ918を実施する。処理キュー1050は順序づけられたデータを蓄えるバッファであり、優先順序が関連付けられたテーブルで構成されていてもよい。取引処理1060はステップ920を実施する。
図10において、DB1070と処理キュー1050はRAM上の領域で実現され、処理ブロックはCPUによって実行される。また、処理サーバの処理系である受信処理1010、データ抽出処理1020、ソート処理1030、データ読出し処理1040、取引処理1060を専用ハードウェアで実現することで、処理速度をより高速化することができる。
以上が、本実施例に係る分散処理システム100の構成と処理内容である。
<順序保証の原理説明>
以下、図11Aを用いて本実施例のシステム構成によって処理順序を保証した処理が可能となる原理を説明する。
図11Aは2台の受付サーバによる構成において断片パケットによって伝送された5つのトランザクションを受け付けた例のタイムチャートを模式的に示している。テーブル1110は受付サーバ1で受信したパケットから作成されたトランザクションID(以下、単にID)とタイムスタンプのテーブルであり、図8のDB870上のテーブルに該当する。同様に、テーブル1120は受付サーバ2で受信したパケットから作成されたIDとタイムスタンプのテーブルである。ここで、表記を簡単にするため、タイムスタンプの時刻情報は秒以上、μ秒以下の精度を省略して記述している。
図11Aにおいて、例えばID1174のトランザクションは4つのパケットに分割されて送られており、最初の断片パケットが2msの時刻でWANルータ110を通過し、最後の断片パケットが25msの時刻でWANルータ110を通過していることを示している。このときID1174は全ての断片パケットがシステムに到達した時刻、すなわちWANルータを通過した時刻を基準とした受付順序としては5番目である。しかし、負荷分散サーバ115の処理時間の差、ネットワークスイッチ160の遅延や受付サーバ120の性能差に伴う処理時間の差によって処理サーバ150へは1番早くに到着してしまっている。このとき、従来技術によるシステムでは処理サーバ150への到達時刻時点、または受付サーバ120での受付処理時にタイムスタンプを付与した時刻時点の順序では、処理時間のバラつきのために順序が入れ替わる可能性がある。これはシステム全体の性能が向上し、全体の平均処理時間が小さくなればなるほど、顕著に表れる。
そのため、本実施例では、その処理時間のバラつきを考慮して、最後の断片パケットがWANルータ110を通過した時刻より、システム全体の最大遅延時間Tw経過したトランザクションに対して、これより後により若い受付時刻を持ったトランザクションが現れない(すなわち順序を決定可能である)と判断し、処理を行うことを特徴とする。これにより、本実施例の処理システムでは、受付順序に対する処理順序を保証することができる。
ここで、トランザクション受付時刻を最後の断片パケットを基準とすることについては、公衆ネットワークは非常に遅延が大きいため、その他の断片パケットを基準にした場合に最大遅延時間Twを設計値として制御できないことがその理由である。例えば、最初の断片パケットのWANルータ通過時刻を基準とした場合、どれだけ待てば順序が確定するのかが判断できない。
<順序決定処理方法>
図11Bに、本実施例の処理サーバ150におけるトランザクションの順序決定のための手段を示す。処理サーバ150はソート処理間隔ΔTごとに未処理の順序決定可能なトランザクションについてソート処理を行う。図11BのTime slot0、Time slot1、Time slot2はソート処理間隔ΔTごとに区切られたタイムスロットである。処理サーバ150は、例えば、Time slot1ではその前タイムスロットであるTime slot0の期間に順序決定可能となったID1160とID1133のトランザクションについてソート処理を行い、次のタイムスロットであるTime slot2の時刻になるまでには順序を確定させる。同様にTime slot1の期間に順序決定可能となったID1174とID1189はTime slot2の期間にソート処理され、次のタイムスロットまでに順序が確定する。以上が、処理サーバ150における順序確定手段である。
なお、ソート処理間隔ΔTは任意の設計パラメータであり、システムにおいてソート処理間隔ΔT内に最大いくつのトランザクションがソート対象となる可能性があり、ソート処理間隔ΔT内にソート可能かを考慮して決定すればよい。
<処理時間見積もり>
図12は、本実施例における、データ処理システムを構成する分散処理システム100の最大遅延時間Twの遅延要素を示す図であり、これを用いて処理時間見積もりによる、最大遅延時間Twの算出例を示す。同図に示すように、分散処理システムの最大遅延時間Twは、WANルータ110のタイムスタンプ付与処理(ステップ312)からパケット送信処理(ステップ320)までの最大遅延時間Twrと、負荷分散サーバ115の最大遅延時間Tlbと、ネットワークスイッチ160の最大遅延時間Tns1と、受付サーバ120の最大遅延時間Trsとネットワークスイッチ170の最大遅延時間Tns2と、処理サーバ150でのID、データ、受付時刻を関連付けてDBへ格納する処理(ステップ914)完了までの最大遅延時間Tesの総和である。
各コンポーネントの処理時間は処理対象データによってばらつくが、基本的には分岐処理の最悪ケースの処理時間計算することで最大遅延時間を算出できる。例えば、CPU処理ではキャッシュに対するアクセスは常にキャッシュミスが起きる場合での処理時間を計上すればよい。また、大きくばらつく原因となる要因に対しては、システムに制約をあたえることでその最大遅延時間を制御できる。例えば、ルータやネットワークスイッチにおいてはパケットの転送先決定処理で全ての処理がキャッシュミスしたときの1つあたりのパケット処理時間とパケット用メモリ240への最大格納パケット数を規定し、その積をとることで最大遅延時間を計算できる。
負荷分散サーバ115、受付サーバ120、処理サーバ150においても同様に、トランザクションのフォーマットを規定し、さらにパケットの最大分割数など、パケットにおけるオプションに制限を設けることで1つのパケットまたはトランザクションあたりの最大処理時間を算出可能であり、1つのサーバあたりに滞留可能(蓄積可能)なパケットまたはトランザクションの数に制限を設けることで各コンポーネントの最大遅延時間を計算できる。なお、受付サーバ120の最大遅延時間Trsは最も処理性能が低い受付サーバ120の最大処理時間を採用する。なお、ストリーム処理のようなリアルタイム性を保証するシステムにおいて、最大遅延時間を計算することは一般的であり、計算方法も知られている。
以上に示したように、本実施例により、トランザクションが複数の断片パケットに分割して転送され、かつその断片パケットには当該トランザクションに所属していることを識別できる情報(トランザクションID)が付与されている状況において、データセンタ内に到達したトランザクション順に処理することを保証した大規模データ処理が実現可能となる。
以上で説明した第1の実施例では、処理サーバ150の時計を元に最大遅延時間Tw経過したことを判定した。しかし、WANルータ110の時計と処理サーバ150の時計との間に誤差がある場合には、WANルータでのタイムスタンプ付与時間より最大遅延時間Tw経過していないにも関わらず、ソート処理1030を実行してしまう恐れがある。
図13に第2の実施例として、進んだ時計誤差を含んだ処理サーバ150における順序保証方法を示す。図13の例では処理サーバ150の時計がWANルータ110の時計よりも進んでいる。そのため、処理サーバ150の時計による処理順序決定可能時刻はWANルータ110の時計を基準とした正しいトランザクションの処理サーバ最悪到着時刻よりも時計誤差時間分だけ早い時刻となる。このとき、図13のように処理サーバの時計による処理順序決定可能時刻より後に到達したトランザクション(ID1360)と処理サーバの時計による処理順序決定可能時刻より前に到達したトランザクション(ID1389)がある場合、ID1389のトランザクションはTime slot0でソート処理され、ID1360のトランザクションはTime slot1でソート処理されることがあり、WANルータを通過した順序に基づく処理順序を保証できない場合がある。すなわち、ID1389のトランザクションはID1360のトランザクションより受付時刻が遅いにも関わらず、先に取引処理が実行されてしまう可能性がある。
これを防ぐために、分散処理システム100におけるWANルータ110と処理サーバ150の時計誤差の最大値、すなわち最大時計誤差時間ΔTwresを考慮し、処理サーバ150での処理順序決定可能条件を受付時刻から(Tw+ΔTwres)経過していることとする。これにより、時計誤差がある場合においても必ず本来の処理順序決定可能時刻以降にソート処理が行われることになるため、処理順序を保証することができる。なお、データ処理システムを構成する分散処理システム100の最大時計誤差時間ΔTwresはシステム設計値として算出可能である。
図14に第2の実施例における処理サーバの処理フローを示す。第1の実施例の図9に示す処理フローとの違いは処理順序決定可能条件のみである。まず、伝送データであるパケットがEtherPhyLSIによって受信され、CPUへと転送され受信処理が行われる(ステップ1410)。次にデータ抽出処理1020においてパケットからデータ部分の抽出処理が行われる。ここで、パケットが部分パケットである場合にはパケットが復元され、データ部分が抽出される(ステップ1412)。データ部分にあるデータ(トランザクション)と受付時刻とトランザクションIDを関連付けてDB1070に格納する。データ部にトランザクションID情報が無い場合はDB1070上でユニークな値を作成し、設定する(ステップ1414)。処理サーバ150の現在時刻より(最大遅延時間Tw+最大時計誤差時間ΔTwres)以上前の受付時刻を持つ未処理のトランザクションにおけるトランザクションIDと受付時刻をソート処理間隔ΔTごとにDB1070から読み出し、受付時刻が早い順にトランザクションIDをソートする(ステップ1416)。トランザクションIDのソート順にDB1070からトランザクションを読み出し、処理キューに格納する(ステップ1418)。最後に、処理キューからトランザクションを取り出して取引処理を実行する(ステップ1420)。
以上説明した第2の実施例によれば、処理サーバの時計がWANルータの時計よりも進んでいた場合に対応可能な順序保証方法を提供することができる。しかし、第2の実施例による解決手段では処理サーバ150の時計がWANルータ110よりも遅れていた場合に、トランザクションの処理順序確定までに要する遅延時間が増大する問題がある。
図15に、第3の実施例として、遅れた時計誤差を含んだ処理サーバ150において上記処理遅延時間増大の問題を緩和する方法を示す。図15の例では処理サーバ150の時計がWANルータ110の時計よりも遅れているために、トランザクションの処理サーバ最悪到着時刻よりも時計誤差と最大時計誤差時間ΔTwresの和だけ遅くに処理順序が決定される。すなわち、取引処理までの遅延時間が増大する。そこで、本実施例においては、処理サーバの時計に頼らず、トランザクションの処理サーバ最悪到着時刻(言い換えれば処理順序を決定可能な時刻)を経過したことを認識する手段を導入する。具体的には第2の実施例におけるトランザクションの処理順序決定可能条件に「当該トランザクションの受付時刻に対し、(最大遅延時間Tw−最小遅延時間Tb)経過した受付時刻を持つトランザクションを確認できたこと」を追加する。なお、最小遅延時間とは分散処理システム100のWANルータ110通過時から処理サーバ150到達時までの最小時間であり、この最少時間をデータ処理システムの最小遅延時間と呼ぶ。
今、システムの最大遅延時間Twを50m秒、システムの最小遅延時間Tbを2m秒、時計誤差を8m秒、最大時計誤差を10m秒とし、ID1560のトランザクション受付時刻が21m秒であったとする。このとき実施例2の形態ではID1560の処理順序決定可能時刻1510は89m秒(=21m秒+50m秒+8m秒+10m秒)となるが、ID1589のように69m秒以上の受付時刻を有するトランザクションが処理サーバ150に到着したならば、ID1560の処理順序を決定できる。なぜなら、処理サーバ150にWANルータ110を70m秒で通過したトランザクションが到達したならば、現在のWANルータ110の時計時刻は少なくとも最小遅延時間Tbを加えた72m秒以上であることが分かり、ID1560のトランザクションが受付時刻21m秒から最大遅延時間50m秒以上経過しており処理順序決定可能条件を満たしていることが分かるためである。このように、第3の実施例では、第2の実施例による処理順序決定可能時刻1510を後続トランザクションの受付時刻を利用した処理順序決定可能時刻1520まで前倒しが可能であり、取引処理実行までの平均遅延時間を小さくすることができる。
すなわち、第3の実施例ではWANルータ110と処理サーバ150の時刻補正方法から想定される最大時計誤差時間ΔTwresおよびシステムの最小遅延時間Tbを算出し、現在時刻より(Tw+ΔTwres)以上前の受付時刻を有しかつ未処理であるトランザクション、または処理サーバ150が確認した最新の受付時刻より(Tw−Tb)以上前の受付時刻を有しかつ未処理であるトランザクションを処理順序決定可能とすることで時計誤差を含むシステムに対しても処理順序を保証し、第2の実施例より小さな遅延時間での取引処理実行を可能とする。なお、最小遅延時間Tbは、システムにおけるベストケースの処理時間を計算することで算出可能である。ベストケースとは最も処理時間の小さい分岐を選択した場合の処理を指す。
図16は第3の実施例における処理サーバ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)。
以上説明した実施例3のデータ処理システムによれば、処理順序決定可能時刻を後続トランザクションの受付時刻を利用した処理順序決定可能時刻まで前倒しが可能であり、取引処理実行までの平均遅延時間を小さくすることができる。
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明のより良い理解のために詳細に説明したのであり、必ずしも説明の全ての構成を備えるものに限定されものではない。
また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることが可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
更に、上述した各構成、機能、処理部等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現しても良いし、それらの一部又は全部を実現するプログラムを作成することによりソフトウェアで実現しても良いことは言うまでもない。
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 時計。

Claims (15)

  1. データ処理システムであって、
    ネットワークに接続されるルータと、前記ルータに接続される負荷分散サーバと、
    前記負荷分散サーバに接続される複数の受付サーバと、複数の前記受付サーバに接続される処理サーバとから構成され、
    前記ルータは、入力されるパケットに対しタイムスタンプを付与するルーティング処理部を有し、
    前記受付サーバは、同一の識別子を有する複数の前記パケットに分割されて伝送されたトランザクションに対し、複数の前記パケットに付与した前記タイムスタンプの最も遅い時刻を前記トランザクションの受付時刻として付与する処理部を有し、
    前記処理サーバは、複数の前記受付サーバから受信した複数の前記トランザクションのうち、予め設定した最大遅延時間を経過した前記トランザクションに対し付与された前記トランザクションの受付時刻に従ってソートする処理部を有する、
    ことを特徴とするデータ処理システム。
  2. 請求項1に記載のデータ処理システムであって、
    前記ルーティング処理部は、前記パケットのヘッダ解析を行うヘッダ解析処理部と、前記パケットに前記タイムスタンプを付与すルータイムスタンプ付与処理部と、前記タイムスタンプが付与された前記パケットを転送するフォワーディング処理部を備える、
    ことを特徴とするデータ処理システム。
  3. 請求項2に記載のデータ処理システムであって、
    前記タイムスタンプ付与処理部は、前記パケットに対し、タイムスタンプオプションを認識する識別コードと前記タイムスタンプを付与する、
    ことを特徴とするデータ処理システム。
  4. 請求項1に記載のデータ処理システムであって、
    前記負荷分散サーバは処理部を有し、
    前記処理部は、前記パケットの前記識別子に対応して、転送すべき前記受付サーバを決定して、前記パケットを転送する、
    ことを特徴とするデータ処理システム。
  5. 請求項3に記載のデータ処理システムであって、
    前記受付サーバの前記処理部は、前記負荷分散サーバから転送される前記パケットのヘッダ解析を実行し、前記パケット中の前記識別コードを検出して前記タイムスタンプを抽出し、前記パケット中の前記識別子に基づき、トランザクション識別子(ID)を決定し、前記トランザクションIDを前記タイムスタンプと関連付けて記憶する、
    ことを特徴とするデータ処理システム。
  6. 請求項5に記載のデータ処理システムであって、
    前記受付サーバの前記処理部は、受付時刻決定部を備え、前記受付時刻決定部は、記憶した前記トランザクションIDと前記タイムスタンプに基づき、前記トランザクションIDに関連する前記タイムスタンプ群のなかで、最も遅い時刻の値を、対応する前記トランザクションの受付時刻とし、前記トランザクションIDと前記トランザクションと前記受付時刻を前記処理サーバに転送する、
    ことを特徴とするデータ処理システム。
  7. 請求項6に記載のデータ処理システムであって、
    前記処理サーバは記憶部を備え、前記処理部は、ソートした前記トランザクションを前記記憶部に記憶し、記憶した前記トランザクションを前記受付時刻に基づき順次処理する、
    ことを特徴とするデータ処理システム。
  8. 請求項6に記載のデータ処理システムであって、
    前記処理サーバの前記処理部は、前記最大遅延時間に、前記処理サーバと前記ルータの最大時計誤差時間を加えた時間を経過した前記トランザクションに対し、付与された前記受付時刻に従って前記ソートを実行する、
    ことを特徴とするデータ処理システム。
  9. 請求項6に記載のデータ処理システムであって、
    前記処理サーバの前記処理部は、前記最大遅延時間に、前記処理サーバと前記ルータの最大時計誤差時間を加えた時間を経過した、或いは前記処理サーバの前記処理部が確認した最新確認時刻より前記最大遅延時間と最少遅延時間の差以上前の、前記トランザクションに対し付与された前記受付時刻に従って前記ソートを実行する、
    ことを特徴とするデータ処理システム。
  10. ネットワークから入力されるパケットを受け付ける複数の受付サーバと、複数の前記受付サーバに接続される処理サーバから構成されるデータ処理システムにおけるデータ順序保証方法であって、
    入力される前記パケットに対しタイムスタンプを付与し、
    前記受付サーバは、同一の識別子を有する複数の前記パケットに分割されて伝送された前記トランザクションに対し、複数の前記パケットに付与した前記タイムスタンプの最も遅い時刻を前記トランザクションの受付時刻として付与し、
    前記処理サーバは、複数の前記受付サーバから受信した複数の前記トランザクションのうち、予め設定した前記データ処理システムの最大遅延時間を経過した前記トランザクションに対し付与された前記受付時刻に従ってソートする、
    ことを特徴とするデータ順序保証方法。
  11. 請求項10に記載のデータ順序保証方法であって、
    入力される前記パケットに対し、前記タイムスタンプに加え、タイムスタンプオプションを認識する識別コードを付与する、
    ことを特徴とするデータ順序保証方法。
  12. 請求項10に記載のデータ順序保証方法であって、
    前記パケットの前記識別子に対応して、転送すべき前記受付サーバを決定して、決定された前記受付サーバが当該パケットを受け付ける、
    ことを特徴とするデータ順序保証方法。
  13. 請求項12に記載のデータ順序保証方法であって、
    前記受付サーバは、転送される前記パケットのヘッダ解析を実行し、前記パケット中の前記識別コードを検出して前記タイムスタンプを抽出し、前記パケット中の前記識別子に基づき、トランザクションIDを決定し、前記トランザクションIDを前記タイムスタンプと関連付けて管理する、
    ことを特徴とするデータ順序保証方法。
  14. 請求項13に記載のデータ順序保証方法であって、
    前記受付サーバは、前記トランザクションIDと前記タイムスタンプに基づき、前記トランザクションIDに関連する前記タイムスタンプ群の中で、最も遅い時刻の値を、対応する前記トランザクションの受付時刻とし、前記トランザクションIDと前記トランザクションと前記受付時刻を前記処理サーバに転送する、
    ことを特徴とするデータ順序保証方法。
  15. 請求項14に記載のデータ順序保証方法であって、
    前記処理サーバは、前記最大遅延時間に、前記データ処理システムの最大時計誤差時間を加えた時間を経過した前記トランザクションに対し、付与された前記受付時刻に従って前記ソートを実行する、
    ことを特徴とするデータ順序保証方法。
JP2010280521A 2010-12-16 2010-12-16 データ処理システム、およびデータ順序保証方法 Pending JP2012129857A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010280521A JP2012129857A (ja) 2010-12-16 2010-12-16 データ処理システム、およびデータ順序保証方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010280521A JP2012129857A (ja) 2010-12-16 2010-12-16 データ処理システム、およびデータ順序保証方法

Publications (1)

Publication Number Publication Date
JP2012129857A true JP2012129857A (ja) 2012-07-05

Family

ID=46646392

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010280521A Pending JP2012129857A (ja) 2010-12-16 2010-12-16 データ処理システム、およびデータ順序保証方法

Country Status (1)

Country Link
JP (1) JP2012129857A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014191379A (ja) * 2013-03-26 2014-10-06 Seiko Epson Corp 分散処理システムおよび端末処理装置
JPWO2018179103A1 (ja) * 2017-03-28 2019-11-07 株式会社日立製作所 データ処理システムおよびその制御方法
JP2021503640A (ja) * 2017-10-31 2021-02-12 アビニシオ テクノロジー エルエルシー 複製されたタスク結果を使用してコンピュータクラスタを管理すること

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014191379A (ja) * 2013-03-26 2014-10-06 Seiko Epson Corp 分散処理システムおよび端末処理装置
JPWO2018179103A1 (ja) * 2017-03-28 2019-11-07 株式会社日立製作所 データ処理システムおよびその制御方法
JP2021503640A (ja) * 2017-10-31 2021-02-12 アビニシオ テクノロジー エルエルシー 複製されたタスク結果を使用してコンピュータクラスタを管理すること

Similar Documents

Publication Publication Date Title
US11799764B2 (en) System and method for facilitating efficient packet injection into an output buffer in a network interface controller (NIC)
EP2406723B1 (en) Scalable interface for connecting multiple computer systems which performs parallel mpi header matching
TWI392288B (zh) 用於多核心通訊處理的系統及方法
EP2183669B1 (en) Apparatus and method for tracking transaction related data
JP4779955B2 (ja) パケット処理装置及びパケット処理方法
US7860009B2 (en) Providing backpressure flow control to specific traffic flows
US20060233156A1 (en) Network routing apparatus
US10419965B1 (en) Distributed meters and statistical meters
US9197566B2 (en) Information processing method, recording medium, and information processing apparatus
JP2004180019A (ja) バッファメモリ管理方法及びシステム
US11502967B2 (en) Methods and apparatuses for packet scheduling for software-defined networking in edge computing environment
JP2017163530A (ja) ネットワークデバイスおよびトラフィックシェーピング方法
US8566833B1 (en) Combined network and application processing in a multiprocessing environment
JP2019047254A (ja) 情報処理システム、情報処理装置及び情報処理プログラム
JP5900352B2 (ja) パケット処理装置、パケット処理方法およびプログラム
CN106603409A (zh) 一种数据处理系统、方法及设备
JP2012129857A (ja) データ処理システム、およびデータ順序保証方法
US9137158B2 (en) Communication apparatus and communication method
EP2417737B1 (en) Transmit-side scaler and method for processing outgoing information packets using thread-based queues
US7533109B2 (en) Item queue management
CN110247863A (zh) 数据包处理方法、装置、sdn交换机及存储介质
US7623538B1 (en) Hardware-based network interface per-ring resource accounting
JP5359357B2 (ja) パケット処理装置、該処理装置に用いられるパケット処理順序制御方法及びパケット処理順序制御プログラム
CN117560433A (zh) Dpu中报文转发保序方法、装置、电子设备和存储介质