(57)【特許請求の範囲】
【請求項１】
サーバ装置と、
クライアント装置と
を有し、
前記サーバ装置は、
メッセージが第１通信プロトコルに従って分割された第１パケット群に含まれる第１パケットの各々に第１シーケンス番号を付す第１付与手段と、
前記第１通信プロトコルと異なる第２通信プロトコルに従ってメッセージが分割された第２パケット群に含まれる第２パケットの各々に第２シーケンス番号を付す第２付与手段と、
前記第１パケット群に対する前記第２パケットの各々の相対的な配信順序を示す第３シーケンス番号を、前記第１パケットおよび前記第２パケットの少なくともいずれか一方に付す第３付与手段と、
前記第１シーケンス番号または前記第１シーケンス番号および前記第３シーケンス番号が付された前記第１パケット群を、前記第１通信プロトコルに従って前記クライアント装置へ送信し、前記第２シーケンス番号または前記第２シーケンス番号および前記第３シーケンス番号が付された前記第２パケット群を前記第２通信プロトコルに従って前記クライアント装置へ送信する送信手段と
を備え、
前記クライアント装置は、
前記サーバ装置から前記第１パケット群を前記第１通信プロトコルに従って受信する第１受信手段と、
前記サーバ装置から前記第２パケット群を前記第２通信プロトコルに従って受信する第２受信手段と、
前記受信された第１パケット群および該受信された第２パケット群の少なくともいずれか一方に付された前記第１シーケンス番号、前記第２シーケンス番号および前記第３シーケンス番号に基づいて、該受信された第１パケット群と該受信された第２パケット群の配信順序を特定する特定手段と、
前記配信順序に従って、前記受信された第１パケット群および第２パケット群を処理する処理手段と
を備えるデータ配信システム。
【請求項２】
サーバ装置と、
クライアント装置と
を有し、
前記サーバ装置は、
メッセージに第３シーケンス番号を付す第３付与手段と、
前記第３シーケンス番号が付されたメッセージが第１通信プロトコルに従って分割された第１パケット群に含まれる第１パケットの各々に第１シーケンス番号を付す第１付与手段と、
前記第１通信プロトコルと異なる第２通信プロトコルに従って前記第３シーケンス番号が付されたメッセージが分割された第２パケット群に含まれる第２パケットの各々に第２シーケンス番号を付す第２付与手段と、
前記第１シーケンス番号が付された前記第１パケット群を前記第１通信プロトコルに従って前記クライアント装置へ送信し、前記第２シーケンス番号が付された前記第２パケット群を前記第２通信プロトコルに従って前記クライアント装置へ送信する送信手段と
を備え、
前記クライアント装置は、
前記サーバ装置から前記第１パケット群を前記第１通信プロトコルに従って受信する第１受信手段と、
前記サーバ装置から前記第２パケット群を前記第２通信プロトコルに従って受信する第２受信手段と、
前記受信された第１パケット群に付された前記第１シーケンス番号と前記受信された第２パケット群に付された第２シーケンス番号とに基づいてメッセージを復元し、該復元されたメッセージに付された第３シーケンス番号に基づいて該メッセージの配信順序を特定する特定手段と、
前記配信順序に従って、前記復元されたメッセージを処理する処理手段と
を備えるデータ配信システム。
【請求項３】
前記第３付与手段は、前記第１パケットに対して、直近のタイミングにおいて前記第２パケットに付与された第２シーケンス番号を、前記第３シーケンス番号として付与する
請求項１に記載のデータ配信システム。
【請求項４】
前記第３付与手段は、前記第２パケットに対して、直近のタイミングにおいて前記第１パケットに付与された第１シーケンス番号を、前記第３シーケンス番号として付与する
請求項１または３に記載のデータ配信システム。
【請求項５】
前記第１通信プロトコルに従って送信されるメッセージは、予め定められたタイミングごとのデータ値の時間変化を示すデータであり、
前記第２通信プロトコルに従って送信されるメッセージは、或る時点までの前記データ値の時間変化を示すデータを含む
請求項１乃至４のいずれか１項に記載のデータ配信システム。
【請求項６】
前記第１通信プロトコルに従って送信されるメッセージは、予め定められたタイミングごとの金融情報の時間変化を示す系列データであり、
前記第２通信プロトコルに従って送信されるメッセージは、或る時点までの前記金融情報の時間変化を示すデータを含み、
前記第１通信プロトコルは、マルチキャストの通信プロトコルであり、
前記第２通信プロトコルは、ユニキャストの通信プロトコルである
請求項１乃至５のいずれか１項に記載のデータ配信システム。
【請求項７】
前記送信手段は、前記第１パケット群を第１のクライアント装置群へマルチキャストし、前記第２パケット群を第２のクライアント装置群へマルチキャストする
請求項１乃至５のいずれか１項に記載のデータ配信システム。
【請求項８】
前記サーバ装置は、前記第１通信プロトコルを指定する要求を前記クライアント装置から受信した場合に、前記メッセージを該第１通信プロトコルに従って前記クライアント装置へ送信する
請求項１乃至７のいずれか１項に記載のデータ配信システム。
【請求項９】
メッセージが第１通信プロトコルに従って分割された第１パケット群に含まれる第１パケットの各々に第１シーケンス番号を付す第１付与手段と、
前記第１通信プロトコルと異なる第２通信プロトコルに従ってメッセージが分割された第２パケット群に含まれる第２パケットの各々に第２シーケンス番号を付す第２付与手段と、
前記第１パケット群に対する前記第２パケットの各々の相対的な配信順序を示す第３シーケンス番号を、前記第１パケットおよび前記第２パケットの少なくともいずれか一方に付す第３付与手段と、
前記第１シーケンス番号または前記第１シーケンス番号および前記第３シーケンス番号が付された前記第１パケット群を、前記第１通信プロトコルに従ってクライアント装置へ送信し、前記第２シーケンス番号または前記第２シーケンス番号および前記第３シーケンス番号が付された前記第２パケット群を前記第２通信プロトコルに従って前記クライアント装置へ送信する送信手段と
を備えるサーバ装置。
【請求項１０】
メッセージが第１通信プロトコルに従って分割された第１パケット群に含まれる第１パケットの各々に第１シーケンス番号を付す第１付与手段と、前記第１通信プロトコルと異なる第２通信プロトコルに従ってメッセージが分割された第２パケット群に含まれる第２パケットの各々に第２シーケンス番号を付す第２付与手段と、前記第１パケット群に対する前記複数の第２パケットの各々の相対的な配信順序を示す第３シーケンス番号を、前記第１パケットおよび前記第２パケットの少なくともいずれか一方に付す第３付与手段と、前記第１シーケンス番号または前記第１シーケンス番号および前記第３シーケンス番号が付された前記第１パケット群を、前記第１通信プロトコルに従って当該クライアント装置へ送信し、前記第２シーケンス番号または前記第２シーケンス番号および前記第３シーケンス番号が付された前記第２パケット群を前記第２通信プロトコルに従って当該クライアント装置へ送信する送信手段とを備えるサーバ装置から、前記第１パケット群を前記第１通信プロトコルに従って受信する第１受信手段と、
前記サーバ装置から前記第２パケット群を前記第２通信プロトコルに従って受信する第２受信手段と、
前記受信された第１パケット群および該受信された第２パケット群の少なくともいずれか一方に付された前記第１シーケンス番号、前記第２シーケンス番号および前記第３シーケンス番号に基づいて、該受信された第１パケット群と該受信された第２パケット群の配信順序を特定する特定手段と、
前記配信順序に従って、前記受信された第１パケット群および第２パケット群を処理する処理手段と
を備えるクライアント装置。
【請求項１１】
コンピュータに、
メッセージが第１通信プロトコルに従って分割された第１パケット群に含まれる第１パケットの各々に第１シーケンス番号を付すステップと、
前記第１通信プロトコルと異なる第２通信プロトコルに従ってメッセージが分割された第２パケット群に含まれる第２パケットの各々に第２シーケンス番号を付すステップと、
前記第１パケット群に対する前記第２パケットの各々の相対的な配信順序を示す第３シーケンス番号を、前記第１パケットおよび前記第２パケットの少なくともいずれか一方に付すステップと、
前記第１シーケンス番号または前記第１シーケンス番号および前記第３シーケンス番号が付された前記第１パケット群を、前記第１通信プロトコルに従ってクライアント装置へ送信し、前記第２シーケンス番号または前記第２シーケンス番号および前記第３シーケンス番号が付された前記第２パケット群を前記第２通信プロトコルに従って前記クライアント装置へ送信するステップと
を実行させるためのプログラム。
【請求項１２】
コンピュータに、
メッセージが第１通信プロトコルに従って分割された第１パケット群に含まれる第１パケットの各々に第１シーケンス番号を付す第１付与手段と、前記第１通信プロトコルと異なる第２通信プロトコルに従ってメッセージが分割された第２パケット群に含まれる第２パケットの各々に第２シーケンス番号を付す第２付与手段と、前記第１パケット群に対する前記第２パケットの各々の相対的な配信順序を示す第３シーケンス番号を、前記第１パケットおよび前記第２パケットの少なくともいずれか一方に付す第３付与手段と、前記第１シーケンス番号または前記第１シーケンス番号および前記第３シーケンス番号が付された前記第１パケット群を、前記第１通信プロトコルに従って前記コンピュータへ送信し、前記第２シーケンス番号または前記第２シーケンス番号および前記第３シーケンス番号が付された前記第２パケット群を前記第２通信プロトコルに従って前記コンピュータへ送信する送信手段とを備えるサーバ装置から、前記第１パケット群を前記第１通信プロトコルに従って受信するステップと、
前記サーバ装置から前記第２パケット群を前記第２通信プロトコルに従って受信するステップと、
前記受信された第１パケット群および該受信された第２パケット群の少なくともいずれか一方に付された前記第１シーケンス番号、前記第２シーケンス番号および前記第３シーケンス番号に基づいて、該受信された第１パケット群と該受信された第２パケット群の配信順序を特定するステップと、
前記配信順序に従って、前記受信された第１パケット群および第２パケット群を処理するステップと
を実行させるためのプログラム。
【請求項１３】
サーバ装置が、メッセージが第１通信プロトコルに従って分割された第１パケット群の各々に第１シーケンス番号を付すステップと、
前記サーバ装置が、前記第１通信プロトコルと異なる第２通信プロトコルに従ってメッセージが分割された第２パケット群に含まれる第２パケットの各々に第２シーケンス番号を付すステップと、
前記サーバ装置が、前記第１パケット群に対する前記第２パケットの各々の相対的な配信順序を示す第３シーケンス番号を、前記第１パケットおよび前記第２パケットの少なくともいずれか一方に付すステップと、
前記サーバ装置が、前記第１シーケンス番号または前記第１シーケンス番号および前記第３シーケンス番号が付された前記第１パケット群を、前記第１通信プロトコルに従ってクライアント装置へ送信し、前記第２シーケンス番号または前記第２シーケンス番号および前記第３シーケンス番号が付された前記第２パケット群を前記第２通信プロトコルに従って前記クライアント装置へ送信するステップと、
前記クライアント装置が、前記サーバ装置から前記第１パケット群を前記第１通信プロトコルに従って受信するステップと、
前記クライアント装置が、前記サーバ装置から前記第２パケット群を前記第２通信プロトコルに従って受信するステップと、
前記クライアント装置が、前記受信された第１パケット群および該受信された第２パケット群の少なくともいずれか一方に付された前記第１シーケンス番号、前記第２シーケンス番号および前記第３シーケンス番号に基づいて、該受信された第１パケット群と該受信された第２パケット群の配信順序を特定するステップと、
前記クライアント装置が、前記配信順序に従って、前記受信された第１パケット群および第２パケット群を処理するステップと
を備えるデータ配信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、金融情報等のデータを配信する技術に関する。
【背景技術】
【０００２】
金融情報等のデータを配信する手法として、ユニキャスト通信やブロードキャスト通信が用いられている。例えば、特許文献１には、ユニキャスト通信のみに対応した通信環境下で、ユニキャスト通信を利用して一対多のブロードキャスト通信やマルチキャスト通信を擬似的に実現する通信方法が記載されている。また、特許文献２には、無線通信システムにおける情報伝達の信頼性を高めるために、送信側において、送信しようとする周期的繰り返し送信が必要である情報と周期的繰り返し送信が必要でない情報に対してそれぞれ処理を行って、データユニットに組み立て、それぞれ互いに独立のシーケンス番号空間を利用して、組み立てられたデータユニットにシーケンス番号を設定して送信し、受信側において、受信した周期的繰り返し送信が必要である情報と周期的繰り返し送信が必要でない情報に対して、それぞれ受信処理を行う情報伝送方法が記載されている。
【０００３】
また、特許文献３には、パケット欠落や順序逆転などの通信障害を防止して、ネットワークの運用性および信頼性の向上を図るために、マルチキャストの配信経路となるマルチキャストツリーの更新制御を行うことが記載されている。また、特許文献４には、パケット転送経路制御装置において、出力ポート毎にマルチキャストパケットの管理情報を格納するマルチキャスト管理テーブルを設け、また入力パケットに対して、例えば出力ポート毎にシリアル番号を付与してパケットの出力を管理することによって、ユニキャストパケットとマルチキャストパケットとの間でのパケットの出力の順序性を保証することが記載されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７−５３４８６号公報
【特許文献２】特表２００８−５２３７４１号公報
【特許文献３】国際公開第２００６／１０３７１９号
【特許文献４】特開２００５−１３０３６６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１乃至４に記載の技術では、複数の通信プロトコルを併用してデータ配信を行った場合、受信されるデータの順序性を保証することはできなかった。特に、特許文献４に記載の技術では、ユニキャストパケットとマルチキャストパケットとの出力の順序性を保証することができるものの、パケットを受信する側の装置においてネットワーク機器やＯＳ、ソフトウェアの各レイヤ等でパケットの順序関係が保たれない場合があった。
これに対し本発明は、複数の通信プロトコルを併用しつつデータの順序性を保証することのできる技術を提供する。
【課題を解決するための手段】
【０００６】
本発明は、サーバ装置と、クライアント装置とを有し、前記サーバ装置は、メッセージが第１通信プロトコルに従って分割された第１パケット群に含まれる第１パケットの各々に第１シーケンス番号を付す第１付与手段と、前記第１通信プロトコルと異なる第２通信プロトコルに従ってメッセージが分割された第２パケット群に含まれる第２パケットの各々に第２シーケンス番号を付す第２付与手段と、前記第１パケット群に対する前記第２パケットの各々の相対的な配信順序を示す第３シーケンス番号を、前記第１パケットおよび前記第２パケットの少なくともいずれか一方に付す第３付与手段と、前記第１シーケンス番号または前記第１シーケンス番号および前記第３シーケンス番号が付された前記第１パケット群を、前記第１通信プロトコルに従って前記クライアント装置へ送信し、前記第２シーケンス番号または前記第２シーケンス番号および前記第３シーケンス番号が付された前記第２パケット群を前記第２通信プロトコルに従って前記クライアント装置へ送信する送信手段とを備え、前記クライアント装置は、前記サーバ装置から前記第１パケット群を前記第１通信プロトコルに従って受信する第１受信手段と、前記サーバ装置から前記第２パケット群を前記第２通信プロトコルに従って受信する第２受信手段と、前記受信された第１パケット群および該受信された第２パケット群の少なくともいずれか一方に付された前記第１シーケンス番号、前記第２シーケンス番号および前記第３シーケンス番号に基づいて、該受信された第１パケット群と該受信された第２パケット群の配信順序を特定する特定手段と、前記配信順序に従って、前記受信された第１パケット群および第２パケット群を処理する処理手段とを備えるデータ配信システムを提供する。
このデータ配信システムによれば、第１の通信プロトコルと第２の通信プロトコルとを併用しつつデータの順序性が保証されるデータ配信を行うことができる。
【０００７】
また、本発明は、サーバ装置と、クライアント装置とを有し、前記サーバ装置は、メッセージに第３シーケンス番号を付す第３付与手段と、前記第３シーケンス番号が付されたメッセージが第１通信プロトコルに従って分割された第１パケット群に含まれる第１パケットの各々に第１シーケンス番号を付す第１付与手段と、前記第１通信プロトコルと異なる第２通信プロトコルに従って前記第３シーケンス番号が付されたメッセージが分割された第２パケット群に含まれる第２パケットの各々に第２シーケンス番号を付す第２付与手段と、前記第１シーケンス番号が付された前記第１パケット群を前記第１通信プロトコルに従って前記クライアント装置へ送信し、前記第２シーケンス番号が付された前記第２パケット群を前記第２通信プロトコルに従って前記クライアント装置へ送信する送信手段とを備え、前記クライアント装置は、前記サーバ装置から前記第１パケット群を前記第１通信プロトコルに従って受信する第１受信手段と、前記サーバ装置から前記第２パケット群を前記第２通信プロトコルに従って受信する第２受信手段と、前記受信された第１パケット群に付された前記第１シーケンス番号と前記受信された第２パケット群に付された第２シーケンス番号とに基づいてメッセージを復元し、該復元されたメッセージに付された第３シーケンス番号に基づいて該メッセージの配信順序を特定する特定手段と、前記配信順序に従って、前記復元されたメッセージを処理する処理手段とを備えるデータ配信システムを提供する。
【０００８】
前記第３付与手段は、前記第１パケットに対して、直近のタイミングにおいて前記第２パケットに付与された第２シーケンス番号を、前記第３シーケンス番号として付与してもよい。
また、前記第３付与手段は、前記第２パケットに対して、直近のタイミングにおいて前記第１パケットに付与された第１シーケンス番号を、前記第３シーケンス番号として付与してもよい。
【０００９】
前記第１通信プロトコルに従って送信されるメッセージは、予め定められたタイミングごとのデータ値の時間変化を示すデータであり、前記第２通信プロトコルに従って送信されるメッセージは、或る時点までの前記データ値の時間変化を示すデータを含んでもよい。
【００１０】
前記第１通信プロトコルに従って送信されるメッセージは、予め定められたタイミングごとの金融情報の時間変化を示す系列データであり、前記第２通信プロトコルに従って送信されるメッセージは、或る時点までの前記金融情報の時間変化を示すデータを含み、前記第１通信プロトコルは、マルチキャストの通信プロトコルであり、前記第２通信プロトコルは、ユニキャストの通信プロトコルであってもよい。
【００１１】
前記送信手段は、前記第１パケット群を第１のクライアント装置群へマルチキャストし、前記第２パケット群を第２のクライアント装置群へマルチキャストしてもよい。
【００１２】
前記サーバ装置は、前記第１通信プロトコルを指定する要求を前記クライアント装置から受信した場合に、前記メッセージを該第１通信プロトコルに従って前記クライアント装置へ送信してもよい。
【００１３】
また、本発明は、メッセージが第１通信プロトコルに従って分割された第１パケット群に含まれる第１パケットの各々に第１シーケンス番号を付す第１付与手段と、前記第１通信プロトコルと異なる第２通信プロトコルに従ってメッセージが分割された第２パケット群に含まれる第２パケットの各々に第２シーケンス番号を付す第２付与手段と、前記第１パケット群に対する前記第２パケットの各々の相対的な配信順序を示す第３シーケンス番号を、前記第１パケットおよび前記第２パケットの少なくともいずれか一方に付す第３付与手段と、前記第１シーケンス番号または前記第１シーケンス番号および前記第３シーケンス番号が付された前記第１パケット群を、前記第１通信プロトコルに従ってクライアント装置へ送信し、前記第２シーケンス番号または前記第２シーケンス番号および前記第３シーケンス番号が付された前記第２パケット群を前記第２通信プロトコルに従って前記クライアント装置へ送信する送信手段とを備えるサーバ装置を提供する。
【００１４】
また、本発明は、メッセージが第１通信プロトコルに従って分割された第１パケット群に含まれる第１パケットの各々に第１シーケンス番号を付す第１付与手段と、前記第１通信プロトコルと異なる第２通信プロトコルに従ってメッセージが分割された第２パケット群に含まれる第２パケットの各々に第２シーケンス番号を付す第２付与手段と、前記第１パケット群に対する前記複数の第２パケットの各々の相対的な配信順序を示す第３シーケンス番号を、前記第１パケットおよび前記第２パケットの少なくともいずれか一方に付す第３付与手段と、前記第１シーケンス番号または前記第１シーケンス番号および前記第３シーケンス番号が付された前記第１パケット群を、前記第１通信プロトコルに従って当該クライアント装置へ送信し、前記第２シーケンス番号または前記第２シーケンス番号および前記第３シーケンス番号が付された前記第２パケット群を前記第２通信プロトコルに従って当該クライアント装置へ送信する送信手段とを備えるサーバ装置から、前記第１パケット群を前記第１通信プロトコルに従って受信する第１受信手段と、前記サーバ装置から前記第２パケット群を前記第２通信プロトコルに従って受信する第２受信手段と、前記受信された第１パケット群および該受信された第２パケット群の少なくともいずれか一方に付された前記第１シーケンス番号、前記第２シーケンス番号および前記第３シーケンス番号に基づいて、該受信された第１パケット群と該受信された第２パケット群の配信順序を特定する特定手段と、前記配信順序に従って、前記受信された第１パケット群および第２パケット群を処理する処理手段とを備えるクライアント装置を提供する。
【００１５】
また、本発明は、コンピュータに、メッセージが第１通信プロトコルに従って分割された第１パケット群に含まれる第１パケットの各々に第１シーケンス番号を付すステップと、前記第１通信プロトコルと異なる第２通信プロトコルに従ってメッセージが分割された第２パケット群に含まれる第２パケットの各々に第２シーケンス番号を付すステップと、前記第１パケット群に対する前記第２パケットの各々の相対的な配信順序を示す第３シーケンス番号を、前記第１パケットおよび前記第２パケットの少なくともいずれか一方に付すステップと、前記第１シーケンス番号または前記第１シーケンス番号および前記第３シーケンス番号が付された前記第１パケット群を、前記第１通信プロトコルに従ってクライアント装置へ送信し、前記第２シーケンス番号または前記第２シーケンス番号および前記第３シーケンス番号が付された前記第２パケット群を前記第２通信プロトコルに従って前記クライアント装置へ送信するステップとを実行させるためのプログラムを提供する。
【００１６】
また、本発明は、コンピュータに、メッセージが第１通信プロトコルに従って分割された第１パケット群に含まれる第１パケットの各々に第１シーケンス番号を付す第１付与手段と、前記第１通信プロトコルと異なる第２通信プロトコルに従ってメッセージが分割された第２パケット群に含まれる第２パケットの各々に第２シーケンス番号を付す第２付与手段と、前記第１パケット群に対する前記第２パケットの各々の相対的な配信順序を示す第３シーケンス番号を、前記第１パケットおよび前記第２パケットの少なくともいずれか一方に付す第３付与手段と、前記第１シーケンス番号または前記第１シーケンス番号および前記第３シーケンス番号が付された前記第１パケット群を、前記第１通信プロトコルに従って前記コンピュータへ送信し、前記第２シーケンス番号または前記第２シーケンス番号および前記第３シーケンス番号が付された前記第２パケット群を前記第２通信プロトコルに従って前記コンピュータへ送信する送信手段とを備えるサーバ装置から、前記第１パケット群を前記第１通信プロトコルに従って受信するステップと、前記サーバ装置から前記第２パケット群を前記第２通信プロトコルに従って受信するステップと、前記受信された第１パケット群および該受信された第２パケット群の少なくともいずれか一方に付された前記第１シーケンス番号、前記第２シーケンス番号および前記第３シーケンス番号に基づいて、該受信された第１パケット群と該受信された第２パケット群の配信順序を特定するステップと、前記配信順序に従って、前記受信された第１パケット群および第２パケット群を処理するステップとを実行させるためのプログラムを提供する。
【００１７】
また、本発明は、サーバ装置が、メッセージが第１通信プロトコルに従って分割された第１パケット群の各々に第１シーケンス番号を付すステップと、前記サーバ装置が、前記第１通信プロトコルと異なる第２通信プロトコルに従ってメッセージが分割された第２パケット群に含まれる第２パケットの各々に第２シーケンス番号を付すステップと、前記サーバ装置が、前記第１パケット群に対する前記第２パケットの各々の相対的な配信順序を示す第３シーケンス番号を、前記第１パケットおよび前記第２パケットの少なくともいずれか一方に付すステップと、前記サーバ装置が、前記第１シーケンス番号または前記第１シーケンス番号および前記第３シーケンス番号が付された前記第１パケット群を、前記第１通信プロトコルに従ってクライアント装置へ送信し、前記第２シーケンス番号または前記第２シーケンス番号および前記第３シーケンス番号が付された前記第２パケット群を前記第２通信プロトコルに従って前記クライアント装置へ送信するステップと、前記クライアント装置が、前記サーバ装置から前記第１パケット群を前記第１通信プロトコルに従って受信するステップと、前記クライアント装置が、前記サーバ装置から前記第２パケット群を前記第２通信プロトコルに従って受信するステップと、前記クライアント装置が、前記受信された第１パケット群および該受信された第２パケット群の少なくともいずれか一方に付された前記第１シーケンス番号、前記第２シーケンス番号および前記第３シーケンス番号に基づいて、該受信された第１パケット群と該受信された第２パケット群の配信順序を特定するステップと、前記クライアント装置が、前記配信順序に従って、前記受信された第１パケット群および第２パケット群を処理するステップとを備えるデータ配信方法を提供する。
【発明の効果】
【００１８】
本発明によれば、複数の通信プロトコルを併用しつつデータの順序性を保証したデータ配信を行うことができる。
【図面の簡単な説明】
【００１９】
【図１】第１実施形態に係るデータ配信システム１の機能構成を示す図。
【図２】サーバ装置１０のハードウェア構成を示す図。
【図３】クライアント装置２０のハードウェア構成を示す図。
【図４】サーバ装置１０とクライアント装置２０のソフトウェア構成を例示する図。
【図５】マルチキャストパケットのパケット構成を例示する図。
【図６】ユニキャストパケットのパケット構成を例示する図。
【図７】パケットの送信順序とシーケンス番号の関係を例示する図。
【図８】データ配信システム１の動作を例示するシーケンス図。
【図９】第２実施形態に係るデータ配信システム２の機能構成を示す図。
【図１０】サーバ装置１０Ｂとクライアント装置２０Ｂのソフトウェア構成を例示する図。
【図１１】配信単位５１から配信されるメッセージを例示する図。
【図１２】パケットの送信順序とシーケンス番号の関係を例示する図。
【発明を実施するための形態】
【００２０】
１．第１実施形態
１−１．構成
図１は、本発明の第１実施形態に係るデータ配信システム１の構成を示す図である。データ配信システム１は、サーバ装置１０と、複数のクライアント装置２０、２０、…とを有する。サーバ装置１０は、株価変動や取引情報などの金融情報を含むメッセージ（ある書式を有するデータ、いわゆる電文）をクライアント装置２０へ配信する。このとき、サーバ装置１０は、配信するメッセージの種別等の条件に応じて通信プロトコルを選択する。クライアント装置２０は、サーバ装置１０から送信されるメッセージを受信し、受信したメッセージに応じた処理を行う。例えば、クライアント装置２０は、受信したメッセージに含まれる金融情報をリアルタイムでチャートに表示する。
【００２１】
サーバ装置１０は、第１付与手段１１と、第２付与手段１２と、第３付与手段１３と、送信手段１４とを有する。第１付与手段１１は、メッセージが第１通信プロトコルに従って分割されたパケット群（以下「第１パケット群」という）に含まれる第１パケットの各々にシーケンス番号（以下「第１シーケンス番号」という）を付す。第２付与手段１２は、第１通信プロトコルと異なる第２通信プロトコルに従ってメッセージが分割されたパケット群（以下「第２パケット群」という）に含まれる第２パケットの各々にシーケンス番号（以下「第２シーケンス番号」という）を付す。第３付与手段１３は、第１パケット群に対する第２パケットの各々の相対的な配信順序を示すシーケンス番号（以下「第３シーケンス番号」という）を、第１パケットおよび第２パケットの少なくともいずれか一方に付す。送信手段１４は、第１シーケンス番号または第１シーケンス番号と第３シーケンス番号が付された第１パケット群を、第１通信プロトコルに従ってクライアント装置２０へ送信し、第２シーケンス番号または第２シーケンス番号と第３シーケンス番号が付された第２パケット群を、第２通信プロトコルに従ってクライアント装置２０へ送信する。
【００２２】
クライアント装置２０は、第１受信手段２１と、第２受信手段２２と、特定手段２３と、処理手段２４とを有する。第１受信手段２１は、サーバ装置１０から送信されてくる第１パケット群を、第１通信プロトコルに従って受信する。第２受信手段２２は、サーバ装置１０から送信されてくる第２パケット群を、第２通信プロトコルに従って受信する。特定手段２３は、受信された第１パケット群と受信された第２パケット群に付された第１シーケンス番号、第２シーケンス番号及び第３シーケンス番号に基づいて、受信された第１パケット群と受信された第２パケット群の配信順序を特定する。処理手段２４は、配信順序に従って、受信された第１パケット群と第２パケット群を処理する。この例で、処理手段２４は、受信された第１パケット群からメッセージを生成するとともに、受信された第２パケット群からメッセージを生成し、生成したメッセージに対して予め定められた情報処理を行う。
【００２３】
図２は、サーバ装置１０のハードウェア構成を例示する図である。サーバ装置１０は、ＣＰＵ（Central Processing Unit）１０１と、ＲＯＭ（Read Only Memory）１０２と、ＲＡＭ（Random Access Memory）１０３と、ストレージ１０４と、通信インターフェース１０５とを有するコンピュータ装置である。ＣＰＵ１０１は、サーバ装置１０の各部を制御する制御装置（プロセッサ）である。ＲＯＭ１０２は、プログラムおよびデータを記憶する不揮発性の記憶装置である。ＲＡＭ１０３は、ＣＰＵ１０１がプログラムを実行する際の作業領域として機能する揮発性の主記憶装置である。ストレージ１０４は、プログラムおよびデータを記憶する不揮発性の補助記憶装置である。通信ＩＦ１０５は、ネットワーク３０を介した通信を行うためのインターフェースであり、この例では特に、サーバ装置１０と通信を行うためのインターフェースである。ネットワーク３０は、メッセージをサーバ装置１０からクライアント装置２０まで中継する。ネットワーク３０は、インターネットのようなオープンなネットワークでもよいし、データ配信システム１に固有のクローズドなネットワークでもよい。
【００２４】
この例で、ストレージ１０４（またはＲＯＭ１０２）に記憶されているデータ配信プログラムをＣＰＵ１０１が実行することにより、図１に示される機能が実装される。データ配信プログラムを実行しているＣＰＵ１０１は、第１付与手段１１、第２付与手段１２および第３付与手段１３の一例である。ＣＰＵ１０１、又はＣＰＵ１０１及び通信ＩＦ１０５は送信手段１４の一例である。
【００２５】
図３は、クライアント装置２０のハードウェア構成を例示する図である。クライアント装置２０は、ＣＰＵ２０１と、ＲＯＭ２０２と、ＲＡＭ２０３と、ストレージ２０４と、通信インターフェース２０５と、ディスプレイ２０６と、操作部２０７とを有するコンピュータ装置である。ＣＰＵ２０１は、クライアント装置２０の各部を制御する制御装置（プロセッサ）である。ＲＯＭ２０２は、プログラムおよびデータを記憶する不揮発性の記憶装置である。ＲＡＭ２０３は、ＣＰＵ２０１がプログラムを実行する際の作業領域として機能する揮発性の主記憶装置である。ストレージ２０４は、プログラムおよびデータを記憶する不揮発性の補助記憶装置である。
【００２６】
通信インターフェース２０５は、ネットワーク３０を介した通信を行うためのインターフェースであり、この例では特に、サーバ装置１０と通信を行うためのインターフェースである。ディスプレイ２０６は、ＣＰＵ２０１の制御下で、プログラムの実行結果などの情報を表示する装置である。操作部２０７はユーザによって操作され、操作された内容に応じた情報をＣＰＵ２０１へ出力する。なお、ディスプレイ２０６と操作部２０７とが一体として構成されていてもよい。例えば、クライアント装置２０はディスプレイ２０６と操作部２０７とが一体となったタッチスクリーンを有していてもよい。
【００２７】
この例で、ストレージ２０４（またはＲＡＭ２０３）に記憶されているデータ処理プログラムをＣＰＵ２０１が実行することにより、図１に示される機能が実装される。データ処理プログラムを実行しているＣＰＵ２０１、又はＣＰＵ２０１及び通信ＩＦ２０５は、第１受信手段２１および第２受信手段２２の一例である。また、ＣＰＵ２０１は、特定手段２３および処理手段２４の一例である。
【００２８】
図４は、サーバ装置１０とクライアント装置２０のソフトウェア構成を例示する図である。なお、図４には、サーバ装置１０とクライアント装置２０のソフトウェア構成全体ではなく、この実施形態に係る機能に関連する構成要素が図示されている。サーバ装置１０は、アプリケーション部１５１と、トランスポート部１５２とを有する。アプリケーション部１５１は、クライアント装置２０へ配信するメッセージをトランスポート部１５２へ供給する。なお、メッセージは、他の装置から例えば通信ネットワークを介して取得されるデータであってもよく、また、サーバ装置１０が生成するデータであってもよい。この例で、サーバ装置１０は、メッセージとして、系列データとスナップショットとの２種類のデータをクライアント装置２０へ配信する。系列データは、サーバ装置１０から順次配信され、その順序に従って提示または解析されることによって意味をなす（意味が増える）データである。この例で、系列データは、予め定められたタイミングごとの所定のデータ値の時間変化を示すデータである。系列データは、例えば、データ値（例えば株価）と、そのデータ値に対応する時刻を示す情報を含む。また、他の例として、系列データは、ある株式会社の株券に対する取引情報を含む。
【００２９】
スナップショットは、所定のデータ値のその時点までの時間変化を示すデータである。この例で、スナップショットは、その時点までのデータ値（例えば株価）の時間変化を示す情報と、この時間変化を示す情報を表示するために用いられる情報（例えば、銘柄名、株価チャートの表示座標や表示フォーマット等を示す情報）とを含む。スナップショットはデータ値のそれまでの時間変化を示す情報を含んでいるため、系列データに対してデータ量が多い。スナップショットは、金融情報の配信の開始が要求されたタイミングでのみ必要とされるデータである。一方、系列データは、前回送信されたメッセージ（系列データまたはスナップショット）に対する差分（アップデート）を示すデータであり、配信を要求した全てのクライアント装置２０に対して逐次送信される。
【００３０】
例えば、あるユーザがクライアント装置２０を用いてある銘柄の取引情報を閲覧するとき、クライアント装置２０は、まずその銘柄に関連するその時点での最新の全データセットであるスナップショットを受信する。その後、クライアント装置２０は更新内容を示すデータセット（系列データ）を逐次受信していく。これにより、取引が開始されたタイミングではなく取引の途中でクライアント装置２０がサーバ装置１０へ取引情報の取得要求を行った場合であっても、ユーザは、取引が開始されたタイミングから取引情報を取得している場合と同様の取引情報を閲覧できる。
【００３１】
ところで、系列データやスナップショットは、その順序がクライアント装置２０側で特定される必要がある。この点について、金融情報の具体例として、株式市場における株価を考える。株価は市況の変化に応じて時々刻々と変化する。株式の取引を行うユーザは、株の時間的な変化を見て将来の株価の変化を予測し、売買の意思決定をする。例えば、ある単一の時刻（時間軸上の１点）における、ある銘柄の株価が１０００円だったという情報があったとしても、それは売買の意思決定においてはほとんど意味を持たない。時間的にだんだん株価が上昇してきて１０００円になったのか、逆にだんだん下降してきて１０００円になったのかで、その意味はまったく異なる。
【００３２】
なお、サーバ装置１０から配信される全ての系列データやスナップショットについて順序が特定される必要はない。例えば、株式会社Ａの株券に対する取引情報と、株式会社Ｂの株券に対する取引情報では、約定や気配の順が厳密に保たれる必要はなく、株式会社Ａの株券に限定して約定や気配の順序が保たれていればよい。このように、全ての系列データとスナップショットに対して順序が特定可能である必要はなく、特定の属性を有する系列データとスナップショット（例えば、株式会社Ａの取引情報）の間において順序が特定可能であればよい。
【００３３】
アプリケーション部１５１は、メッセージの種類に応じて通信プロトコルを選択する。この例で、アプリケーション部１５１は、系列データの場合はマルチキャストの通信プロトコル（第１通信プロトコルの一例）を選択し、スナップショットの場合はユニキャストの通信プロトコル（第２通信プロトコルの一例）を選択する。この例で、スナップショットの送信には、コネクションレスのプロトコルであるＵＤＰ（User Datagram Protocol）が用いられる。一方、系列データの送信にはＵＤＰを用いたＩＰマルチキャストが用いられる。
【００３４】
ＩＰマルチキャスト通信はユニキャスト通信を用いた場合と比較してクライアント数に対するサーバへの負荷やネットワークリソースの使用効率が良い。しかし、スナップショットは、配信の開始を要求したクライアント装置２０に対してのみ送信すればよいデータであるため、そのようなデータをマルチキャストすることは効率的でない。特に、スナップショットをマルチキャストすると、ネットワークやクライアント装置２０のリソースを無駄に消費してしまう。なぜなら、多数のクライアント装置２０が同時に各々に必要な複数の銘柄の取引情報をサーバ装置１０へリクエストすると、全てのクライアント装置２０に自装置が要求したスナップショットに加えて他のクライアント装置２０が要求したスナップショット（すなわち自装置が要求していないスナップショット）が到着してしまうためである。そこで、この例では、サーバ装置１０は、スナップショットを効率よく通信するために、あるクライアント装置２０に対する通信で、ある銘柄に対して最新のスナップショットを送信する場合にはユニキャスト通信を行い、一方、系列データについては多数のクライアント装置２０へ効率よく送信できるマルチキャスト通信を用いる。
【００３５】
トランスポート部１５２は、アプリケーション部１５１から供給されるメッセージを、選択された通信プロトコルに従って、そのサイズに応じた数のパケット群に分割し、送信する。この例で、トランスポート部１５２は、スナップショットをユニキャストパケット（第１パケットの一例）に分割する一方、系列データをマルチキャストパケット（第２パケットの一例）に分割する。
【００３６】
図５は、マルチキャストパケットの構成を例示する図である。トランスポート部１５２は、マルチキャストパケットに、「種別フラグ」と「マルチキャストシーケンス番号」と「宛先ＩＤ」との情報を付す。なお、マルチキャストパケットにはこれ以外の情報が付されてもよい。「種別フラグ」は、パケットの種類を表すフラグである。「種別フラグ」は、例えば最後のパケットである旨を示すフラグや、ackを含むパケットを送信する必要があることを示すフラグである。最後のパケットとは、一のメッセージが分割された複数のパケットのうちの最後のパケットである。「マルチキャストシーケンス番号」はマルチキャストパケットに付されるシーケンス番号（第１シーケンス番号の一例）である。「マルチキャストシーケンス番号」は、マルチキャストパケットが送信されるごとにインクリメントされる。「宛先ＩＤ」はマルチキャストパケットがどのクライアント宛であるかを示す、接続ごとに一意な識別情報である。「データ」は分割された系列データまたは接続管理データである。
【００３７】
図６は、ユニキャストパケットの構成を例示する図である。トランスポート部１５２は、ユニキャストパケットに、「種別フラグ」と「ユニキャストシーケンス番号」と「マルチキャストシーケンス番号」と「ackシーケンス番号」との情報を付す。なお、ユニキャストパケットにはこれ以外の情報が付されてもよい。「種別フラグ」は、パケットの種類を表すフラグであり、マルチキャストパケットに含まれる「種別フラグ」と同様である。「ユニキャストシーケンス番号」は、ユニキャストパケットに付されるシーケンス番号（第２シーケンス番号の一例）である。「ユニキャストシーケンス番号」は、ユニキャストパケットが送信されるごとにインクリメントされる。「マルチキャストシーケンス番号」は、このユニキャストパケットが送信される直前に送信されたマルチキャストパケットのマルチキャストシーケンス番号である。すなわち、ユニキャストパケットには、直近のタイミングにおいてマルチキャストパケットに付されたマルチキャストシーケンス番号が付される。換言すると、ユニキャストパケットに含まれるマルチキャストシーケンス番号は、そのユニキャストパケットによって示されるスナップショットが、どの時点までの系列データを含んでいるかを示す情報である。ユニキャストパケットに付されるマルチキャストシーケンス番号は第３シーケンス番号の一例である。「ackシーケンス番号」は、接続の対向から送信され到着したパケットのユニキャストシーケンス番号である。「ackシーケンス番号」は、「種別フラグ」が特定の値である場合にのみ含まれる。「データ」は分割されたデータ、すなわち分割されたスナップショットまたは接続管理データである。
【００３８】
図７は、パケット群の送信順序とシーケンス番号の関係を例示する図である。この例で、マルチキャストパケットＰ１１、Ｐ１２、…、Ｐ１６にはそれぞれ、マルチキャストシーケンス番号として「ＭＳ１」、「ＭＳ２」、…、「ＭＳ６」が付される。ユニキャストパケットＰ２１、Ｐ２２、Ｐ２３にはそれぞれ、ユニキャストシーケンス番号として「ＵＣ１」、「ＵＣ２」、「ＵＣ３」が付される。マルチキャストパケットＰ１１、Ｐ１２が送信された後にユニキャストパケットＰ２１が送信される場合、ユニキャストパケットＰ２１には、その直前に送信されたマルチキャストパケットのマルチキャストシーケンス番号である「ＭＳ２」が付される。その後、マルチキャストパケットＰ１３〜Ｐ１５が送信され、その後ユニキャストパケットＰ２２が送信される場合、ユニキャストパケットＰ２２には、直前に送信されたマルチキャストパケットのマルチキャストシーケンス番号である「ＭＳ５」が付される。また、ユニキャストパケットＰ２２が送信された後に続けてユニキャストパケットＰ２３が送信される場合、ユニキャストパケットＰ２３にも、直近のタイミングにおいてマルチキャストパケットに付されたマルチキャストシーケンス番号である「ＭＳ５」が付される。
【００３９】
図４の説明に戻る。サーバ装置１０のトランスポート部１５２は、送信したパケットを必要に応じて再送するために、送信したパケットをバッファ領域１５３にバッファする。トランスポート部１５２は、クライアント装置２０からパケットの再送要求を受信した場合にバッファ領域１５３に保持しているパケットを再送する。このとき、トランスポート部１５２は、再送を要求されたパケットがマルチキャストパケットである場合であっても、再送を要求されたパケットをユニキャストしてもよい。
【００４０】
クライアント装置２０は、マルチキャスト受信部２５１と、ユニキャスト送受信部２５２と、順序特定部２５３と、アプリケーション部２５４とを有する。マルチキャスト受信部２５１は、サーバ装置１０がマルチキャストしたマルチキャストパケットを受信する。ユニキャスト送受信部２５２は、サーバ装置１０との間でユニキャストパケットを送受信する。マルチキャスト受信部２５１とユニキャスト送受信部２５２は、パケットの整列や欠落の検出を行うためのバッファ領域２５５、２５６をそれぞれ有している。
【００４１】
順序特定部２５３は、受信されたユニキャストパケットとマルチキャストパケットに含まれるマルチキャストシーケンス番号とユニキャストシーケンス番号とに基づいて、ユニキャストパケットとマルチキャストパケットの順序関係を特定する。複数のマルチキャストパケット間におけるパケットの順序関係は、マルチキャストパケットに付されたマルチキャストシーケンス番号によって特定される。同様に、複数のユニキャストパケット間におけるパケットの順序関係は、ユニキャストパケットに付されたユニキャストシーケンス番号によって特定される。更に、マルチキャストパケットとユニキャストパケットの間の順序関係は、ユニキャストパケットに含まれるマルチキャストシーケンス番号をマルチキャストパケットに含まれるマルチキャストシーケンス番号と比較することで特定される。また、順序特定部２５３は、受信されたユニキャストパケットに含まれるユニキャストシーケンス番号とマルチキャストパケットに含まれるマルチキャストシーケンス番号に基づいてパケットの欠落を検出し、欠落を検出した場合に再送要求を行う。
【００４２】
この例で、スナップショット（ユニキャストパケット）が届くまでの系列データ（マルチキャストパケット）がバッファ領域２５５に保存される。順序特定部２５３は、受信された各パケットに付されたシーケンス番号に基づき、パケットからメッセージを復元する。順序特定部２５３は、スナップショットが到着した時点で、そのスナップショットに含まれるマルチキャストシーケンス番号より小さいマルチキャストシーケンス番号が付された系列データを、そのスナップショットに含まれるデータとして破棄する。順序特定部２５３は、そのスナップショットに含まれるマルチキャストシーケンス番号より大きいマルチキャストシーケンス番号が付されたマルチキャストパケットの系列データを、有効なデータとしてスナップショットとともにアプリケーション部２５４に引き渡す。アプリケーション部２５４は、スナップショットや系列データに応じた処理を行う。例えば、アプリケーション部２５４は、スナップショットや系列データによって示される金融情報をディスプレイ２０６に表示する。
【００４３】
１−２．動作例
図８は、データ配信システム１の動作を例示するシーケンス図である。まず、あるクライアント装置２０（以下「クライアント装置２０ａ」とする）のユーザが、操作部２０７を用いて、ある銘柄の取引情報をサーバ装置１０に要求する操作を行う。クライアント装置２０ａのＣＰＵ２０１は、操作部２０７から出力される情報に応じて、指定された銘柄の取引情報の配信開始要求を、ネットワーク３０を介してサーバ装置１０へ送信する（Ｓ１０１、Ｓ１０２）。
【００４４】
一方、サーバ装置１０は、系列データのマルチキャストを逐次行う（Ｓ１０３、Ｓ１０４）。系列データのマルチキャストパケットには、マルチキャストシーケンス番号が含まれる。マルチキャストされた系列データは、ネットワーク３０を介して複数のクライアント装置２０（図８の例ではクライアント装置２０ａ、２０ｂ）へ配信される（Ｓ１０５、Ｓ１０６、Ｓ１０７、Ｓ１０８）。クライアント装置２０ａ、２０ｂは、受信した系列データをバッファ領域２５５に一時的に記憶しておく。
【００４５】
さて、サーバ装置１０のＣＰＵ１０１は、クライアント装置２０ａから配信開始要求を受信すると、まず、受信した配信開始要求に対応するスナップショットをクライアント装置２０ａへ送信する（Ｓ１０９）。このスナップショットには、ユニキャストシーケンス番号が付されるとともに、直前に送信されたマルチキャストパケットのマルチキャストシーケンス番号、すなわち「ＭＳ１２」が付される。ユニキャストされたスナップショットは、ネットワーク３０を介してクライアント装置２０ａへ配信される（Ｓ１１０）。また、ＣＰＵ１０１は、ユニキャスト通信とは別途、系列データのマルチキャストを逐次行う（Ｓ１１１、Ｓ１１２）。マルチキャストされた系列データは、ネットワーク３０を介してクライアント装置２０ａ、２０ｂへ配信される（Ｓ１１３、Ｓ１１４、Ｓ１１５、Ｓ１１６）。
【００４６】
クライアント装置２０ａのＣＰＵ２０１は、サーバ装置１０からスナップショットを受信すると、マルチキャスト用のバッファ領域２５５を確認し、バッファ領域２５５に記憶されている系列データとの順序関係を確認する。この例で、ＣＰＵ２０１は、スナップショットに付されたマルチキャストシーケンス番号を参照することによって、そのスナップショットがどのマルチキャストパケットの後に配信されたかを特定する。ＣＰＵ２０１は、受信したスナップショットとそのスナップショットより後に配信された系列データとを後続処理に引き渡す。ＣＰＵ２０１は、スナップショットと系列データとに基づいて取引情報の表示処理などの各種の処理を実行する。
【００４７】
この実施形態では、場合により送信先（単一の装置）を変えて送信するユニキャストパケットと、受信可能状態になっている全ての送信先に同一パケットが届くマルチキャストパケットの間で、一貫した送信順序関係が定まる。これにより、複数の通信プロトコルを併用しつつデータの順序性を保証したデータ配信を行うことができる。
【００４８】
２．第２実施形態
図９は、第２実施形態に係るデータ配信システム２の構成を示す図である。データ配信システム２は、サーバ装置１０Ｂと、複数のクライアント装置２０Ｂ、２０Ｂ、…とを有する。サーバ装置１０Ｂの構成が上述した第１実施形態に係るサーバ装置１０と異なる点は、第３付与手段１３に代えて、第３付与手段１３Ｂを有している点と、送信手段１４に代えて、送信手段１４Ｂを有している点である。クライアント装置２０Ｂの構成が上述した第１実施形態に係るクライアント装置２０と異なる点は、特定手段２３に代えて特定手段２３Ｂを有している点と、処理手段２４に代えて処理手段２４Ｂを有している点である。以下の説明においては、第１実施形態と同様の構成要素や処理については同じ符号を付して適宜その説明を省略する。
【００４９】
第３付与手段１３Ｂは、サーバ装置１０Ｂがクライアント装置２０Ｂへ配信するメッセージに第３シーケンス番号を付す。送信手段１４Ｂは、第１シーケンス番号が付された第１パケット群を第１通信プロトコルに従ってクライアント装置２０Ｂへ送信し、第２シーケンス番号が付された第２パケット群を第２通信プロトコルに従ってクライアント装置２０Ｂへ送信する。特定手段２３Ｂは、受信された第１パケット群に付された第１シーケンス番号と受信された第２パケット群に付された第２シーケンス番号とに基づいてメッセージを復元し、復元されたメッセージに付された第３シーケンス番号に基づいてメッセージの配信順序を特定する。処理手段２４Ｂは、特定された配信順序に従って、復元されたメッセージを処理する。
【００５０】
図１０は、サーバ装置１０Ｂとクライアント装置２０Ｂのソフトウェア構成を例示する図である。なお、サーバ装置１０Ｂとクライアント装置２０Ｂのハードウェア構成は、上述した第１実施形態のサーバ装置１０とクライアント装置２０と同様である。サーバ装置１０Ｂは、アプリケーション部１５１Ｂと、トランスポート部１５２Ｂとを有する。アプリケーション部１５１Ｂは、複数の配信単位５１ａ、５１ｂ、…を有する。配信単位５１ａ、５１ｂ、…は金融情報を含むメッセージをトランスポート部１５２Ｂに引き渡す。なお、以下の説明では、配信単位５１ａ、５１ｂ、…を各々区別する必要がない場合は、これらを「配信単位５１」と称する。
【００５１】
配信単位５１は、サーバ装置１０Ｂ上で動作するソフトウェアにより実現される機能である。配信単位５１は、メッセージを配信する。配信されるメッセージは系列データまたはスナップショットである。メッセージは、ヘッダおよび本文を含む。ヘッダは、シーケンス番号（またはＩＤ）を含む。シーケンス番号（第３シーケンス番号の一例）は、配信単位ごとにメッセージに割り振られる番号であり、１単位ずつ単調に増加する番号である。本文は、金融情報を含む。配信単位５１は、メッセージを配信すべき装置のアドレスの一覧（グループ情報）を有している。メッセージが系列データである場合には、配信単位５１はこの一覧に含まれるアドレスの複数の装置に系列データを送信する通信プロトコルとしてマルチキャストの通信プロトコルを選択する。一方、メッセージがスナップショットである場合には、配信単位５１は、ユニキャストの通信プロトコルを選択する。
【００５２】
図１１は、配信単位５１から配信されるメッセージを例示する図である。この例で、メッセージのヘッダはシーケンス番号を有する。メッセージの本文は、金融情報として銘柄、価格および出来高の情報を含む。例えば、シーケンス番号１の金融情報は、Ａ社の株式について１２５０円で１００株の売買が成立したことを示している。シーケンス番号が小さいものが時間的に先に配信される。配信単位５１からは、系列データとスナップショットとが混在して配信される。この例では、図示のように、ひとつの配信単位５１から複数の銘柄のメッセージが配信される。各銘柄のメッセージは他の銘柄のメッセージとは関連性がない。すなわち、メッセージは銘柄毎に独立した関連性を有する。
【００５３】
なお、以下の説明では、説明の便宜上、メッセージに付されるシーケンス番号を「メッセージシーケンス番号」と称して説明する。メッセージシーケンス番号は、第３シーケンス番号の一例である。すなわち、この実施形態では、サーバ装置１０Ｂから配信される系列データとスナップショットには、配信単位５１によってメッセージシーケンス番号が第３シーケンス番号として付される。なお、配信単位５１は、メッセージ（すなわち系列データとスナップショット）に、その配信単位５１に割り当てられているグループ番号を付与してもよい。
【００５４】
トランスポート部１５２Ｂは、配信単位５１から引き渡されるメッセージを、選択された通信プロトコルに従って、そのサイズに応じた数のパケット群に分割し、送信する。上述の実施形態に係るトランスポート部１５２は、ユニキャストパケットにその直前に送信されたマルチキャストパケットのマルチキャストシーケンス番号（第３シーケンス番号）を付した。しかし、この実施形態に係るトランスポート部１５２Ｂは、ユニキャストパケットにマルチキャストシーケンス番号を付さない。
【００５５】
クライアント装置２０Ｂのソフトウェア構成が上述の実施形態に係るクライアント装置２０のソフトウェア構成と異なる点は、順序特定部２５３に代えて順序特定部２５３Ｂを有する点である。順序特定部２５３Ｂは、ユニキャストパケットに含まれるユニキャストシーケンス番号を用いて、分割されているスナップショットを復元する。また、順序特定部２５３Ｂは、マルチキャストパケットに含まれるユニキャストシーケンス番号を用いて分割されている系列データを復元する。さらに、順序特定部２５３Ｂは、復元したユニキャストパケットと系列データに含まれるメッセージシーケンス番号に従って、スナップショットと系列データとを整列する。なお、順序特定部２５３Ｂは、復元したスナップショットと系列データに、配信単位を識別するグループ番号が付されている場合には、このグループ番号とメッセージシーケンス番号とに従って、スナップショットと系列データとを配信単位ごとに整列する。順序特定部２５３Ｂは、スナップショットが到着した時点で、そのスナップショットに含まれるメッセージシーケンス番号より小さいメッセージシーケンス番号が付された系列データは、そのスナップショットに含まれるデータとして破棄し、それ以降の系列データを有効なデータとしてスナップショットとともにアプリケーション部２５４に引き渡す。
【００５６】
３．変形例
以上、本発明の実施形態について説明したが、本発明は上述した実施形態に限定されることなく、他の様々な形態で実施可能である。以下にその例を示す。なお、以下の各態様を組み合わせてもよい。
【００５７】
３−１．変形例１
上述の第１実施形態に係るサーバ装置１０は、複数の通信プロトコル（通信経路）にまたがった全体の配信順序を特定するために、ユニキャストパケットにマルチキャストシーケンス番号を付与した。通信経路全体の配信順序を特定するための手法はこれに限らない。例えば、サーバ装置１０は、マルチキャストパケットにユニキャストパケットのシーケンス番号を付してもよい。この例について図１２を参照しつつ説明する。
【００５８】
図１２は、マルチキャストパケットにユニキャストパケットのシーケンス番号を付す場合の、パケットの送信順序とシーケンス番号の関係を例示する図である。図１２は、上述した第１実施形態の図７に対応する。この例では、ユニキャストパケットＰ４１、Ｐ４２、Ｐ４３には、ユニキャストシーケンス番号が付される。しかし、ユニキャストパケットＰ４１、Ｐ４２、Ｐ４３には、マルチキャストシーケンス番号は付されない。マルチキャストパケットＰ３１、Ｐ３２、…、Ｐ３６には、ユニキャストパケットが送信された直後に送信されるマルチキャストパケットであるか否かを示すユニキャスト直後ビットbitが含まれる。ＣＰＵ１０１は、ユニキャストパケットが送信された直後に送信されるマルチキャストパケットのユニキャスト直後ビットbitを立て、このビットが立っているマルチキャストパケットに、直前に送信されたユニキャストパケットのユニキャストシーケンス番号を付与する。図１２の例では、マルチキャストパケットＰ３３、Ｐ３６のユニキャスト直後ビットが「１」であり、マルチキャストパケットＰ３３にはユニキャストパケットＰ４１のユニキャストシーケンス番号である「ＵＣ１」が含まれる。また、マルチキャストパケットＰ３６にはユニキャストパケットＰ４３のユニキャストシーケンス番号である「ＵＣ３」が含まれる。
【００５９】
また、他の例として、サーバ装置１０が、ユニキャストパケットにマルチキャストパケットのシーケンス番号を付するとともに、マルチキャストパケットにユニキャストパケットのシーケンス番号を付してもよい。
【００６０】
３−２．変形例２
上述の第１及び第２実施形態では、サーバ装置１０（又はサーバ装置１０Ｂ）から配信されるメッセージとして金融情報のデータを用いた。メッセージは金融情報に限られない。例えば、第１の通信プロトコルに従って送信されるメッセージ（系列データ）は、自然科学の実験で得られる実験データであってもよい。また、第１の通信プロトコルに従って送信されるメッセージは、データ値の時間変化を示すデータに限らず、例えば順序性を有しないデータなど、他のデータであってもよい。また、第２の通信プロトコルに従って送信されるメッセージも、スナップショットに限られない。
【００６１】
３−３．変形例３
上述の実施形態では、マルチキャストの通信プロトコルと、ユニキャストの通信プロトコルを併用してデータ配信を行うシステムについて説明した。併用される通信プロトコルの種類は上述した実施形態で示したものに限られない。例えば、システムは、２種類のマルチキャスト通信プロトコルを併用する構成であってもよい。より詳細には、システムは、第１のクライアント群に一斉配信するマルチキャスト通信と、第２のクライアント群に一斉配信するマルチキャスト通信との２種類の通信経路を併用してもよい。例えば、システムが、特定のクライアント群に一斉配信するマルチキャスト通信と、第２のクライアントグループに一斉配信するマルチキャスト通信との２種類の通信経路を併用してもよい。
【００６２】
また、例えば、サーバ装置１０が、マルチキャスト通信をユニキャスト通信でエミュレートし、エミュレートしたマルチキャスト通信と、通常のユニキャスト通信を併用してもよい。
【００６３】
３−４．変形例４
上述の各実施形態において、系列データをマルチキャストしてスナップショットデータをユニキャストする第１モードと、系列データとスナップショットデータの両方をマルチキャストする第２モードとをユーザが選択できるようにしてもよい。この場合、ユーザが第１モードを選択した場合には、サーバ装置１０は、上述の各実施形態で説明した処理を行う。一方、ユーザが第２モードを選択した場合には、クライアント装置２０（クライアント装置２０Ｂ）は、第２モードが選択された旨をサーバ装置１０（サーバ装置１０Ｂ）へ通知する。サーバ装置１０は、第２モードが選択された場合は、全てのメッセージをマルチキャストする。この場合は、マルチキャストパケットを単一のクライアント装置２０に対して送信するために、マルチキャストパケットに特定のクライアント宛であることを明示する情報を付してもよい。
【００６４】
このように、メッセージを複数の通信経路（通信プロトコル）を併用して送信するモードと、単一の通信経路で送信するモードとのいずれかをユーザが選択してもよい。この場合、サーバ装置１０（サーバ装置１０Ｂ）は、一の通信プロトコルを選択する要求をクライアント装置２０（クライアント装置２０Ｂ）から受信すると、指定された一の通信プロトコルに従ってメッセージをクライアント装置２０（クライアント装置２０Ｂ）へ送信する。
【００６５】
３−５．変形例５
上述の各実施形態では、通信経路の信頼性を保つため、クライアント装置２０（クライアント装置２０Ｂ）のＣＰＵ２０１が、パケットの欠落を検知した場合にサーバ装置１０へ再送要求を行った。欠落パケットが再送される仕組みはこれに限られない。例えば、クライアント装置２０にパケットが到着したときに、到着したことを示す応答パケットをクライアント装置２０がサーバ装置１０へ送信し、サーバ装置１０は応答パケットが予め定められた期間内に到着しなかった場合に、パケットを再送してもよい。
【００６６】
また、安全性が保証されている通信経路を用いる場合には、その通信経路についてはサーバ装置１０とクライアント装置２０は欠落パケットの再送機能や順序を保つ機能を有していなくてもよい。
【００６７】
３−６．変形例６
上述の各実施形態において、サーバ装置１０（サーバ装置１０Ｂ）からメッセージを受信したクライアント装置２０（クライアント装置２０Ｂ）が、別の装置に対するサーバ装置として機能し、受信したメッセージを当該別の装置へ送信してもよい。また、サーバ装置１０（サーバ装置１０Ｂ）が、別の装置に対するクライアント装置として機能し、当該別の装置からメッセージを受信してもよい。
【００６８】
３−７．変形例７
上述の第２実施形態では、配信単位ごとにメッセージに付されるシーケンス番号を第３シーケンス番号として用いた。メッセージに付される第３シーケンス番号はこれに限られない。例えば、第３シーケンス番号は、銘柄ごとにメッセージに付されるシーケンス番号であってもよく、また、配信銘柄全体にわたってメッセージの配信順を一意に定めるシーケンス番号、すなわち全てのメッセージの通し番号であってもよい。例えば銘柄ごとにメッセージにシーケンス番号が付される場合であっても、クライアント装置２０ＢのＣＰＵ２０１は、メッセージに付されたシーケンス番号に従ってメッセージの配信順序を特定する。
【００６９】
また、上述の第１実施形態において、上述の第２実施形態と同様にメッセージにシーケンス番号が付されていてもよい。例えば、上述の第１実施形態において、配信単位ごとにメッセージにシーケンス番号が付されてもよく、また、銘柄ごとにメッセージにシーケンス番号が付されてもよい。
【００７０】
３−８．変形例８
上述の各実施形態に係るサーバ装置１０（サーバ装置１０Ｂ）によって実現される機能は、単体の装置によって実現されてもよく、また、複数の装置が協働することによって実現されてもよい。また、クライアント装置２０（クライアント装置２０Ｂ）によって実現される機能は、単体の装置によって実現されてもよく、また、複数の装置が協働することによって実現されてもよい。
【００７１】
３−９．変形例９
上述の各実施形態においてＣＰＵ１０１またはＣＰＵ２０１によって実行されるプログラムは、磁気記録媒体（磁気テープ、磁気ディスク（ＨＤＤ、ＦＤ（Flexible Disk））など）、光記録媒体（光ディスク（ＣＤ（Compact Disk）、ＤＶＤ（Digital Versatile Disk））など）、光磁気記録媒体、半導体メモリ（フラッシュＲＯＭなど）などのコンピュータ読取り可能な記録媒体に記憶した状態で提供されてもよい。また、このプログラムは、インターネットのようなネットワーク経由でダウンロードされてもよい。
【符号の説明】
【００７２】
１…データ配信システム、１０…サーバ装置、１１…第１付与手段、１２…第２付与手段、１３…第３付与手段、１４…送信手段、２０…クライアント装置、２１…第１受信手段、２２…第２受信手段、２３…特定手段、２４…処理手段。
【要約】
【課題】複数の通信プロトコルを併用しつつデータの順序性を保証したデータ配信を行う。
【解決手段】データ配信システム１は、サーバ装置１０とクライアント装置２０とを有する。サーバ装置１０は、メッセージが第１通信プロトコルに従って分割された第１パケット群に含まれる第１パケットの各々に第１シーケンス番号を付す。また、サーバ装置１０は、第２通信プロトコルに従ってメッセージが分割された第２パケット群に含まれる第２パケットの各々に第２シーケンス番号を付す。また、サーバ装置１０は、第１パケット群に対する第２パケットの各々の相対的な配信順序を示す第３シーケンス番号を、第１パケットおよび第２パケットの少なくともいずれか一方に付す。クライアント装置２０は、第１パケット群と第２パケット群をサーバ装置１０から受信すると、第１シーケンス番号、第２シーケンス番号及び第３シーケンス番号に基づいて、パケット群の配信順序を特定する。
【選択図】図１【図１】
0005549965.tif 000002
【図２】
0005549965.tif 000003
【図３】
0005549965.tif 000004
【図４】
0005549965.tif 000005
【図５】
0005549965.tif 000006
【図６】
0005549965.tif 000007
【図７】
0005549965.tif 000008
【図８】
0005549965.tif 000009
【図９】
0005549965.tif 000010
【図１０】
0005549965.tif 000011
【図１１】
0005549965.tif 000012
【図１２】
0005549965.tif 000013