JP2012080171A - 通信プログラム、通信装置および通信方法 - Google Patents
通信プログラム、通信装置および通信方法 Download PDFInfo
- Publication number
- JP2012080171A JP2012080171A JP2010220694A JP2010220694A JP2012080171A JP 2012080171 A JP2012080171 A JP 2012080171A JP 2010220694 A JP2010220694 A JP 2010220694A JP 2010220694 A JP2010220694 A JP 2010220694A JP 2012080171 A JP2012080171 A JP 2012080171A
- Authority
- JP
- Japan
- Prior art keywords
- data
- type
- transmission
- communication
- unit
- 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
Links
Images
Landscapes
- Time-Division Multiplex Systems (AREA)
Abstract
【課題】データの通信遅延を低減できる。
【解決手段】通信手段1aは、情報処理装置2との間で第1の種類のデータ3,4,5を所定の周期で通信するとともに、不定期に発生する第2の種類のデータ6を情報処理装置2に送信する。判定手段1bは、第2の種類のデータ6を取得すると、第1の種類のデータ4が発生するまでの残り時間内に第2の種類のデータ6の送信を完了できるか判定し、完了できないと判定すると第2の種類のデータ6を記憶手段1cに格納する。分割手段1dは、記憶手段1cに格納された第2の種類のデータ6から当該残り時間内に送信できるサイズの分割データ6aを抽出して通信手段1aに送信させる。分割手段1dは、その後、第1の種類のデータ4,5の送信が完了するたびに、記憶手段1cを参照して、第2の種類のデータ6のうちの未送信データにつき分割データ6b,6cを抽出して通信手段1aに送信させる。
【選択図】図1
【解決手段】通信手段1aは、情報処理装置2との間で第1の種類のデータ3,4,5を所定の周期で通信するとともに、不定期に発生する第2の種類のデータ6を情報処理装置2に送信する。判定手段1bは、第2の種類のデータ6を取得すると、第1の種類のデータ4が発生するまでの残り時間内に第2の種類のデータ6の送信を完了できるか判定し、完了できないと判定すると第2の種類のデータ6を記憶手段1cに格納する。分割手段1dは、記憶手段1cに格納された第2の種類のデータ6から当該残り時間内に送信できるサイズの分割データ6aを抽出して通信手段1aに送信させる。分割手段1dは、その後、第1の種類のデータ4,5の送信が完了するたびに、記憶手段1cを参照して、第2の種類のデータ6のうちの未送信データにつき分割データ6b,6cを抽出して通信手段1aに送信させる。
【選択図】図1
Description
本発明はデータの通信を制御する通信プログラム、通信装置および通信方法に関する。
情報処理システムでは、ネットワークを介して接続された情報処理装置間でデータの送受信が行われる。送受信されるデータには、相対的に重要度の高いデータおよび重要度の低いデータが含まれ得る。重要度の高いデータは、例えば緊急に通知しなければならないメッセージや複数の情報処理装置間でリアルタイムに共有されるべきデータ等である。また、重要度の低いデータは、例えば緊急性を要しないメッセージや処理を実行するまでの時間に余裕のあるデータ等である。
このような情報処理システムでは、重要度の高いデータを重要度の低いデータよりも優先して処理する仕組みが考えられている。
例えば、データの優先度に対応した複数のキューを設け、優先度の高いキューに格納されたデータから優先的に読み出して、送信する技術がある(例えば、特許文献1参照)。また、優先度の低いデータを通常伝送のキューに予め分割して格納しておき、当該キューから分割したデータを順次取り出して送信し、優先伝送のキューに重要度の高いデータが格納された場合には、優先伝送のキューのデータを優先して伝送する技術がある(例えば、特許文献2参照)。
例えば、データの優先度に対応した複数のキューを設け、優先度の高いキューに格納されたデータから優先的に読み出して、送信する技術がある(例えば、特許文献1参照)。また、優先度の低いデータを通常伝送のキューに予め分割して格納しておき、当該キューから分割したデータを順次取り出して送信し、優先伝送のキューに重要度の高いデータが格納された場合には、優先伝送のキューのデータを優先して伝送する技術がある(例えば、特許文献2参照)。
なお、優先度の高い入力要求の処理終了時間と優先度の低い入力要求の処理終了時間とを予想して比較し、優先度の低い入力要求の処理の方が早く完了する場合には、優先度の低い入力要求の処理の実行を禁止することで、優先度の指定通りの順序で処理を行う技術もある(例えば、特許文献3参照)。
しかしながら、従来のように優先度に応じたキューを設けたとしても、現在送信中のデータの送信が完了しなければ優先度の高いデータの送信を開始することができない。すなわち、現在の送信処理が完了するまで、優先度の高いデータの送信開始までに遅延が生じるという問題がある。
本発明はこのような点に鑑みてなされたものであり、データの通信遅延を低減した通信プログラム、通信装置および通信方法を提供することを目的とする。
上記課題を解決するために、通信プログラムが提供される。この通信プログラムを実行するコンピュータは、情報処理装置との間で第1の種類のデータを所定の周期で通信する。また、不定期に発生する第2の種類のデータを取得すると、第2の種類のデータのサイズに基づいて、第1の種類のデータが次に発生するまでの残り時間内に第2の種類のデータの送信を完了できるか否か判定し、完了できないと判定すると第2の種類のデータを記憶手段に格納する。そして、記憶手段に格納された第2の種類のデータから当該残り時間内に送信できるサイズにデータを分割した分割データを抽出して情報処理装置へ送信する。更に、第1の種類のデータの通信が完了するたびに、記憶手段を参照して、第2の種類のデータのうちの未送信データにつき分割データを抽出して情報処理装置へ送信する。
また、上記課題を解決するために通信装置が提供される。この通信装置は、通信手段、判定手段および分割手段を有する。通信手段は、情報処理装置との間で第1の種類のデータを所定の周期で通信するとともに、不定期に発生する第2の種類のデータを情報処理装置に送信する。判定手段は、第2の種類のデータを取得すると、第2の種類のデータのサイズに基づいて、第1の種類のデータが次に発生するまでの残り時間内に第2の種類のデータの送信を完了できるか否か判定し、完了できないと判定すると第2の種類のデータを記憶手段に格納する。分割手段は、記憶手段に格納された第2の種類のデータから当該残り時間内に送信できるサイズにデータを分割した分割データを抽出して通信手段に送信させる。分割手段は、その後、第1の種類のデータの送信が完了するたびに、記憶手段を参照して、第2の種類のデータのうちの未送信データにつき分割データを抽出して通信手段に送信させる。
また、上記課題を解決するために通信装置と情報処理装置とが接続された通信システムの通信方法が提供される。この通信方法では、通信装置が、情報処理装置との間で第1の種類のデータを所定の周期で通信する。通信装置が、不定期に発生する第2の種類のデータを取得すると、第2の種類のデータのサイズに基づいて、第1の種類のデータが次に発生するまでの残り時間内に第2の種類のデータの送信を完了できるか否か判定し、完了できないと判定すると第2の種類のデータを記憶手段に格納し、記憶手段に格納された第2の種類のデータから残り時間内に送信できるサイズにデータを分割した分割データを抽出して情報処理装置へ送信する。情報処理装置が、分割データを受信すると、当該分割データを分割データ記憶手段に格納する。通信装置が、第1の種類のデータの通信が完了するたびに、記憶手段を参照して、第2の種類のデータのうちの未送信データにつき分割データを抽出して情報処理装置へ送信する。情報処理装置が、第2の種類のデータを復元するための分割データを全て受信すると、分割データ記憶手段を参照して各分割データを結合し、第2の種類のデータを取得する。
上記通信プログラム、通信装置および通信方法によれば、データの通信遅延を低減できる。
以下、本実施の形態を図面を参照して説明する。
[第1の実施の形態]
図1は、第1の実施の形態の通信装置を示す図である。通信装置1は、情報処理装置2とデータ通信可能に接続されている。通信装置1は、通信手段1a、判定手段1b、記憶手段1cおよび分割手段1dを有する。
[第1の実施の形態]
図1は、第1の実施の形態の通信装置を示す図である。通信装置1は、情報処理装置2とデータ通信可能に接続されている。通信装置1は、通信手段1a、判定手段1b、記憶手段1cおよび分割手段1dを有する。
通信手段1aは、情報処理装置2との間で第1の種類のデータ3,4,5を所定の周期で通信する。ここで、通信手段1aは、第1の種類のデータ3,4,5を情報処理装置2へ送信するものとする。ただし、通信手段1aは、第1の種類のデータ3,4,5を情報処理装置2から受信するものであってもよい。通信手段1aは、不定期に発生する第2の種類のデータ6を情報処理装置2に送信する。
なお、図1中、第1の種類のデータ3,4,5および分割データ6c,6b,6aが重なる各矢印は、各データの送信方向(通信装置1から情報処理装置2へ向かう方向)を示している。
判定手段1bは、第1の種類のデータ3の送信後、第2の種類のデータ6を取得すると、第2の種類のデータ6のサイズに基づき、第1の種類のデータ4が次に発生するまでの残り時間内に第2の種類のデータ6の情報処理装置2への送信を完了できるか否かを判定する。判定手段1bは、完了できないと判定すると、取得した第2の種類のデータ6を記憶手段1cに格納する。判定手段1bは、完了できると判定すると、第2の種類のデータ6を通信手段1aに出力する。
記憶手段1cは、第2の種類のデータ6を記憶する。記憶手段1cに格納される第2の種類のデータ6は、判定手段1bにより第1の種類のデータ4が次に発生するまでの残り時間内に情報処理装置2への送信を完了できないと判定されたデータである。
分割手段1dは、記憶手段1cに格納された第2の種類のデータ6から第1の種類のデータ4が次に発生するまでの残り時間内に送信できるサイズにデータを分割した分割データ6aを抽出して通信手段1aに出力する。すると、通信手段1aは、分割手段1dから抽出した分割データ6aを情報処理装置2に送信する。
その後、分割手段1dは、第1の種類のデータ4,5の送信が完了するたびに、記憶手段1cを参照して、第2の種類のデータ6のうちの未送信データから分割データ6b、6cを抽出して通信手段1aに出力する。
すると、通信手段1aは、第1の種類のデータ4の送信完了後に分割手段1dから抽出した分割データ6bを情報処理装置2に送信する。また、通信手段1aは、第1の種類のデータ5の送信完了後に分割手段1dから取得した分割データ6cを情報処理装置2に送信する。
通信装置1によれば、判定手段1bにより第2の種類のデータ6が取得されると、第2の種類のデータ6のサイズに基づいて、第1の種類のデータ4が次に発生するまでの残り時間内に第2の種類のデータ6の情報処理装置2への送信を完了できるか否かが判定される。判定手段1bにより、完了できないと判定されると第2の種類のデータ6が記憶手段1cに格納される。分割手段1dにより、記憶手段1cに格納された第2の種類のデータ6から第1の種類のデータ4が次に発生するまでの残り時間内に送信できるサイズにデータを分割した分割データ6aが抽出されて出力される。更に、通信手段1aにより分割手段1dが出力した分割データ6aが情報処理装置2に送信される。その後、第1の種類のデータ4の送信が完了すると、分割手段1dにより、記憶手段1cが参照され、第2の種類のデータ6のうちの未送信データにつき分割データ6bが抽出されて出力される。通信手段1aにより、分割手段1dが出力した分割データ6bが情報処理装置2に送信される。第1の種類のデータ5の送信が完了すると、分割手段1dにより、記憶手段1cが参照され、第2の種類のデータ6のうちの未送信データにつき分割データ6cが抽出されて出力される。通信手段1aにより、分割手段1dが出力した分割データ6cが情報処理装置2に送信される。
このようにすれば、通信装置1は、定期的に発生する第1の種類のデータ3,4,5と重ならないように、第2の種類のデータ6を分割した分割データ6a,6b,6cを情報処理装置2に送信できる。このため、第1の種類のデータ3,4,5が発生するタイミングにおいて、第1の種類のデータ3,4,5を確実に情報処理装置2に送信開始できる。すなわち、第1の種類のデータの送信遅延を低減できる。
更に、分割データ6b,6cのサイズを第1の種類のデータ4,5の送信完了後に決定することで、たとえ第1の種類のデータ4,5で遅延が発生したとしても以後発生する第1の種類のデータの発生タイミングと重複することなく、それ以後の分割データを送信できる。これにより、第1の種類のデータの送信遅延を一層低減できる。
通信装置1は、情報の共有に高いリアルタイム性を要求される情報処理システムに適用する場合に特に有用である。以下に示す第2,3の実施の形態では、このように高いリアルタイム性を要求されるデータを送受信する情報処理システムに通信装置1を適用する例を説明する。
[第2の実施の形態]
図2は、第2の実施の形態の証券取引システムの全体構成を示す図である。この証券取引システムは、取引所サーバ100および証券会社サーバ200,300,400を有する。取引所サーバ100はネットワーク10を介して証券会社サーバ200,300,400と接続されている。ここで、取引所サーバ100と証券会社サーバ200,300,400とは単一の回線で接続されている。
図2は、第2の実施の形態の証券取引システムの全体構成を示す図である。この証券取引システムは、取引所サーバ100および証券会社サーバ200,300,400を有する。取引所サーバ100はネットワーク10を介して証券会社サーバ200,300,400と接続されている。ここで、取引所サーバ100と証券会社サーバ200,300,400とは単一の回線で接続されている。
取引所サーバ100は、証券取引所で管理されるサーバコンピュータである。取引所サーバ100は、証券会社サーバ200,300,400に対して、株価データやそれ以外のデータを配信する。株価データは、証券取引所が取り扱う銘柄の株価を含むデータである。株価データは、証券取引所と証券会社との間の同期に高いリアルタイム性を要求される。なぜなら、証券会社と顧客との取引上、各銘柄の価格変動は証券取引所と各証券会社とでリアルタイムに共有されることが望ましいからである。
株価データ以外のデータとしては、例えば、取引所の運用や各銘柄に関する各種お知らせを通知する案内データ等がある。このようなデータは、直接的に現在行われている証券取引に影響するものではない。すなわち、証券取引所および各証券会社の間での同期につき高いリアルタイム性を要しないものである。
このため、株価データはそれ以外のデータに比べて証券会社サーバ200,300,400への送信の優先度が高い。
証券会社サーバ200,300,400は、証券会社で管理されるサーバコンピュータである。証券会社サーバ200,300,400は、図示しないネットワークを介してエンドユーザの端末装置と接続されている。証券会社サーバ200,300,400は、取引所サーバ100から取得した株価データに基づいて、顧客との間の有価証券の売買等の取引を行う。
証券会社サーバ200,300,400は、証券会社で管理されるサーバコンピュータである。証券会社サーバ200,300,400は、図示しないネットワークを介してエンドユーザの端末装置と接続されている。証券会社サーバ200,300,400は、取引所サーバ100から取得した株価データに基づいて、顧客との間の有価証券の売買等の取引を行う。
ここで、取引所サーバ100は、株価データを定期的に生成する。株価データの生成の周期は、例えば1分である。また、取引所サーバ100は、株価データ以外のデータを不定期に生成する。この証券取引システムでは、優先度の高い株価データと、優先度の低いそれ以外のデータとを、単一の回線で効率的に送信する仕組みが求められる。以下では、そのような取引所サーバ100の構成を更に詳細に説明する。
また、以下では優先度の高いデータの一例として株価データを、優先度の低いデータの一例として案内データを挙げて説明する。ただし、優先度の高いデータ、優先度の低いデータには、これらに限らず種々のものが考えられる。
図3は、第2の実施の形態の取引所サーバのハードウェア構成を示す図である。取引所サーバ100は、CPU(Central Processing Unit)101、ROM(Read Only Memory)102、RAM(Random Access Memory)103、HDD(Hard Disk Drive)104、グラフィック処理装置105、入力インタフェース106、記録媒体読取装置107および通信インタフェース108を有する。
CPU101は、OS(Operating System)プログラムやアプリケーションプログラムを実行して、取引所サーバ100全体を制御する。
ROM102は、取引所サーバ100の起動時に実行されるBIOS(Basic Input / Output System)プログラムなどの所定のプログラムを記憶する。ROM102は、書き換え可能な不揮発性メモリであってもよい。
ROM102は、取引所サーバ100の起動時に実行されるBIOS(Basic Input / Output System)プログラムなどの所定のプログラムを記憶する。ROM102は、書き換え可能な不揮発性メモリであってもよい。
RAM103は、CPU101が実行するOSプログラムやアプリケーションプログラムの少なくとも一部を一時的に記憶する。また、RAM103は、CPU101の処理に用いられるデータの少なくとも一部を一時的に記憶する。
HDD104は、OSプログラムやアプリケーションプログラムを記憶する。また、HDD104は、CPU101の処理に用いられるデータを記憶する。なお、HDD104に代えて(または、HDD104と併せて)、SSD(Solid State Drive)など他の種類の不揮発性の記憶装置を用いてもよい。
グラフィック処理装置105は、モニタ11に接続される。グラフィック処理装置105は、CPU101からの命令に従って、画像をモニタ11に表示させる。
入力インタフェース106は、キーボード12やマウス13などの入力デバイスに接続される。入力インタフェース106は、入力デバイスから送られる入力信号をCPU101に出力する。
入力インタフェース106は、キーボード12やマウス13などの入力デバイスに接続される。入力インタフェース106は、入力デバイスから送られる入力信号をCPU101に出力する。
記録媒体読取装置107は、記録媒体14に記憶されたデータを読み取る読取装置である。記録媒体14には、例えば、取引所サーバ100に実行させるプログラムが記録されている。取引所サーバ100は、例えば、記録媒体14に記録された通信プログラムを実行することで、後述するようなデータ送信制御機能を実現することができる。すなわち、データ送信制御の処理内容を記述したプログラムは、コンピュータ読み取り可能な記録媒体14に記録して配布することが可能である。
記録媒体14としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリを使用できる。磁気記録装置には、HDD、フレキシブルディスク(FD)、磁気テープなどがある。光ディスクには、CD(Compact Disc)、CD−R(Recordable)/RW(ReWritable)、DVD(Digital Versatile Disc)、DVD−R/RW/RAMなどがある。光磁気記録媒体には、MO(Magneto-Optical disk)などがある。半導体メモリには、USB(Universal Serial Bus)メモリなどのフラッシュメモリがある。
通信インタフェース108は、ネットワーク10に接続される。通信インタフェース108は、ネットワーク10を介して証券会社サーバ200,300,400とデータ通信を行える。
なお、ネットワーク10に接続された他のサーバ装置(図示せず)に通信プログラムを格納しておいてもよい。その場合、取引所サーバ100は、当該サーバ装置からプログラムをダウンロードして実行することもできる。証券会社サーバ200,300,400も取引所サーバ100と同様のハードウェア構成により実現できる。
図4は、第2の実施の形態の取引所サーバの機能を示すブロック図である。取引所サーバ100は、株価データ生成部110、案内データ生成部120、送信キュー130および通信制御部140を有する。これらのユニットの機能は、CPU101が所定のプログラムを実行することにより、取引所サーバ100上に実現される。特に、通信制御部140の機能はCPU101が通信プログラムを実行することで実現される。ただし、これらのユニットの機能の全部または一部を専用のハードウェアで実装してもよい。
株価データ生成部110は、所定の周期T(例えばT=1分)で株価データを生成する。株価データ生成部110は、生成した株価データに優先度を示す情報を付加して送信キュー130に格納(PUT)する。
案内データ生成部120は、不定期に発生する取引所の運用や銘柄についてのお知らせ等を各証券会社や各証券会社の顧客へ通知するためのメッセージを含む案内データを生成する。案内データ生成部120は、生成した案内データに株価データよりも低い優先度を示す情報を付加して送信キュー130に格納(PUT)する。
送信キュー130は、取引所サーバ100が証券会社サーバ200,300,400に送信するデータを順次格納するための記憶部である。送信キュー130は、例えばリングバッファにより実現できる。
通信制御部140は、証券会社サーバ200,300,400に対する送信キュー130に格納されたデータの送信を制御する。通信制御部140は、判定部141、送信部142、通信情報取得部143、記憶部144および分割処理部145を有する。
判定部141は、送信キュー130に格納されたデータをFIFO(First In First Out)の手順により取り出す(GET)。判定部141は、取り出したデータの優先度を参照して、当該データが株価データであるか案内データであるかを判定する。判定部141は、判定結果に応じて以下の処理を行う。
(1)優先度高のデータ、すなわち株価データである場合、判定部141は送信部142に株価データを出力する。
(2)優先度低のデータ、すなわち案内データである場合、更に、案内データのサイズに基づいて、次に株価データが発生するまでの間に証券会社サーバ200,300,400に対する案内データ全体の送信を完了できるか否かを判定する。判定部141は、完了できると判定すると、案内データ全体を送信部142に出力する。一方、完了できないと判定すると、記憶部144に案内データを格納する。判定部141は、当該判定処理に用いる情報を通信情報取得部143から取得できる。
(2)優先度低のデータ、すなわち案内データである場合、更に、案内データのサイズに基づいて、次に株価データが発生するまでの間に証券会社サーバ200,300,400に対する案内データ全体の送信を完了できるか否かを判定する。判定部141は、完了できると判定すると、案内データ全体を送信部142に出力する。一方、完了できないと判定すると、記憶部144に案内データを格納する。判定部141は、当該判定処理に用いる情報を通信情報取得部143から取得できる。
送信部142は、判定部141から株価データを取得すると、株価データを証券会社サーバ200,300,400に送信する。送信部142は、証券会社サーバ200,300,400に対する株価データの送信開始時刻、送信完了時刻および送信した株価データのデータサイズを通信情報取得部143に通知する。
送信部142は、判定部141から案内データを取得すると、案内データを証券会社サーバ200,300,400に送信する。送信部142は、分割処理部145から分割データを取得すると、分割データを証券会社サーバ200,300,400に送信する。ここで、分割データとは、記憶部144に格納されたデータのうち分割処理部145により抽出されたデータをいう。
通信情報取得部143は、送信部142から取得する株価データの送信開始時刻、送信完了時刻およびデータサイズに基づいて、送信部142によるデータ送信の通信速度を計測する。通信情報取得部143は、取得した送信開始時刻および通信速度等の情報を判定部141に出力する。
記憶部144は、未送信データを記憶する。未送信データには、判定部141により記憶部144に格納される案内データが含まれる。また、未送信データには、送信済みの分割データを除く未送信部分の残データが含まれる。
分割処理部145は、記憶部144に格納された案内データから、次に株価データが発生するまでの間に送信できるサイズの分だけ分割データを抽出し、送信部142に出力する。分割処理部145は、記憶部144に残データが格納されている場合には、送信部142による株価データの送信が完了するたびに、次に株価データが発生するまでの間に送信できるサイズの分だけ分割データを抽出し、送信部142に出力する。
次に、証券会社サーバ200の機能構成を説明する。なお、証券会社サーバ300,400も証券会社サーバ200と同様の構成により実現できる。
図5は、第2の実施の形態の証券会社サーバの機能を示すブロック図である。証券会社サーバ200は、受信部210、分割データ記憶部220、受信キュー230およびサービス提供部240を有する。これらのユニットの機能は、証券会社サーバ200のCPUが所定のプログラムを実行することにより、証券会社サーバ200上に実現される。ただし、これらのユニットの機能の全部または一部を専用のハードウェアで実装してもよい。
図5は、第2の実施の形態の証券会社サーバの機能を示すブロック図である。証券会社サーバ200は、受信部210、分割データ記憶部220、受信キュー230およびサービス提供部240を有する。これらのユニットの機能は、証券会社サーバ200のCPUが所定のプログラムを実行することにより、証券会社サーバ200上に実現される。ただし、これらのユニットの機能の全部または一部を専用のハードウェアで実装してもよい。
受信部210は、取引所サーバ100から株価データを受信する。受信部210は、受信キュー230に株価データを格納(PUT)する。受信部210は、取引所サーバ100から案内データを受信する。受信部210は、受信キュー230に案内データを格納する(PUT)。受信部210は、取引所サーバ100から分割データを受信する。受信部210は、分割データ記憶部220に分割データを格納する。受信部210は、結合部211を有する。
結合部211は、分割データ記憶部220に案内データの全体を復元するのに必要な全ての分割データが格納されている場合、全分割データを結合して案内データを復元する。受信部210は、結合部211により復元された案内データを受信キュー230に格納する(PUT)。ただし、復元のタイミングは、株価データの受信タイミングと重複しないタイミングであるとする。株価データの受信遅延を低減するためである。
受信キュー230は、受信部210が受信したデータを順次格納するための記憶部である。受信キュー230は、例えばリングバッファにより実現できる。受信キュー230には、受信部210によりサービス提供部240が扱う株価データおよび案内データが格納される。
サービス提供部240は、証券会社の顧客に対するサービスを提供するアプリケーションである。サービス提供部240は、受信キュー230に格納されたデータをFIFOの手順により取り出す(GET)。
サービス提供部240は、受信キュー230から株価データを取得すると、株価データに基づいて、顧客に対して各銘柄の現在の株価や株価の変動等の情報を提供する。サービス提供部240は、顧客との間で有価証券の売買等の取引を行う。また、サービス提供部240は、受信キュー230から案内データを取得すると、案内データに基づいて、証券取引システムの利用案内や銘柄情報等のお知らせを顧客に対して通知する。
図6は、未送信データ管理テーブルのデータ構造例を示す図である。未送信データ管理テーブル144aは、判定部141により記憶部144に格納される。未送信データ管理テーブル144aには、データ名、全サイズ、残サイズおよび未送信データ本体の項目が設けられている。各項目の横方向に並べられた情報同士が互いに関連付けられて、1つの未送信データの情報を示す。
データ名の項目には、データの名称が設定される。全サイズの項目には、当該データの全体のサイズが設定される。残サイズの項目には、未送信データのサイズである残サイズが設定される。未送信データ本体の項目には、未送信データの本体が設定される。
未送信データ管理テーブル144aには、例えば、データ名が“案内データ.dat”、全サイズが“3MB(Mega Bytes)”、残サイズが“2MB”、未送信データ本体が“・・・”という情報が設定される。これは、データ“案内データ.dat”が未だ完全に送信された状態でないことを示している。また、当該データにつき全体サイズが“3MB”、未送信分のデータサイズが“2MB”であること、未送信データ本体が“・・・”であることを示している。すなわち、1MB分のデータは証券会社サーバ200,300,400に送信済みであることを示している。
図7は、送信データのフォーマット例を示す図である。送信データフォーマット20には、通番フィールド21、優先度フィールド22、全サイズフィールド23、分割サイズフィールド24およびデータフィールド25が含まれる。
通番フィールド21には、送信パケットの通番がシーケンシャルに設定される。優先度フィールド22には、優先度高(“1”)であるか、優先度低(“0”)であるかを示すフラグが設定される。全サイズフィールド23には、データ全体のサイズが設定される。データ全体とは、分割データを全て結合したサイズに等しい。分割サイズフィールド24には、当該フォーマットで送信される送信データのサイズを示す。全サイズと分割サイズとが等しい場合、当該フォーマットで送信される送信データは分割されていないことを意味する。データフィールド25には、送信データの本体が設定される。
送信部142は、送信データフォーマット20に基づいて送信データ20a,20bを生成する。
送信データ20aは、株価データ生成部110が生成した株価データを送信するためのものである。送信データ20aには、例えば、通番フィールド21aに“10001”、優先度フィールド22aに“1”、全サイズフィールド23aに“1MB”、分割サイズフィールド24aに“1MB”、データフィールド25aに“株価データ.dat”が設定される。これは、当該データが“10001”番目に送信するデータであること、優先度高のデータであること、全体サイズが“1MB”であり、分割されていないこと、そのデータの本体が“株価データ.dat”であることを示している。なお、ここではデータ本体をデータの名称で示している。送信データ20bについても同様である。
送信データ20aは、株価データ生成部110が生成した株価データを送信するためのものである。送信データ20aには、例えば、通番フィールド21aに“10001”、優先度フィールド22aに“1”、全サイズフィールド23aに“1MB”、分割サイズフィールド24aに“1MB”、データフィールド25aに“株価データ.dat”が設定される。これは、当該データが“10001”番目に送信するデータであること、優先度高のデータであること、全体サイズが“1MB”であり、分割されていないこと、そのデータの本体が“株価データ.dat”であることを示している。なお、ここではデータ本体をデータの名称で示している。送信データ20bについても同様である。
送信データ20bは、案内データ生成部120が生成した案内データを送信するためのものである。送信データ20bには、例えば、通番フィールド21bに“10002”、優先度フィールド22bに“0”、全サイズフィールド23bに“3MB”、分割サイズフィールド24bに“1MB”、データフィールド25bに“案内データ.dat.0001”が設定されている。これは、当該データが“10002”番目に送信するデータであること、優先度低のデータであること、分割されたデータであり、全体サイズが“3MB”、今回送信する分割データのサイズが“1MB”であること、そのデータの本体が“案内データ.dat.0001”であることを示している。
ここで、分割データにつき、受信側でのデータ管理を容易とするため、分割データ名称の末尾に一連の分割データである旨を示す情報を付加してもよい。送信データ20bの例では、データフィールド25b中に設定されたデータのデータ名の末尾に“0001”を付加している。これは、分割データの最初のデータである旨を示す。2番目のデータには“0002”を付加する。3番目のデータには“0003”を付加する。4番目以降に関しても同様である。
図8は、分割データ管理テーブルのデータ構造例を示す図である。分割データ管理テーブル221は、受信部210により分割データ記憶部220に格納される。分割データ管理テーブル221には、データ名、全サイズ、分割サイズおよび分割データ本体の項目が設けられている。各項目の横方向に並べられた情報同士が互いに関連付けられて、1つの分割データの情報を示す。
データ名の項目には、データの名称が設定される。全サイズの項目には、当該データの全体のサイズが設定される。分割サイズの項目には、分割データのサイズが設定される。分割データ本体の項目には、分割データの本体が設定される。
分割データ管理テーブル221には、例えば、データ名が“案内データ.dat.0001”、全サイズが“3MB”、分割サイズが“1MB”、分割データ本体が“・・・”という情報が設定される。これは、分割データとして“案内データ.dat.0001”を取得しており、分割データを全て結合すると全体のサイズが“3MB”になることを示している。また、当該分割データのサイズが“1MB”であり、そのデータ本体が“・・・”であることを示している。
なお、上述したようにデータ名に付加された“0001”は分割データの最初のデータであることを示している。当該情報によって、結合部211は、この分割データが最初のデータであることを識別できる。2番目以降のデータにも順番に“0002”,“0003”,・・・が付加されている。このため、結合部211は、この番号の順に分割データを結合すれば元のデータを取得することができる。
次に、以上のような構成の証券取引システムのデータ送受信処理の手順を説明する。
図9は、第2の実施の形態のデータ送信処理を示すフローチャートである。以下、図9に示す処理をステップ番号に沿って説明する。
図9は、第2の実施の形態のデータ送信処理を示すフローチャートである。以下、図9に示す処理をステップ番号に沿って説明する。
[ステップS1]株価データ生成部110は、定期的に株価データを生成する。その周期Tは、例えば1分である。案内データ生成部120は、不定期に案内データを生成する。案内データの生成されるタイミングは、例えば、証券会社や証券会社の顧客に通知すべきメッセージが新たに発生したタイミングである。
[ステップS2]株価データ生成部110は、生成した株価データを送信キュー130にPUTする。その際、株価データ生成部110は、株価データに優先度が高い旨を示す情報(優先度“1”)を付加する。また、案内データ生成部120は、生成した案内データを送信キュー130にPUTする。その際、案内データ生成部120は、案内データに優先度が低い旨を示す情報(優先度“0”)を付加する。
[ステップS3]判定部141は、FIFOの手順により送信キュー130からデータをGETする。
[ステップS4]判定部141は、取得したデータが優先度高のデータであるか否か判定する。優先度高のデータである場合、処理をステップS5に進める。優先度低のデータである場合、処理をステップS6に進める。
[ステップS4]判定部141は、取得したデータが優先度高のデータであるか否か判定する。優先度高のデータである場合、処理をステップS5に進める。優先度低のデータである場合、処理をステップS6に進める。
[ステップS5]判定部141は、優先度の高い株価データの送信処理を行う。
[ステップS6]判定部141は、優先度の低い案内データの送信処理を行う。
このようにして、判定部141は、データに付加された優先度の情報に基づいて、各データの優先度を判定し、データの優先度に応じた送信処理を行う。
[ステップS6]判定部141は、優先度の低い案内データの送信処理を行う。
このようにして、判定部141は、データに付加された優先度の情報に基づいて、各データの優先度を判定し、データの優先度に応じた送信処理を行う。
図10は、第2の実施の形態の株価データ送信処理を示すフローチャートである。以下、図10に示す処理をステップ番号に沿って説明する。
[ステップS11]判定部141は、送信部142に株価データを出力する。送信部142は、通信情報取得部143に送信開始時刻X1および株価データのサイズY1を出力する。
[ステップS11]判定部141は、送信部142に株価データを出力する。送信部142は、通信情報取得部143に送信開始時刻X1および株価データのサイズY1を出力する。
[ステップS12]送信部142は、送信データ20aを生成し、証券会社サーバ200,300,400に対する株価データの送信を開始する。
[ステップS13]送信部142は、株価データの送信を完了する。
[ステップS13]送信部142は、株価データの送信を完了する。
[ステップS14]送信部142は、送信完了時刻X2を通信情報取得部143に出力する。
[ステップS15]通信情報取得部143は、通信速度V1を算出する。具体的には、V1=Y1/(X2−X1)の演算によりV1を算出できる。ここで、X2−X1の演算は、時刻X1から時刻X2までの時間を求める演算である。以下、時間の差分につき当該演算は同様の意味である。V1の単位は、例えば、bps(bits per second)である。
[ステップS15]通信情報取得部143は、通信速度V1を算出する。具体的には、V1=Y1/(X2−X1)の演算によりV1を算出できる。ここで、X2−X1の演算は、時刻X1から時刻X2までの時間を求める演算である。以下、時間の差分につき当該演算は同様の意味である。V1の単位は、例えば、bps(bits per second)である。
[ステップS16]通信情報取得部143は、送信開始時刻X1および通信速度V1を判定部141に出力する。判定部141は、通信情報取得部143から送信開始時刻X1および通信速度V1を取得する。
このように、通信情報取得部143は、送信部142による株価データの送信が行われるたびに、証券会社サーバ200,300,400との間の通信速度を算出し、判定部141に出力する。
なお、通信速度の算出は、株価データを複数回送信するごとに1回算出してもよい。例えば、株価データを5回送信するごとに1回としてもよい。
図11は、第2の実施の形態の案内データ送信処理を示すフローチャートである。以下、図11に示す処理をステップ番号に沿って説明する。
図11は、第2の実施の形態の案内データ送信処理を示すフローチャートである。以下、図11に示す処理をステップ番号に沿って説明する。
[ステップS21]判定部141は、前回株価データの送信開始時刻からの経過時間τを取得する。経過時間τは、現在時刻をτ0として、τ=τ0−X1の演算により求めることができる。
[ステップS22]判定部141は、案内データのサイズY2を取得する。
[ステップS23]判定部141は、次回株価データ発生までの残り時間ΔTを算出する。残り時間ΔTは、ΔT=T−τの演算により求めることができる。ここで、Tは株価データ生成部110が株価データを生成する周期である。
[ステップS23]判定部141は、次回株価データ発生までの残り時間ΔTを算出する。残り時間ΔTは、ΔT=T−τの演算により求めることができる。ここで、Tは株価データ生成部110が株価データを生成する周期である。
[ステップS24]判定部141は、通信情報取得部143から取得した通信速度V1に基づいて、残り時間ΔTで案内データ(サイズY2)を送信完了できるか否かを判定する。送信完了できる場合、処理をステップS25に進める。送信完了できない場合、処理をステップS26に進める。当該判定は、ΔT>Y2/V1であるか否かを判定することで行える。すなわち、本判定式を満たす場合、案内データの送信を完了できると判断する。本判定式を満たさない場合、案内データの送信を完了できないと判断する。
[ステップS25]判定部141は、案内データを送信部142に出力する。送信部142は、判定部141から取得した案内データに基づいて送信データ20bを生成し、証券会社サーバ200,300,400に送信する。ここで、本送信データは分割データを送信するものではないので、送信データフォーマット20における全サイズフィールド23および分割サイズフィールド24に対応する値は等しくなる。
[ステップS26]判定部141は、案内データに基づいて未送信データ管理テーブル144aを生成し、記憶部144に格納する。分割処理部145は、記憶部144に格納された未送信データ管理テーブル144aを参照して、案内データから分割データを抽出して送信部142に出力する。送信部142は、分割処理部145から取得した分割データを証券会社サーバ200,300,400に送信する。
このようにして、判定部141は残り時間ΔT内に案内データを送信完了できるか否かを判定し、完了できると判定する場合には、案内データを送信部142に出力する。一方、完了できないと判定する場合には、記憶部144に案内データを格納する。分割処理部145は、記憶部144に格納された案内データに基づいて、データの分割を行い送信部142に分割データを出力する。
次に、ステップS26に示した分割データの送信処理を詳細に説明する。
図12は、第2の実施の形態の分割データ送信処理を示すフローチャートである。以下、図12に示す処理をステップ番号に沿って説明する。
図12は、第2の実施の形態の分割データ送信処理を示すフローチャートである。以下、図12に示す処理をステップ番号に沿って説明する。
[ステップS31]分割処理部145は、分割データのサイズ(分割サイズ)Y3を算出する。分割サイズY3は、Y3=V1×ΔTの演算により求めることができる。
[ステップS32]分割処理部145は、記憶部144に格納された未送信データ管理テーブル144aを参照して、分割サイズY3の分割データを抽出する。分割処理部145は、例えば未送信データの先頭(案内データの先頭、または前回分割データを抽出後の残データの先頭)から順に分割データを抽出する。分割処理部145は、未送信データ管理テーブル144aの残サイズの項目の設定値から、分割サイズY3を差し引いて、当該残サイズの項目の設定値を更新する。
[ステップS32]分割処理部145は、記憶部144に格納された未送信データ管理テーブル144aを参照して、分割サイズY3の分割データを抽出する。分割処理部145は、例えば未送信データの先頭(案内データの先頭、または前回分割データを抽出後の残データの先頭)から順に分割データを抽出する。分割処理部145は、未送信データ管理テーブル144aの残サイズの項目の設定値から、分割サイズY3を差し引いて、当該残サイズの項目の設定値を更新する。
[ステップS33]分割処理部145は、抽出した分割データを送信部142に出力する。送信部142は、分割処理部145から取得した分割データに基づいて送信データ20bを生成し、証券会社サーバ200,300,400に送信する。
[ステップS34]分割処理部145は、ステップS33における分割データの送信後、送信部142による株価データの送信完了を待機する。分割処理部145は、送信部142による株価データの送信完了を検知すると、ステップS35以降の処理を開始する。
[ステップS35]分割処理部145は、記憶部144に格納された未送信データ管理テーブル144aを参照して残データの残サイズY4を取得する。
[ステップS36]分割処理部145は、次回株価データ発生までの残り時間ΔTを算出する。ここで、残り時間ΔTの算出方法は、図11で説明したステップS23のΔTの算出方法と同様である。分割処理部145は、演算に必要な前回株価データを送信開始した時刻X1や通信速度V1を通信情報取得部143あるいは判定部141から取得できる。
[ステップS36]分割処理部145は、次回株価データ発生までの残り時間ΔTを算出する。ここで、残り時間ΔTの算出方法は、図11で説明したステップS23のΔTの算出方法と同様である。分割処理部145は、演算に必要な前回株価データを送信開始した時刻X1や通信速度V1を通信情報取得部143あるいは判定部141から取得できる。
[ステップS37]分割処理部145は、残り時間ΔTで残データ(サイズY4)を送信完了できるか否かを判定する。送信完了できる場合、処理をステップS38に進める。送信完了できない場合、処理をステップS31に進める。なお、具体的な判定の方法は、図11のステップS24で説明した方法と同様である。すなわち、ΔT>Y4/V1を満たすか否かを判定する。本判定式を満たす場合、残データの送信を完了できると判断する。本判定式を満たさない場合、残データの送信を完了できないと判断する。
[ステップS38]分割処理部145は、記憶部144から残データを抽出して送信部142に出力する。送信部142は、残データ(分割データの最後のデータに相当する)に基づいて送信データ20bを生成し、証券会社サーバ200,300,400に送信する。これにより、証券会社サーバ200,300,400で案内データを復元するために用いる全ての分割データが送信されることになる。
このようにして、分割処理部145は、記憶部144に未送信データが格納されている場合、送信部142による株価データの送信が完了するたびに、記憶部144から分割データを取得して送信部142に出力する。
次に、証券会社サーバ200,300,400によるデータ受信処理を説明する。以下では、証券会社サーバ200のデータ受信処理を説明するが、証券会社サーバ300,400に関しても証券会社サーバ200と同様の手順である。
図13は、データ受信処理を示すフローチャートである。以下、図13に示す処理をステップ番号に沿って説明する。
[ステップS41]受信部210は、取引所サーバ100からデータを受信する。
[ステップS41]受信部210は、取引所サーバ100からデータを受信する。
[ステップS42]受信部210は、受信したデータのデータフォーマットに設定された優先度の設定を参照して、当該データが優先度低(優先度の設定が“0”)のデータであるか否かを判定する。優先度低のデータである場合、処理をステップS43に進める。優先度低のデータでない場合、すなわち、優先度高(優先度の設定が“1”)のデータである場合、処理をステップS47に進める。
[ステップS43]受信部210は、受信した案内データが分割データであるか否かを判定する。分割データである場合、処理をステップS44に進める。分割データでない場合、処理をステップS47に進める。ここで、本判定は、受信したデータのデータフォーマットに設定された全サイズおよび残サイズの設定値を比較することで行える。具体的には、全サイズと残サイズとの設定値が等しい場合には、分割データでないと判断する。全サイズと残サイズとの設定値が異なる場合には、分割データであると判断する。
[ステップS44]受信部210は、分割データ記憶部220に格納された分割データ管理テーブル221を参照して、案内データを復元するために用いる全分割データを受信済みであるか否かを判定する。受信済みである場合、処理をステップS46に進める。受信済みでない場合、処理をステップS45に進める。ここで、本判定は分割データ管理テーブル221の各レコードに設定された分割サイズの項目の設定値の合計が、全サイズの項目の設定値に等しいか否かによって行える。等しい場合、全分割データを受信済みと判断する。等しくない場合、全分割データを受信済みでないと判断する。
[ステップS45]受信部210は、分割データ記憶部220に受信データを格納し、分割データ管理テーブル221を更新する。そして、処理をステップS41に進める。
[ステップS46]結合部211は、分割データ記憶部220に格納された分割データを結合して案内データを復元する。
[ステップS46]結合部211は、分割データ記憶部220に格納された分割データを結合して案内データを復元する。
[ステップS47]受信部210は、株価データあるいは案内データを受信キュー230にPUTする。
[ステップS48]サービス提供部240は、受信キュー230に株価データが格納された場合、当該株価データをGETする。また、サービス提供部240は、受信キュー230に案内データが格納された場合、当該案内データをGETする。
[ステップS48]サービス提供部240は、受信キュー230に株価データが格納された場合、当該株価データをGETする。また、サービス提供部240は、受信キュー230に案内データが格納された場合、当該案内データをGETする。
[ステップS49]サービス提供部240は、取得した株価データにより顧客にサービスを提供する。また、サービス提供部240は、取得した案内データにより顧客にサービスを提供する。
このようにして、結合部211は、案内データを全て復号するために用いる全ての分割データを取得すると、全分割データを結合して案内データを復号する。これにより、証券会社サーバ200は、取引所サーバ100から取得した分割データに基づいて、適切に案内データを復元できる。
次に、以上の処理手順により実行されるデータ送信処理の具体例を説明する。
図14は、データ送信処理の流れの第1の具体例を示す図である。以下、図14に示す処理をステップ番号に沿って説明する。ここで、ステップS101の前から通信制御部140は、送信キュー130からデータのGET待ち状態であるとする。
図14は、データ送信処理の流れの第1の具体例を示す図である。以下、図14に示す処理をステップ番号に沿って説明する。ここで、ステップS101の前から通信制御部140は、送信キュー130からデータのGET待ち状態であるとする。
[ステップS101]株価データ生成部110は、株価データを生成すると送信キュー130に株価データをPUTする。
[ステップS102]通信制御部140は、送信キュー130に格納された株価データをGETする。
[ステップS102]通信制御部140は、送信キュー130に格納された株価データをGETする。
[ステップS103]通信制御部140は、株価データを証券会社サーバ200に送信する。証券会社サーバ200は、通信制御部140から株価データを受信する。このとき、通信制御部140は、送信開始時刻X1と送信完了時刻X2とを取得する。更に、各時刻と送信した株価データのサイズY1とに基づいて、回線の通信速度V1を算出する。
[ステップS104]通信制御部140は、送信キュー130からデータのGET待ち状態となる。
[ステップS105]案内データ生成部120は案内データを生成すると送信キュー130に案内データをPUTする。
[ステップS105]案内データ生成部120は案内データを生成すると送信キュー130に案内データをPUTする。
[ステップS106]通信制御部140は、送信キュー130に格納された案内データをGETする。
[ステップS107]通信制御部140は、ステップS103で取得した送信開始時刻X1や通信速度V1に基づいて、次の株価データが発生するまでの残り時間ΔT内に案内データの送信を完了できるか否か判定する。ここでは、送信を完了できないと判定したとする。すると、通信制御部140は、案内データからΔT内に送信できる分割サイズY3を算出する。通信制御部140は、分割サイズY3の分割データを抽出して証券会社サーバ200に送信する。証券会社サーバ200は、通信制御部140から分割データを受信する。
[ステップS107]通信制御部140は、ステップS103で取得した送信開始時刻X1や通信速度V1に基づいて、次の株価データが発生するまでの残り時間ΔT内に案内データの送信を完了できるか否か判定する。ここでは、送信を完了できないと判定したとする。すると、通信制御部140は、案内データからΔT内に送信できる分割サイズY3を算出する。通信制御部140は、分割サイズY3の分割データを抽出して証券会社サーバ200に送信する。証券会社サーバ200は、通信制御部140から分割データを受信する。
[ステップS108]通信制御部140は、送信キュー130からデータのGET待ち状態となる。
[ステップS109]株価データ生成部110は、株価データを生成すると送信キュー130に株価データをPUTする。
[ステップS109]株価データ生成部110は、株価データを生成すると送信キュー130に株価データをPUTする。
[ステップS110]通信制御部140は、送信キュー130に格納された株価データをGETする。
[ステップS111]通信制御部140は、株価データを証券会社サーバ200に送信する。証券会社サーバ200は、通信制御部140から株価データを受信する。このとき、通信制御部140は、送信開始時刻X1と送信完了時刻X2とを取得する。更に、各時刻と送信した株価データのサイズY1とに基づいて、回線の通信速度V1を算出する。
[ステップS111]通信制御部140は、株価データを証券会社サーバ200に送信する。証券会社サーバ200は、通信制御部140から株価データを受信する。このとき、通信制御部140は、送信開始時刻X1と送信完了時刻X2とを取得する。更に、各時刻と送信した株価データのサイズY1とに基づいて、回線の通信速度V1を算出する。
[ステップS112]通信制御部140は、送信キュー130から株価データのGET待ち状態となる。
[ステップS113]通信制御部140は、株価データの送信が完了すると、ステップS107で送信しきれていない案内データの残データのサイズY4を取得する。通信制御部140は、次の株価データが発生するまでの残り時間ΔT内に残データの送信を完了できるか否か判定する。ここでは、送信を完了できないと判定したとする。すると、通信制御部140は、残データからΔT内に送信できる分割サイズY3を再度算出する。通信制御部140は、分割サイズY3の分割データを抽出して証券会社サーバ200に送信する。証券会社サーバ200は、通信制御部140から分割データを受信する。
[ステップS113]通信制御部140は、株価データの送信が完了すると、ステップS107で送信しきれていない案内データの残データのサイズY4を取得する。通信制御部140は、次の株価データが発生するまでの残り時間ΔT内に残データの送信を完了できるか否か判定する。ここでは、送信を完了できないと判定したとする。すると、通信制御部140は、残データからΔT内に送信できる分割サイズY3を再度算出する。通信制御部140は、分割サイズY3の分割データを抽出して証券会社サーバ200に送信する。証券会社サーバ200は、通信制御部140から分割データを受信する。
このようにして、通信制御部140は株価データを送信する合間に不定期に発生する案内データを分割して送信できる。このとき、株価データの送信が完了する都度、残り時間ΔT内に送信できる分割サイズY3を算出する。このため、たとえ取引所サーバ100による株価データの送信遅延が発生した場合にも、次回株価データが発生する前に、適切に分割データの送信を完了できる。
図15は、データ通信方法の第1の具体例を示す図である。通信制御部140は、株価データ410,420,430,440を周期Tで順次送信する。通信制御部140は、案内データを分割した分割データ510,520,530を株価データ410,420,430,440の送信の合間に順次送信する。
図15中、株価データ410,420,430,440および分割データ510,520,530が重なる各矢印は、各データの送信方向(取引所サーバ100から証券会社サーバ200へ向かう方向)を示している。
ここで、所要時間TN1は、株価データ410を送信するための所要時間である。所要時間TN2は、株価データ420を送信するための所要時間である。所要時間TN3は、株価データ430を送信するための所要時間である。所要時間TN1は、株価データ410の送信開始時間から送信完了時間の間に経過した時間として求められる。所要時間TN2,TN3に関しても同様である。
また、残り時間ΔT1は案内データが発生してから株価データ420が発生するまでの残り時間である。残り時間ΔT2は、株価データ420の送信を完了してから株価データ430が発生するまでの残り時間である。残り時間ΔT3は、株価データ430の送信を完了してから株価データ440が発生するまでの残り時間である。
図15の例では、TN1よりもTN2の方が大きい。すなわち、株価データ420の送信に時間を要したことを示している。これは、取引所サーバ100の処理負荷やネットワーク10の通信負荷が大きい等の原因による。すると、通信制御部140は、株価データ420を送信したときの通信速度と、残り時間ΔT2によって分割データ520の分割サイズY3を決定して、残データから分割データ520を抽出して送信する。このように、残り時間ΔT2に送信できる分割データY3を適切に決定するので、株価データ430の発生タイミングの前に分割データ520の送信を確実に完了できる。このため、株価データの発生後、即座に送信することが可能となり、株価データの送信遅延を低減することができる。
図16は、データ通信方法の比較例を示す図である。図16では、各分割データを固定サイズとして送信する場合を例示している。すなわち、比較例における取引サーバの送信部は、固定サイズの分割データを各証券会社サーバに送信する。
また、送信部は、取引サーバ上で周期Tで発生する株価データ410a,420a,430a,440aを各証券会社サーバに送信する。送信部は株価データ410a,420a,430a,440aの送信の合間に固定サイズの分割データ510a,520a,530aを各証券会社サーバに送信する。
図16中、株価データ410a,420a,430a,440aおよび分割データ510a,520a,530aが重なる各矢印は、各データの送信方向(取引所サーバから証券会社サーバへ向かう方向)を示している。
このとき、例えば、株価データ410aの送信に所要時間TN1aを要し、株価データ420aの送信に所要時間TN2a(TN2a>TN1a)を要したとする。ここで、所要時間差TN2a−TN1a=遅延時間DL1とする。
すると、分割データ520aの送信は株価データ420aの送信完了後に可能となるため、分割データ520aの周期T内における送信開始のタイミングが、分割データ510aの周期T内における送信開始のタイミングよりもDL1だけ遅延する。その場合、次に発生する株価データ430aの送信開始のタイミングがDL2(=DL1)だけ遅延することになる。
図15に示した第2の実施の形態の取引所サーバ100によれば、分割サイズを株価データの送信を完了する都度算出して、算出した分割サイズの分だけ分割データを抽出するので、株価データ430aの送信開始に生ずる遅延時間DL2を低減できる。
また、案内データや分割データの送信後に、次回株価データが送信するまでの残り時間に余裕がある場合がある。その場合、次に送信すべき案内データ等、他の優先度の低いデータがあれば、その残り時間を利用して送信開始してもよい。以下では、そのようなデータ送信処理の具体例を説明する。
図17は、データ送信処理の流れの第2の具体例を示す図である。以下、図17に示す処理をステップ番号に沿って説明する。ここで、ステップS121の前から通信制御部140は、送信キュー130からデータのGET待ち状態であるとする。また、案内データD1の残データが記憶部144に格納されているとする。
[ステップS121]案内データ生成部120は、案内データD2を生成すると送信キュー130に案内データD2をPUTする。
[ステップS122]通信制御部140は、送信キュー130から案内データD2をGETする。
[ステップS122]通信制御部140は、送信キュー130から案内データD2をGETする。
[ステップS123]通信制御部140は、送信キュー130からデータのGET待ち状態となる。
[ステップS124]株価データ生成部110は、株価データを生成すると送信キュー130に株価データをPUTする。
[ステップS124]株価データ生成部110は、株価データを生成すると送信キュー130に株価データをPUTする。
[ステップS125]通信制御部140は、送信キュー130からデータをGETする。
[ステップS126]通信制御部140は、株価データを証券会社サーバ200に送信する。証券会社サーバ200は、通信制御部140から株価データを取得する。更に、各時刻と送信した株価データのサイズY1とに基づいて、回線の通信速度V1を算出する。
[ステップS126]通信制御部140は、株価データを証券会社サーバ200に送信する。証券会社サーバ200は、通信制御部140から株価データを取得する。更に、各時刻と送信した株価データのサイズY1とに基づいて、回線の通信速度V1を算出する。
[ステップS127]通信制御部140は、送信キュー130からデータのGET待ち状態となる。
[ステップS128]通信制御部140は、株価データの送信が完了すると、送信しきれていない案内データD1の残データのサイズY4を取得する。通信制御部140は、次に株価データが発生するまでの残り時間ΔT内に残データの送信を完了できるか否か判定する。ここでは、送信を完了できると判定したとする。すると、通信制御部140は、残データを分割せずに証券会社サーバ200に送信する。証券会社サーバ200は、通信制御部140から案内データD1の残データを受信する。これにより、案内データD1を復元するために用いる全ての分割データが証券会社サーバ200に送信されたこととなる。
[ステップS128]通信制御部140は、株価データの送信が完了すると、送信しきれていない案内データD1の残データのサイズY4を取得する。通信制御部140は、次に株価データが発生するまでの残り時間ΔT内に残データの送信を完了できるか否か判定する。ここでは、送信を完了できると判定したとする。すると、通信制御部140は、残データを分割せずに証券会社サーバ200に送信する。証券会社サーバ200は、通信制御部140から案内データD1の残データを受信する。これにより、案内データD1を復元するために用いる全ての分割データが証券会社サーバ200に送信されたこととなる。
[ステップS129]通信制御部140は、案内データD1に係る分割データの送信が完了すると、ステップS121でGETした案内データD2の送信を試みる。すなわち、ステップS128と同様にして、次に株価データが発生するまでの残り時間ΔT内に案内データD2の送信を完了できるか否か判定する。ここで、ステップS129では、ステップS128の時点よりも時間が経過しているため、ステップS128よりもΔTは小さくなっている。当該判定につき、本ステップでは完了できないと判定したとする。すると、通信制御部140は、案内データD2からΔT内に送信できる分割サイズY3を算出する。通信制御部140は、案内データD2から分割サイズY3の分割データを抽出して、証券会社サーバ200に送信する。証券会社サーバ200は、通信制御部140から案内データD2の分割データを受信する。
[ステップS130]株価データ生成部110は、株価データを生成すると送信キュー130にPUTする。
[ステップS131]通信制御部140は、送信キュー130から株価データをGETする。
[ステップS131]通信制御部140は、送信キュー130から株価データをGETする。
[ステップS132]通信制御部140は、株価データを証券会社サーバ200に送信する。証券会社サーバ200は、通信制御部140から株価データを取得する。更に、各時刻と送信した株価データのサイズY1とに基づいて、回線の通信速度V1を算出する。
[ステップS133]通信制御部140は、送信キュー130からデータのGET待ち状態となる。
[ステップS134]通信制御部140は、株価データの送信が完了すると、ステップS129で送信しきれていない案内データD2の残データのサイズY4を取得する。通信制御部140は、次の株価データが発生するまでの残り時間ΔT内に残データの送信を完了できるか否か判定する。ここでは、送信を完了できないと判定したとする。すると、通信制御部140は、残データからΔT内に送信できる分割サイズY3を再度算出する。通信制御部140は、分割サイズY3の分割データを抽出して証券会社サーバ200に送信する。証券会社サーバ200は、通信制御部140から案内データD2の分割データを受信する。
[ステップS134]通信制御部140は、株価データの送信が完了すると、ステップS129で送信しきれていない案内データD2の残データのサイズY4を取得する。通信制御部140は、次の株価データが発生するまでの残り時間ΔT内に残データの送信を完了できるか否か判定する。ここでは、送信を完了できないと判定したとする。すると、通信制御部140は、残データからΔT内に送信できる分割サイズY3を再度算出する。通信制御部140は、分割サイズY3の分割データを抽出して証券会社サーバ200に送信する。証券会社サーバ200は、通信制御部140から案内データD2の分割データを受信する。
このようにして、通信制御部140は、案内データD1の分割データを全部送信する前に、案内データD2が発生した場合にも、案内データD1の最後の分割データの送信に続けて、案内データD2の送信を開始できる。
図18は、データ通信方法の第2の具体例を示す図である。通信制御部140は、株価データ410,420,430,440を周期Tで順次送信する。通信制御部140は、案内データD1を分割した分割データ610,620、および、案内データD2を分割した分割データ710,720を株価データ410,420,430,440の送信の合間に順次送信する。
図18中、株価データ410,420,430,440および分割データ610,620,710,720が重なる各矢印は、各データの送信方向(取引所サーバ100から証券会社サーバ200へ向かう方向)を示している。
ここで、案内データD2は、案内データD1の分割データ610,620を全て送信する前に案内データ生成部120によって生成されており、記憶部144に格納されているとする。
また、残り時間ΔT4は案内データD1が発生してから株価データ420が発生するまでの残り時間である。残り時間ΔT5は株価データ420の送信を完了してから株価データ430が発生するまでの残り時間である。残り時間ΔT6は、分割データ620の送信を完了してから株価データ430が発生するまでの残り時間である。残り時間ΔT7は、株価データ430の送信を完了してから株価データ440が発生するまでの残り時間である。
図18の例では、分割データ620により案内データD1を復元するために用いる全ての分割データの送信が完了する。分割データ620の送信完了後、株価データ430が発生するまでに残り時間ΔT6がある。この場合、通信制御部140は、残り時間ΔT6内に案内データD2の送信を完了できるか否か判定する。通信制御部140は、案内データD2を残り時間ΔT6内に送信完了できないと判定する。すると、通信制御部140は、残り時間ΔT6内で送信できる分割サイズY3で案内データD2から分割データ710を抽出し送信する。その後、通信制御部140は、株価データ430が発生する前に分割データ710の送信を完了する。そして、通信制御部140は、株価データ430の送信が完了すると、案内データD2につき残り時間ΔT7内で送信完了できる分割サイズY3で案内データD2から分割データ720を抽出し送信する。
このように、残り時間ΔT5内に分割データ620を送信後、残り時間ΔT6がある場合には、ΔT6内に送信できる分だけ次に発生した案内データD2から分割データを抽出して送信する。このため、優先度の高い株価データの送信遅延を低減しつつ、優先度の低い案内データD2の送信を効率的に行える。
なお、上述の説明では、株価データ生成部110および案内データ生成部120は単一の送信キュー130に各部が生成したデータをPUTすることとした。ただし、株価データ生成部110が株価データをPUTするための送信キューを別個に設けてもよい。同様に、案内データ生成部120が案内データをPUTするための送信キューを別個に設けてもよい。
また、通信情報取得部143による通信速度の測定は、送信部142による株価データの送信の都度行うこととしたが、数回(例えば、5回)の送信に1回の頻度で行ってもよい。あるいは、取引所サーバ100の負荷(例えば、CPU利用率やメモリ利用率等)を監視して、高負荷(例えば、CPU利用率やメモリ利用率等が所定の閾値よりも高い状態)となった場合に、通信速度を測定するようにしてもよい。
以上で説明したよう取引所サーバ100によれば、優先度の高いデータの送信周期と重ならないタイミングで優先度の低いデータの送信を行えるよう、優先度の低いデータを分割して送信する。このとき、優先度の低いデータの分割サイズを優先度の高いデータの送信を完了する都度算出して、優先度の低いデータから当該分割サイズの分割データを抽出し、送信する。
このため、次に優先度の高いデータが発生するまでに分割データの送信を確実に完了できる。よって、優先度の高いデータの発生後、即座に優先度の高いデータの送信を開始できるので、優先度の高いデータの送信遅延を低減できる。このような機能は、取引所サーバ100と証券会社サーバ200,300,400との間で共有する株価データ等、高いリアルタイム性が要求されるデータを優先度の高いデータとして適用する場合に特に有効である。
また、取引所サーバ100の負荷や通信負荷によって、優先度の高いデータの送信に遅延が発生する場合にも、次に優先度の高いデータが発生するまでに送信完了できるサイズの分割データを送信する。このため、取引所サーバ100の負荷や通信負荷に依らずに、次に発生する優先度の高いデータの送信開始タイミングの遅延を抑制できる。
更に、取引所サーバ100によれば、優先度の低いデータ(分割する場合および分割しない場合を含む)の送信後に、次回優先度の高いデータが発生するまでの残り時間がある場合、優先度の低いデータを続けて送信できる。この場合にも、残り時間内に優先度の低いデータを全て送信完了できるか否かの判定を行い、送信完了できる場合には、当該データの全部を送信する。一方、送信完了できない場合には、当該データを分割して送信する。このように、残り時間がある場合には、次に送信すべき優先度の低いデータの送信を続けて開始できるので、優先度の高いデータの送信遅延を低減しながら、優先度の低いデータの送信を効率的に行える。
また、単一の回線において優先度の高いデータの送信遅延を低減できるので、複数回線を敷設、契約等するコストを抑えることができる。
[第3の実施の形態]
次に、第3の実施の形態について説明する。前述の第2の実施の形態との差異を主に説明し、共通の事項に関しては説明を省略する。
[第3の実施の形態]
次に、第3の実施の形態について説明する。前述の第2の実施の形態との差異を主に説明し、共通の事項に関しては説明を省略する。
第3の実施の形態では、小売店の各店舗の売上を管理する店舗管理システムに第1の実施の形態の通信装置1を適用する場合を例示する。店舗管理システムでは、各店舗に設置された店舗サーバからの売上データを定期的にリアルタイムに取得したいという要求がある。一方で、各店舗を管理する本部サーバから各店舗に値引データ等のデータを不定期に配信したいという要求がある。
そこで、第3の実施の形態では、このような店舗管理システムにおいて、売上データの受信遅延を低減する機能を提供する。
図19は、第3の実施の形態の店舗管理システムの全体構成を示す図である。この店舗管理システムは、本部サーバ100aおよび店舗サーバ200a,300a,400aを有する。本部サーバ100aはネットワーク10を介して店舗サーバ200a,300a,400aと接続されている。ここで、本部サーバ100aと店舗サーバ200a,300a,400aとは単一の回線で接続されている。
図19は、第3の実施の形態の店舗管理システムの全体構成を示す図である。この店舗管理システムは、本部サーバ100aおよび店舗サーバ200a,300a,400aを有する。本部サーバ100aはネットワーク10を介して店舗サーバ200a,300a,400aと接続されている。ここで、本部サーバ100aと店舗サーバ200a,300a,400aとは単一の回線で接続されている。
本部サーバ100aは、地域の店舗を管理する小売業者の拠点で管理されるサーバコンピュータである。本部サーバ100aは、店舗サーバ200a,300a,400aから売上データを受信する。売上データは、小売業者の資金運用を効率的に行うために、本部サーバ100aおよび店舗サーバ200a,300a,400aの間の同期に高いリアルタイム性を要求されるデータである。また、本部サーバ100aは、店舗サーバ200a,300a,400aに対して値引データや各種通知メッセージの配信を行う。値引データや通知メッセージは、本部および各店舗の間での同期に高いリアルタイム性を要しないものである。このため、売上データの受信は、値引データや各種通知メッセージの送信に比べて優先度が高い。
店舗サーバ200a,300a,400aは、各店舗における商品の売り上げを管理するサーバコンピュータである。
ここで、店舗サーバ200a,300a,400aは、売上データを定期的に生成する。各サーバにおける売上データの生成の時間間隔は、例えば3分である。店舗サーバ200a,300a,400aは、例えば1分間の時間差で本部サーバ100aに売上データを送信する。このため、本部サーバ100aは、店舗サーバ200a,300a,400aから1分間隔で売上データを受信する。具体的には、店舗サーバ200aが売上データを送信した1分後に店舗サーバ300aが売上データを送信する。店舗サーバ300aが売上データを送信した1分後に店舗サーバ400aが売上データを送信する。店舗サーバ400aが売上データを送信した1分後に店舗サーバ200aが売上データを送信する。このように、本部サーバ100aが店舗サーバ200a,300a,400aから売上データを受信する周期(本例では1分間)をTとする。
ここで、店舗サーバ200a,300a,400aは、売上データを定期的に生成する。各サーバにおける売上データの生成の時間間隔は、例えば3分である。店舗サーバ200a,300a,400aは、例えば1分間の時間差で本部サーバ100aに売上データを送信する。このため、本部サーバ100aは、店舗サーバ200a,300a,400aから1分間隔で売上データを受信する。具体的には、店舗サーバ200aが売上データを送信した1分後に店舗サーバ300aが売上データを送信する。店舗サーバ300aが売上データを送信した1分後に店舗サーバ400aが売上データを送信する。店舗サーバ400aが売上データを送信した1分後に店舗サーバ200aが売上データを送信する。このように、本部サーバ100aが店舗サーバ200a,300a,400aから売上データを受信する周期(本例では1分間)をTとする。
また、本部サーバ100aは、値引データや通知メッセージを不定期に生成する。この店舗管理システムでは、本部サーバ100aにおける優先度の高い売上データの受信と、本部サーバ100aが生成し優先度の低い値引データ等の送信とを、単一の回線で効率的に送信する仕組みが求められる。以下では、そのような本部サーバ100aの構成を更に詳細に説明する。
ここで、以下では優先度の高いデータの一例として売上データを、優先度の低いデータの一例として値引データを挙げて説明する。ただし、優先度の高いデータ、優先度の低いデータには、これらに限らず種々のものが考えられる。
なお、本部サーバ100aおよび店舗サーバ200a,300a,400aのハードウェア構成は、図3で説明した第2の実施の形態の取引所サーバ100のハードウェア構成と同様であるため説明を省略する。
図20は、第3の実施の形態の本部サーバの構成を示すブロック図である。本部サーバ100aは、送信データ生成部110a、送信キュー130、通信制御部140a、受信キュー150および受信データ処理部160を有する。これらのユニットの機能は、本部サーバ100aのCPUが所定のプログラムを実行することにより、本部サーバ100a上に実現される。特に、通信制御部140aの機能は、本部サーバ100aのCPUが通信プログラムを実行することにより実現される。
送信データ生成部110aは、店舗サーバ200a,300a,400aに送信する値引データを不定期に生成する。値引データは、各店舗の各商品の値引率や値引額を指定する情報である。送信データ生成部110aは、生成した値引データを送信キュー130に格納する。
送信キュー130は、図4において説明した第2の実施の形態の送信キュー130に対応する。
通信制御部140aは、店舗サーバ200a,300a,400aとの間のデータ通信を制御する。通信制御部140aは、判定部141a、送受信部142a、通信情報取得部143a、記憶部144および分割処理部145aを有する。
通信制御部140aは、店舗サーバ200a,300a,400aとの間のデータ通信を制御する。通信制御部140aは、判定部141a、送受信部142a、通信情報取得部143a、記憶部144および分割処理部145aを有する。
判定部141aは、送信キュー130に格納された値引データをFIFOの手順により取り出す(GET)。判定部141aは、取り出した値引データのサイズに基づいて、次に売上データを受信するまでの間に店舗サーバ200a,300a,400aに対する値引データ全体の送信を完了できるか否かを判定する。判定部141aは、完了できると判定すると、値引データ全体を送受信部142aに出力する。一方、完了できないと判定すると、記憶部144に値引データを格納する。判定部141aは、当該判定処理に用いる情報を通信情報取得部143aから取得できる。
送受信部142aは、判定部141aから値引データを取得すると、値引データを店舗サーバ200a,300a,400aに送信する。送受信部142aは、分割処理部145aから分割データを取得すると、分割データを店舗サーバ200a,300a,400aに送信する。
送受信部142aは、店舗サーバ200a,300a,400aから定期的に売上データを受信する。送受信部142aは、売上データを受信すると、その受信開始時刻、受信完了時刻およびデータサイズを通信情報取得部143aに出力する。また、送受信部142aは、受信した売上データを受信キュー150に格納(PUT)する。
通信情報取得部143aは、送受信部142aから取得する売上データの受信開始時刻、送信完了時刻およびデータサイズに基づいて、送受信部142aによるデータ通信速度を計測する。通信情報取得部143aは、取得した受信開始時刻および通信速度等の情報を判定部141aに出力する。
記憶部144は、図4において説明した第2の実施の形態の記憶部144に対応する。すなわち、記憶部144は、未送信データを記憶する。未送信データには、判定部141aにより記憶部144に格納される値引データが含まれる。また、未送信データには、送信済みの分割データを除く未送信部分の残データが含まれる。
分割処理部145aは、記憶部144に格納された値引データから、次に売上データが発生するまでの間に送信できるサイズの分だけ分割データを抽出し、送受信部142aに出力する。分割処理部145aは、記憶部144に残データが格納されている場合には、送受信部142aによる売上データの受信が完了するたびに、次に売上データが発生するまでの間に送信できるサイズの分だけ分割データを抽出し、送受信部142aに出力する。
受信キュー150は、送受信部142aが受信したデータを順次格納するための記憶部である。受信キュー150には、送受信部142aにより受信データ処理部160が扱う売上データが格納される。
受信データ処理部160は、受信キュー150に格納された売上データを取得する(GET)。そして、受信データ処理部160は、取得した売上データを集計して各種運用を行う。
なお、店舗サーバ200a,300a,400aにおいて、本部サーバ100aから値引データおよび分割データを受信する構成および分割データを受信する場合に分割データから値引データを復元する構成は、図5で説明した第2の実施の形態の証券会社サーバ200のユニット構成と同様である。ただし、店舗サーバ200a,300a,400aは、定期的に売上データを生成して本部サーバ100aに送信する点が異なる。証券会社サーバ200の構成に加えて店舗サーバ200a,300a,400aは、売上データを定期的に生成するデータ生成部および売上データを本部サーバ100aに送信する送信部を有している。
次に以上のような構成の本部サーバ100aのデータ送受信処理の手順を説明する。
図21は、第3の実施の形態のデータ受信処理を示すフローチャートである。以下、図21に示す処理をステップ番号に沿って説明する。
図21は、第3の実施の形態のデータ受信処理を示すフローチャートである。以下、図21に示す処理をステップ番号に沿って説明する。
[ステップS51]送受信部142aは、売上データの受信を開始する。
[ステップS52]送受信部142aは、通信情報取得部143aに受信開始時刻X3および売上データのサイズY11を出力する。
[ステップS52]送受信部142aは、通信情報取得部143aに受信開始時刻X3および売上データのサイズY11を出力する。
[ステップS53]送受信部142aは、売上データの受信を完了する。
[ステップS54]送受信部142aは、受信完了時刻X4を通信情報取得部143aに出力する。
[ステップS54]送受信部142aは、受信完了時刻X4を通信情報取得部143aに出力する。
[ステップS55]通信情報取得部143aは、通信速度V2を算出する。具体的には、V2=Y11/(X4−X3)の演算によりV2を算出できる。V2の単位は、例えばbpsである。
[ステップS56]通信情報取得部143aは、受信開始時刻X3および通信速度V2を判定部141aに出力する。判定部141aは、通信情報取得部143aから受信開始時刻X3および通信速度V2を取得する。
[ステップS57]送受信部142aは、受信キュー150に売上データをPUTする。
[ステップS58]受信データ処理部160は、受信キュー150に格納された売上データをGETする。
[ステップS58]受信データ処理部160は、受信キュー150に格納された売上データをGETする。
[ステップS59]受信データ処理部160は、GETした売上データに基づく所定の処理を行う。
このように、通信情報取得部143aは、送受信部142aによる売上データの受信が行われるたびに、店舗サーバ200a,300a,400aとの間の通信速度を算出し、判定部141aに出力する。
このように、通信情報取得部143aは、送受信部142aによる売上データの受信が行われるたびに、店舗サーバ200a,300a,400aとの間の通信速度を算出し、判定部141aに出力する。
なお、通信速度の算出は、売上データを複数回受信するごとに1回算出してもよい。例えば、売上データを5回受信するごとに1回としてもよい。
図22は、第3の実施の形態のデータ送信処理を示すフローチャートである。以下、図22に示す処理をステップ番号に沿って説明する。
図22は、第3の実施の形態のデータ送信処理を示すフローチャートである。以下、図22に示す処理をステップ番号に沿って説明する。
[ステップS61]判定部141aは、送信キュー130から値引データをGETする。
[ステップS62]判定部141aは、前回売上データの受信開始時刻からの経過時間τを取得する。経過時間τは、現在時刻をτ0として、τ=τ0−X3の演算により求めることができる。
[ステップS62]判定部141aは、前回売上データの受信開始時刻からの経過時間τを取得する。経過時間τは、現在時刻をτ0として、τ=τ0−X3の演算により求めることができる。
[ステップS63]判定部141aは、値引データのサイズY12を取得する。
[ステップS64]判定部141aは、次回売上データ受信までの残り時間ΔTを算出する。残り時間ΔTは、ΔT=T−τの演算により求めることができる。ここで、Tは送受信部142aが店舗サーバ200a,300a,400aから売上データを受信する周期である。
[ステップS64]判定部141aは、次回売上データ受信までの残り時間ΔTを算出する。残り時間ΔTは、ΔT=T−τの演算により求めることができる。ここで、Tは送受信部142aが店舗サーバ200a,300a,400aから売上データを受信する周期である。
[ステップS65]判定部141aは、通信情報取得部143aから取得した通信速度V2に基づいて、残り時間ΔTで値引データ(サイズY12)を送信完了できるか否かを判定する。送信完了できる場合、処理をステップS66に進める。送信完了できない場合、処理をステップS67に進める。当該判定は、ΔT>Y12/V2であるか否かを判定することで行える。すなわち、本判定式を満たす場合、値引データの送信を完了できると判断する。本判定式を満たさない場合、値引データの送信を完了できないと判断する。
[ステップS66]判定部141aは、値引データを送受信部142aに出力する。送受信部142aは、判定部141aから取得した値引データに基づいて送信データ20bを生成し、店舗サーバ200a,300a,400aに送信する。ここで、本送信データは分割データを送信するものではないので、送信データフォーマット20における全サイズフィールド23および分割サイズフィールド24に対応する値は等しくなる。
[ステップS67]判定部141aは、値引データに基づいて未送信データ管理テーブル144aを生成し、記憶部144に格納する。分割処理部145aは、記憶部144に格納された未送信データ管理テーブル144aを参照して、値引データから分割データを抽出して送受信部142aに出力する。送受信部142aは、分割処理部145aから取得した分割データを店舗サーバ200a,300a,400aに送信する。
このようにして、判定部141aは残り時間ΔT内に値引データを送信完了できるか否かを判定し、完了できると判定する場合には、値引データを送受信部142aに出力する。一方、完了できないと判定する場合には、記憶部144に値引データを格納する。分割処理部145aは、記憶部144に格納された値引データに基づいて、データの分割を行い送受信部142aに分割データを出力する。
次に、ステップS67に示した分割データの送信処理を詳細に説明する。
図23は、第3の実施の形態の分割データ送信処理を示すフローチャートである。以下、図23に示す処理をステップ番号に沿って説明する。
図23は、第3の実施の形態の分割データ送信処理を示すフローチャートである。以下、図23に示す処理をステップ番号に沿って説明する。
[ステップS71]分割処理部145aは、分割データのサイズ(分割サイズ)Y13を算出する。分割サイズY13は、Y13=V2×ΔTの演算により求めることができる。
[ステップS72]分割処理部145aは、記憶部144に格納された未送信データ管理テーブル144aを参照して、分割サイズY13の分割データを抽出する。分割処理部145aは、例えば未送信データの先頭(値引データの先頭、または前回分割データを抽出後の残データの先頭)から順に分割データを抽出する。分割処理部145aは、未送信データ管理テーブル144aの残サイズの項目の設定値から、分割サイズY13を差し引いて、当該残サイズの項目の設定値を更新する。
[ステップS73]分割処理部145aは、抽出した分割データを送受信部142aに出力する。送受信部142aは、分割処理部145aから取得した分割データに基づいて送信データ20bを生成し、店舗サーバ200a,300a,400aに送信する。
[ステップS74]分割処理部145aは、ステップS73における分割データの送信後、送受信部142aによる売上データの受信完了を待機する。分割処理部145aは、送受信部142aによる売上データの受信完了を検知すると、ステップS75以降の処理を開始する。
[ステップS75]分割処理部145aは、記憶部144に格納された未送信データ管理テーブル144aを参照して残データの残サイズY14を取得する。
[ステップS76]分割処理部145aは、次回売上データ受信までの残り時間ΔTを算出する。ここで、残り時間ΔTの算出方法は、図22で説明したステップS64のΔTの算出方法と同様である。分割処理部145aは、演算に必要な前回売上データを受信開始した時刻X3や通信速度V2を通信情報取得部143aあるいは判定部141aから取得できる。
[ステップS76]分割処理部145aは、次回売上データ受信までの残り時間ΔTを算出する。ここで、残り時間ΔTの算出方法は、図22で説明したステップS64のΔTの算出方法と同様である。分割処理部145aは、演算に必要な前回売上データを受信開始した時刻X3や通信速度V2を通信情報取得部143aあるいは判定部141aから取得できる。
[ステップS77]分割処理部145aは残り時間ΔTで残データ(サイズY14)を送信完了できるか否かを判定する。送信完了できる場合、処理をステップS78に進める。送信完了できない場合、処理をステップS71に進める。なお、具体的な判定の方法は、図22のステップS65で説明した方法と同様である。すなわち、ΔT>Y14/V2を満たすか否かを判定する。本判定式を満たす場合、残データの送信を完了できると判断する。本判定式を満たさない場合、残データの送信を完了できないと判断する。
[ステップS78]分割処理部145aは、記憶部144から残データを抽出して送受信部142aに出力する。送受信部142aは、残データ(分割データの最後のデータに相当する)に基づいて送信データ20bを生成し、店舗サーバ200a,300a,400aに送信する。これにより、店舗サーバ200a,300a,400aで値引データを復元するために用いる全ての分割データが送信されることになる。
このようにして、分割処理部145aは、記憶部144に未送信データが格納されている場合、送受信部142aによる売上データの受信が完了するたびに、記憶部144から分割データを取得して送受信部142aに出力する。
店舗サーバ200a,300a,400aは、値引データを復元するために必要な全ての分割データを受信すると、所定のタイミングで各分割データを結合し、値引データを取得する。
これにより、本部サーバ100aは第2の実施の形態と同様の効果を奏することができる。すなわち、本部サーバ100aによれば、優先度の高いデータの受信周期と重ならないタイミングで優先度の低いデータの送信を行えるよう、優先度の低いデータを分割して送信する。このとき、優先度の低いデータの分割サイズを優先度の高いデータの受信完了の都度算出して、優先度の低いデータから当該分割サイズの分割データを抽出し、送信する。
このため、次に優先度の高いデータが発生するまでに分割データの送信を確実に完了できる。よって、優先度の高いデータの発生後、即座に優先度の高いデータの受信を開始できるので、優先度の低いデータの受信遅延を低減できる。このような機能は、本部サーバ100aと店舗サーバ200a,300a,400aとの間で共有する売上データ等、高いリアルタイム性が要求されるデータを優先度の高いデータとして適用する場合に特に有効である。
また、本部サーバ100a、店舗サーバ200a,300a,400aの負荷や通信負荷によって、優先度の高いデータの受信に遅延が発生する場合にも、次に優先度の高いデータが発生するまでに送信完了できるサイズの分割データを送信する。このため、本部サーバ100a、店舗サーバ200a,300a,400aの負荷や通信負荷に依らずに、次に発生する優先度の高いデータの受信開始タイミングの遅延を抑制できる。
更に、本部サーバ100aによれば、優先度の低いデータ(分割する場合および分割しない場合を含む)の送信後に、次回優先度の高いデータが発生するまでの残り時間がある場合、優先度の低いデータを続けて送信できる。この場合にも、残り時間内に優先度の低いデータを全て送信完了できるか否かの判定を行い、送信完了できる場合には、当該データの全部を送信する。一方、送信完了できない場合には、当該データを分割して送信する。
このように、残り時間がある場合には、次に送信すべき優先度の低いデータの送信を続けて開始できるので、優先度の高いデータの受信遅延を低減しながら、優先度の低いデータの送信を効率的に行える。
また、単一の回線において優先度の高いデータの受信遅延を低減できるので、複数回線を敷設、契約等に係るコストを抑えることができる。
以上、本発明の通信プログラム、通信装置および通信方法を図示の実施の形態に基づいて説明したが、これらに限定されるものではなく、各部の構成は同様の機能を有する任意の構成のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。更に、前述した実施の形態のうちの任意の2以上の構成(特徴)を組み合わせたものであってもよい。
以上、本発明の通信プログラム、通信装置および通信方法を図示の実施の形態に基づいて説明したが、これらに限定されるものではなく、各部の構成は同様の機能を有する任意の構成のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。更に、前述した実施の形態のうちの任意の2以上の構成(特徴)を組み合わせたものであってもよい。
1 通信装置
1a 通信手段
1b 判定手段
1c 記憶手段
1d 分割手段
2 情報処理装置
3,4,5 第1の種類のデータ
6 第2の種類のデータ
6a,6b,6c 分割データ
1a 通信手段
1b 判定手段
1c 記憶手段
1d 分割手段
2 情報処理装置
3,4,5 第1の種類のデータ
6 第2の種類のデータ
6a,6b,6c 分割データ
Claims (8)
- 情報処理装置との間で第1の種類のデータを所定の周期で通信し、
不定期に発生する第2の種類のデータを取得すると、前記第2の種類のデータのサイズに基づいて、第1の種類のデータが次に発生するまでの残り時間内に前記第2の種類のデータの送信を完了できるか否か判定し、完了できないと判定すると前記第2の種類のデータを記憶手段に格納し、
前記記憶手段に格納された前記第2の種類のデータから前記残り時間内に送信できるサイズにデータを分割した分割データを抽出して前記情報処理装置へ送信し、
第1の種類のデータの通信が完了するたびに、前記記憶手段を参照して、前記第2の種類のデータのうちの未送信データにつき前記分割データを抽出して前記情報処理装置へ送信する、
処理をコンピュータに実行させることを特徴とする通信プログラム。 - 第1の種類のデータの通信が完了するたびに、当該通信に要した所要時間と当該第1の種類のデータのサイズとに基づいて通信速度を算出し、
前記通信速度と前記残り時間とに基づいて前記分割データのサイズを算出する、
ことを特徴とする請求項1記載の通信プログラム。 - 前記記憶手段には、先に発生した第2の種類のデータについての未送信データと、先に発生した第2の種類のデータよりも後に発生した第2の種類のデータと、が格納されており、
先に発生した第2の種類のデータについての未送信データの送信が完了した後、前記残り時間がある場合、後に発生した第2の種類のデータにつき当該残り時間内に後に発生した第2の種類のデータの送信を完了できるか否か判定する、
ことを特徴とする請求項1または2の何れか一項に記載の通信プログラム。 - 第1のフラグが付加された第1の種類のデータおよび第2のフラグが付加された第2の種類のデータを格納するキューに格納されたデータを順次取得し、当該データに前記第2のフラグが付加されている場合に、前記残り時間内に前記第2の種類のデータの送信を完了できるか否か判定する、
ことを特徴とする請求項1乃至3の何れか一項に記載の通信プログラム。 - 第1の種類のデータの前記通信は、前記情報処理装置に第1の種類のデータを送信する処理であることを特徴とする請求項1乃至4の何れか一項に記載の通信プログラム。
- 第1の種類のデータの前記通信は、前記情報処理装置から第1の種類のデータを受信する処理であることを特徴とする請求項1乃至3の何れか一項に記載の通信プログラム。
- 情報処理装置との間で第1の種類のデータを所定の周期で通信するとともに、不定期に発生する第2の種類のデータを前記情報処理装置に送信する通信手段と、
前記第2の種類のデータを取得すると、前記第2の種類のデータのサイズに基づいて、第1の種類のデータが次に発生するまでの残り時間内に前記第2の種類のデータの送信を完了できるか否か判定し、完了できないと判定すると前記第2の種類のデータを記憶手段に格納する判定手段と、
前記記憶手段に格納された前記第2の種類のデータから前記残り時間内に送信できるサイズにデータを分割した分割データを抽出して前記通信手段に送信させ、その後、第1の種類のデータの送信が完了するたびに、前記記憶手段を参照して、前記第2の種類のデータのうちの未送信データにつき前記分割データを抽出して前記通信手段に送信させる分割手段と、
を有することを特徴とする通信装置。 - 通信装置と情報処理装置とが接続された通信システムの通信方法であって、
前記通信装置が、前記情報処理装置との間で第1の種類のデータを所定の周期で通信し、
前記通信装置が、不定期に発生する第2の種類のデータを取得すると、前記第2の種類のデータのサイズに基づいて、第1の種類のデータが次に発生するまでの残り時間内に前記第2の種類のデータの送信を完了できるか否か判定し、完了できないと判定すると前記第2の種類のデータを記憶手段に格納し、前記記憶手段に格納された前記第2の種類のデータから前記残り時間内に送信できるサイズにデータを分割した分割データを抽出して前記情報処理装置へ送信し、
前記情報処理装置が、前記分割データを受信すると、当該分割データを分割データ記憶手段に格納し、
前記通信装置が、第1の種類のデータの通信が完了するたびに、前記記憶手段を参照して、前記第2の種類のデータのうちの未送信データにつき前記分割データを抽出して前記情報処理装置へ送信し、
前記情報処理装置が、前記第2の種類のデータを復元するための前記分割データを全て受信すると、前記分割データ記憶手段を参照して各分割データを結合し、前記第2の種類のデータを取得する、
ことを特徴とする通信方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010220694A JP2012080171A (ja) | 2010-09-30 | 2010-09-30 | 通信プログラム、通信装置および通信方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010220694A JP2012080171A (ja) | 2010-09-30 | 2010-09-30 | 通信プログラム、通信装置および通信方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2012080171A true JP2012080171A (ja) | 2012-04-19 |
Family
ID=46239959
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010220694A Pending JP2012080171A (ja) | 2010-09-30 | 2010-09-30 | 通信プログラム、通信装置および通信方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2012080171A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6161837B1 (ja) * | 2016-02-09 | 2017-07-12 | 三菱電機株式会社 | 通信装置およびフレーム送信方法 |
JP2019140603A (ja) * | 2018-02-14 | 2019-08-22 | オムロン株式会社 | 制御装置、制御システム、制御方法、および、制御プログラム |
-
2010
- 2010-09-30 JP JP2010220694A patent/JP2012080171A/ja active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6161837B1 (ja) * | 2016-02-09 | 2017-07-12 | 三菱電機株式会社 | 通信装置およびフレーム送信方法 |
WO2017138096A1 (ja) * | 2016-02-09 | 2017-08-17 | 三菱電機株式会社 | 通信装置およびフレーム送信方法 |
JP2019140603A (ja) * | 2018-02-14 | 2019-08-22 | オムロン株式会社 | 制御装置、制御システム、制御方法、および、制御プログラム |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108829350B (zh) | 基于区块链的数据迁移方法和装置 | |
CN109144414B (zh) | 区块链数据的多级存储方法和装置 | |
CN103309731B (zh) | 处理*** | |
US8966039B1 (en) | End-to-end communication service monitoring and reporting | |
CN112702198B (zh) | 异常根因定位方法、装置、电子设备及存储介质 | |
CN111262898A (zh) | 服务降级处理方法、装置及电子设备 | |
JP5595334B2 (ja) | ドライブユニットにおける非データ伝送のための時間バジェティング | |
CN108629653A (zh) | 一种低延时库存扣减服务***及方法 | |
JP2012080171A (ja) | 通信プログラム、通信装置および通信方法 | |
JP2015161999A (ja) | ストレージ装置,制御装置及び制御プログラム | |
US7890958B2 (en) | Automatic adjustment of time a consumer waits to access data from queue during a waiting phase and transmission phase at the queue | |
JP6717008B2 (ja) | 情報生成プログラム、情報生成方法及び情報生成装置 | |
US20210241202A1 (en) | Tracking of equipment utilization via distributed ledger | |
CN115086203B (zh) | 数据发送方法、装置、电子设备及计算机可读存储介质 | |
JP2012027727A (ja) | 記憶装置、ストレージシステム及び制御方法 | |
JP2006338562A (ja) | 金融商品管理システム及び金融商品管理方法 | |
JP5375360B2 (ja) | クラウドトランスコードシステム及び方法並びに情報処理端末、トランスコード処理受託端末 | |
CN113191901B (zh) | 一种交易业务处理方法、装置、设备和存储介质 | |
JP4644377B2 (ja) | 負荷監視システム | |
US11176009B2 (en) | Implementing power up detection in power down cycle to dynamically identify failed system component resulting in loss of resources preventing IPL | |
JP6960749B2 (ja) | サーバ装置及びプログラム | |
JP2014078166A (ja) | 情報処理装置、ログ出力制御方法、およびログ出力制御プログラム | |
JP2023028417A (ja) | 情報処理装置、情報処理方法および情報処理プログラム | |
CN116091232A (zh) | 交易处理方法、装置、设备及存储介质 | |
JP2021093054A (ja) | 情報処理装置およびプログラム制御方法 |