JP4531280B2 - プッシュ型情報配信方法、プッシュ型情報配信用プログラム、及びプッシュ型情報配信装置、記憶媒体 - Google Patents
プッシュ型情報配信方法、プッシュ型情報配信用プログラム、及びプッシュ型情報配信装置、記憶媒体 Download PDFInfo
- Publication number
- JP4531280B2 JP4531280B2 JP2001079873A JP2001079873A JP4531280B2 JP 4531280 B2 JP4531280 B2 JP 4531280B2 JP 2001079873 A JP2001079873 A JP 2001079873A JP 2001079873 A JP2001079873 A JP 2001079873A JP 4531280 B2 JP4531280 B2 JP 4531280B2
- Authority
- JP
- Japan
- Prior art keywords
- distribution
- data
- terminal
- transmission
- update
- 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.)
- Expired - Lifetime
Links
Images
Description
【発明の属する技術分野】
本発明は、例えば秒単位や分単位で更新されたデータを、サーバからインターネット等のネットワークを通して端末にリアルプッシュ方式で配信するプッシュ型情報配信方法、プッシュ型情報配信用プログラム、記録媒体及びプッシュ型情報配信装置に関するものである。
【0002】
【従来の技術】
近年、刻々と変化する為替レートやニュースなどの各種情報をインターネットを通じて端末に提供するサービスが行われている。この種の配信方法として、従来、ユーザが見ている画面上のデータがリアルタイムに自動的に更新されるプッシュ型配信方法が知られている。
【0003】
このプッシュ型配信方法には、一定時間間隔でサーバに対し端末側からデータを取得しに行き接続は1回毎に行うスマートプル方式と、サーバと端末は接続を維持してデータに変化があった更新時のみサーバ側から端末にデータを送信するリアルプッシュ方式とが知られている。しかし、為替レートやニュースなどのリアルタイム性が要求される情報の提供には、ユーザが見ているデータがリアルタイムで自動的に更新されるリアルプッシュ方式の方がより現実的である。
【0004】
ところで、インターネットで情報提供サービスを受けるユーザ数が例えば数千〜数万人にも及ぶ場合でも、これらのユーザの端末にプッシュ型配信方法で情報を安定的に提供する必要がある。
【0005】
【発明が解決しようとする課題】
しかし、リアルプッシュ方式を採用した場合、非常に多数のユーザに情報を安定的に提供しようとすると、非常に多数台のサーバを設置しなければならないという問題があった。これはプッシュ型配信方法では、更新データを複数のユーザに時間差なく配信するためにマルチタスク処理が採用されていることに原因がある。マルチタスク処理は、ユーザ一人に1つずつ用意した複数の配信プログラムを極く短時間に切換えながら同時並列的に処理する方式であるため、ある程度の数までのユーザに対してはさほど遅延なくほぼ同時期に配信処理ができるが、ユーザ数が非常に多い場合は非常に多数のプログラム間を切換える切換処理に却って時間を要し、遅延の原因となっていた。また、同時に接続するユーザ数分のCPUなどのサーバ資源が、接続ユーザ数に対しリニアに消費される。また、特にインターネット回線の場合、ユーザ一人ひとりの通信環境(回線環境や端末環境等)が大きく異なり、最も通信環境の悪いユーザにシステム全体のパフォーマンスを左右され易いという問題があった。
【0006】
このため、サーバ1台当たりが受け持つ端末数をある程度の数に制限せざるを得ず、例えば数千〜数万人のユーザを相手とする情報配信システムを構築する場合、サーバ設置台数が非常に多くなるという問題があった。このような事情から、同時接続可能な端末数を多くしインターネットという個々のユーザ毎に異なる回線状況にあってなおデータのリアルタイム性を確保できる配信方法が要求されていた。
【0007】
本発明は、前記課題を解決するためになされたものであって、その第1の目的は、秒単位や分単位で更新されるデータでもユーザの端末にさほど表示の遅延を伴わずインターネット等のネットワークを介して配信でき、しかもサーバとして用いられるコンピュータの負荷を軽減することによって、1台のサーバが受け持つ端末数を増やすことを可能とするプッシュ型情報配信方法、プッシュ型情報配信用プログラム、記録媒体及びプッシュ型情報配信装置を提供することにある。また、第2の目的は、ユーザ毎の通信環境に応じて配信方式を切り替えることによって、通信環境の悪い一部のユーザによってサーバ全体のパフォーマンスが左右されることを起き難くすることにある。
【0008】
【課題を解決するための手段】
上記第1の目的を達成するために請求項1に記載の発明は、端末から受け付けた情報についてそのデータが更新されると、その更新されたデータを前記端末に対しコンピュータネットワークを通じてプッシュ方式で配信するプッシュ型情報配信方法であって、コンピュータのOS層に格納された非同期型通信プロトコルによって複数の端末に対する送受信処理を司る送受信手段を構築するとともに、プッシュ方式の配信処理を該送受信手段に非同期で実行させるように指示するようにし、端末から受け付けた情報についてそのデータが更新されたことをコンピュータの更新検出手段が検出する段階と、コンピュータの配信手段が、前記更新が検出された前記情報の配信待ち状態にある複数の端末のうち送信可能状態にある端末に該更新データを配信するための配信処理を前記送受信手段にシリアライズ処理で指示するとともに、その際に前記送受信手段が送信中の端末に対しては送信せず該更新データを一時保管し、当該送信中の端末が送信可能状態になったことを知ると、それまでに保管されて溜まったデータをまとめて該端末に送信する送信処理を前記送受信手段に指示する段階とを備えたことを要旨とする。
【0009】
この発明によれば、配信手段は送受信手段に配信処理又は送信処理を指示すれば、その指示した処理は配信手段と非同期で動作する送受信手段が実行するため、例えば端末から受信の応答を待つことなく、配信手段は処理を指示した後に直ぐ次の処理に移ることができる。またデータ更新検出時にシリアライズ処理(ループ処理)で配信処理を指示するため、同時並列処理(マルチタスク法)のような多数プログラム間の切換処理を伴わず、配信先の端末数がかなり多数であっても遅延し難く、しかも全ての配信先でデータを共有できるためメモリ資源を消費し難い。また送信中の端末には送信可能状態になったときにそれまで保管して溜まったデータをまとめて送信するため、端末に早くデータを送信できるうえ、コンピュータの負荷も軽減される。
【0010】
前記第2の目的を達成するために請求項2に記載の発明は、請求項1に記載のプッシュ型情報配信方法において、端末毎に適用される配信方式として、更新起動型配信方式とタイマ起動型配信方式との二方式を備え、前記情報のデータ更新検出時に起動されてその情報を待つ端末に対し該更新データを配信する更新起動型配信方式の処理をコンピュータの配信手段が行う段階と、端末毎の通信速度を直接又は間接的にコンピュータが判定する段階と、更新起動型配信方式が適用された端末のうち通信速度が基準より遅いと判断された端末についてはその適用される配信方式を、更新起動型配信方式からタイマ起動型配信方式にコンピュータの切替手段が切り替える段階と、コンピュータのタイマ手段により設定時間毎に起動されてその起動時の最新の更新データを前記タイマ起動型配信方式が適用された端末に配信するタイマ起動型配信方式の処理を前記配信手段が行う段階とを備えたことを要旨とする。
【0011】
この発明によれば、更新起動型配信方式が適用された端末は、更新の度にデータが配信されるが、例えば通信環境が悪く通信速度の遅い端末については、適用される配信方式が、更新起動型配信方式からタイマ起動型配信方式に切り替えられる。このように端末毎の通信環境に応じて配信方法を切り替えることによって、通信環境の悪い一部の端末(ユーザ)によってサーバ全体のパフォーマンスが左右される不都合が起き難くなる。なお、タイマ起動型配信方式の設定時間は、その起動頻度が更新起動型配信方式の起動頻度(更新頻度)よりも少なくなるように設定されるのが望ましい。
【0012】
請求項3に記載の発明は、端末から受け付けた情報についてそのデータが更新されると、その更新されたデータを前記端末に対しコンピュータネットワークを通じてプッシュ方式で配信するサーバ機能をコンピュータに実現させるプッシュ型情報配信用プログラムであって、特に、コンピュータのOS層に格納された非同期型通信プロトコルによって構築された送受信手段に対しプッシュ方式の配信処理を指示するまでの処理を行うアプリケーションが有するプログラムであり、コンピュータを、端末から受け付けた情報についてそのデータが更新されたことを検出する更新検出手段と、前記更新検出手段が前記情報についてそのデータが更新されたことを検出すると、その更新データを該情報の配信待ち状態にある複数の端末のうち送信可能状態にある端末に配信するための配信処理を前記送受信手段にシリアライズ処理で指示するとともに、その際に前記送受信手段が送信中の端末に対しては送信せず該更新データを一時保管し、当該送信中の端末が送信可能状態になったことを知ると、それまでに保管されて溜まったデータをまとめて該端末に送信するための送信処理を前記送受信手段に指示する配信方式をとる配信手段として機能させることを要旨とする。
【0013】
この発明によれば、請求項1に記載の発明と同様の作用効果が得られる。
請求項4に記載の発明は、請求項3に記載のプッシュ型情報配信用プログラムにおいて、前記配信手段は、前記配信方式である第1配信方式と、該第1配信方式とはデータ更新検出時に前記送信可能状態の端末に対する配信処理をシリアライズ処理で指示し、前記送信中の端末に対して前記更新データを一時保管するまでは同じ処理で、送信中の端末が送信可能状態となったことを知ると、それまでに保管されて溜まったデ−タのうち更新時期の異なる同一情報のデータについては最新データのみを採用する間引き処理をして該間引き処理後のデータをまとめて該端末に送信する送信処理を前記送受信手段に指示する第2配信方式とを採用し、コンピュータを、前記配信手段と、端末毎の通信速度を直接又は間接的に判定する判定手段と、前記判定手段により通信速度が基準よりも遅いと判定された端末に対しては、前記第1配信方式から第2配信方式に切り替える切替手段として機能させることを要旨とする。
【0014】
第1配信方式が適用された端末の通信速度が基準よりも遅いと判定されると、その端末には第2配信方式が適用される。よって、送信可能状態となった端末にそれまで保管されて溜まったデータをまとめて送信する際に、間引き処理が行われ、更新時期の異なる同一情報のデータについては最新データのみが採用されて古いデータが間引かれるため、送信されるデータ量が少なく済み通信負荷の低減により通信速度を速められるうえ、コンピュータの負荷も軽減される。
【0015】
請求項5に記載の発明は、請求項3又は4に記載のプッシュ型情報配信用プログラムにおいて、前記配信手段は、プッシュ方式配信の対象とされる端末に適用される配信方式として、データ更新検出時に起動される前記配信方式である更新起動型配信方式の処理と、コンピュータのタイマ手段によって設定時間毎に起動されるタイマ起動型配信方式の処理とを採用しており、コンピュータを、端末毎に通信速度を直接又は間接的に判定する判定手段と、前記判定手段により通信速度が基準よりも遅いと判定された端末に対してはその適用される方式を、前記更新起動型配信方式からタイマ起動型配信方式に切り替える切替手段と、前記タイマ起動型配信方式に切り替えられた端末に対しては、前記タイマ手段による設定時間毎の起動時における最新の更新データを該情報の配信待ち状態にある複数の端末のうち送信可能状態にある端末に配信する配信処理を前記送受信手段にシリアライズ処理で指示するとともに、その際に前記送受信手段が送信中の端末に対しては送信せず該更新データを一時保管し、当該送信中の端末が送信可能状態になったことを知ると、それまでに保管されて溜まったデータをまとめて該端末に送信する送信処理を前記送受信手段に指示する前記配信手段として機能させることを要旨とする。
【0016】
この発明によれば、更新起動型配信方式が適用される端末の通信速度が基準よりも遅いと判定されると、この端末に適用される配信方式が更新起動型配信方式からタイマ起動型配信方式に切り替えられる。このように端末毎の通信速度に応じて通信速度の遅い端末については、配信方法が更新起動型配信方式からタイマ起動型配信方式に切り替えられるため、通信環境の悪い一部の端末(ユーザ)によってサーバ全体のパフォーマンスが左右される不都合が起き難くなる。特に請求項4の発明において適用された場合、通信速度の遅い端末については、まず更新起動型配信方式の第1配信方式から第2配信方式に切り替わり、それでも通信速度が遅ければさらに第2配信方式からタイマ起動型配信方式に切り替わる。よって、適用される配信方式が端末毎に3段階のうちから自動切替えされることによって、通信環境の悪い一部の端末(ユーザ)によってサーバ全体のパフォーマンスが左右される不都合を一層防ぎ易くなる。
【0017】
請求項6に記載の発明は、請求項5に記載のプッシュ型情報配信用プログラムにおいて、前記配信手段には、前記タイマ起動型配信方式としてその起動される設定時間が異なる複数段階用意されており、端末毎に通信速度を直接又は間接的に判定する判定手段と、タイマ起動型配信方式が適用された端末のうち、前記判定手段により通信速度が基準よりも遅いと判定された端末に対しては、前記タイマ手段によって起動される設定時間のより長い段階へと切り替える切替手段とをサーバコンピュータに機能させることを要旨とする。
【0018】
この発明によれば、タイマ起動型配信方式に切り替えられた後においても、さらに端末の通信速度が基準よりも遅いと判定されると、設定時間がより長い段階へと切り替えられる。よって、通信環境の悪い一部の端末(ユーザ)によってサーバ全体のパフォーマンスが左右される不都合が一層起き難くなる。
【0019】
請求項7に記載の発明は、端末から受け付けた情報についてそのデータが更新されると、その更新されたデータを前記端末に対しコンピュータネットワークを通じてプッシュ方式で配信するサーバ機能をコンピュータに実現させるプッシュ型情報配信用プログラムであって、特に、コンピュータのOS層に格納された非同期型通信プロトコルによって構築された送受信手段に対しプッシュ方式の配信処理を指示するまでの処理を行うアプリケーションが有するプログラムであり、コンピュータを、複数段階設定された設定時間毎にコンピュータのタイマ手段によって起動され、その起動時における前記情報についての最新の更新データを該情報の配信待ち状態にある複数の端末のうち送信可能状態にある端末に配信する配信処理を前記送受信手段にシリアライズ処理で指示するとともに、その際に前記送受信手段が送信中の端末に対しては送信せず該更新データを一時保管し、当該送信中の端末が送信可能状態になったことを知ると、それまでに保管されて溜まったデータをまとめて該端末に送信する送信処理を前記送受信手段に指示する配信手段と、端末毎に通信速度を直接又は間接的に判定する判定手段と、前記判定手段により通信速度が基準よりも遅いと判定された端末に対しては、前記タイマ手段によって起動される設定時間がより長い段階の配信方式に切り替える切替手段として機能させることを要旨とする。
【0020】
この発明によれば、配信手段は送受信手段に配信処理又は送信処理を指示すれば、その指示した処理は配信手段と非同期で動作する送受信手段が実行するため、例えば端末から受信の応答を待つことなく、配信手段は処理を指示した後に直ぐ次の処理に移ることができる。また設定時間毎に起動されてシリアライズ処理(ループ処理)で配信処理を指示するため、同時並列処理(マルチタスク法)のような多数プログラム間の切換処理を伴わず、配信先の端末数がかなり多数であっても遅延し難い。また送信中の端末には送信可能状態になったときにそれまで保管して溜まったデータをまとめて送信するため、端末に早くデータを送信できるうえ、コンピュータの負荷も軽減される。端末の通信速度が基準よりも遅いと判定されると、設定時間がより長い段階の配信方式に切り替えられる。よって、通信環境の悪い一部の端末(ユーザ)によってサーバ全体のパフォーマンスが左右される不都合が起き難くなる。
【0021】
請求項8に記載の発明は、コンピュータ読み取り可能な記録媒体には、請求項3〜7のいずれか一項に記載のプッシュ型情報配信用プログラムが記録されていることを要旨とする。
【0022】
この発明によれば、記録媒体に記録されたプログラムより請求項3〜7のいずれか一項に記載の発明と同様の作用効果が得られる。
請求項9に記載の発明は、端末から受け付けた情報についてそのデータが更新されると、その更新されたデータを前記端末に対しコンピュータネットワークを通じてプッシュ方式で配信するプッシュ型情報配信装置であって、請求項3〜7のいずれか一項に記載された、コンピュータが備える前記送受信手段と、コンピュータが備える前記配信手段とを少なくとも含む、コンピュータが備える前記各手段を備えたことを要旨とする。
【0023】
このプッシュ型情報配信装置によれば、請求項3〜7のいずれか一項に記載された発明と同様の作用効果が得られる。
【0024】
【発明の実施の形態】
以下、本発明を具体化した一実施形態を、図1〜図8に基づいて説明する。
図1は、プッシュ型情報配信システムの構成ブロックを示す。
【0025】
プッシュ型情報配信システム1は、例えば秒単位または分単位で更新される情報をデータで提供する情報発信源サーバ2と、この情報発信源サーバ2から受信した更新データを配信するコンピュータとしての配信用サーバ(サーバコンピュータ)3と、配信用サーバ3に接続(ログイン)をする多数の端末(クライアント)4とから構成される。配信用サーバ3は、リアルプッシュ方式を採用するものである。
【0026】
配信用サーバ3は例えば専用回線を通じて情報発信源サーバ2と接続され、端末4はコンピュータネットワークとしてのインターネット5を通じて配信用サーバ3に接続する。この接続には例えばダイヤルアップ接続や専用回線接続などで行われ、この接続方式や端末性能(例えばモデム性能等)などの違いによってユーザ毎に通信環境は大きく異なる。
【0027】
配信用サーバ3は例えばパーソナルコンピュータからなり、本例では複数(例えば2つ)のCPUを有する。配信用サーバ3の例えばハードディスクには、OS(Operating Sistem)およびインターネット通信用プロトコルであるTCP/IPを含むOS用ソフトウェアと、リアルプッシュ方式の配信処理をするなどのためのアプリケーションプログラムが格納されている。この実施形態では、TCP/IPライブラリは「非同期」の設定がなされており、TCP/IPはアプリケーションプログラムと非同期で動作する非同期型通信プロトコルとしての非同期型TCP/IPとして機能する。
【0028】
OS管理下にある送受信部6は、非同期型TCP/IPから構成されている。送受信部6は、送受信ポートとして機能する複数の端末4用の接続ハンドル(接続ID)7と、情報発信源サーバ2用の接続ハンドル8とを備える。
【0029】
また配信用サーバ3は、通信制御部9、データテーブル10、ユーザテーブル11およびタイマ12を備えている。通信制御部9は、更新検出手段としての更新受付部13、ユーザ受付部14および配信手段としての配信処理部15を備え、さらに配信処理部15はプル処理部16およびプッシュ処理部17を備えている。各部9〜16はアプリケーションプログラムとCPUとメモリ等から構成されており、CPUがアプリケーションプログラムを実行することで実現される配信処理のための各種機能部として構成される。
【0030】
通信制御部9は、送受信部6からの各種TCP/IPイベントにより起動される。また、送受信部6は通信制御部9と非同期で動作し、更新データの受付処理、端末(ユーザ)4の受付処理、ユーザへの配信処理などを司る。更新受付部13は更新イベントにより起動され、接続ハンドル8を通じて受信した更新データをデータテーブル10に格納する。またユーザ受付部14は要求イベントにより起動され、端末4のログイン処理をして接続ハンドル7を割り当てるとともにユーザに関するデータ(接続ハンドルID等)をユーザテーブル11に格納する。
【0031】
プル処理部16は、端末4からユーザが見たい情報についての最初のアクセスを受け付けた時にプル方式でデータ送信処理をし、プッシュ処理部17はその後のログイン中にリアルプッシュ方式(以下、単にプッシュ方式と称す)で更新データの配信処理をする。ユーザが一度アクセスして端末4の画面上に表示されたデータ(表示内容)は、配信用サーバ3がプッシュ方式の配信処理をすることによって、再度のアクセスをしなくても自動的に更新される。
【0032】
通信制御部9は、非同期型TCP/IPのプロトコルからなるOS管理下の送受信部6に対し更新データの配信の依頼(指示)をする配信依頼処理をし、送受信部6は、プル処理部16またはプッシュ処理部17から受け付けた配信処理を非同期で実行する。送受信部6では、配信処理の際、端末4への更新データ配信後、配信した全ての端末4から受信応答(ACK)を受信するまでデータを保持して待機し、送信ミスがあれば再送処理をし、全ての端末4からACKを受信してからデータを破棄する。このようにACK受信確認するまで次の処理に移行できないが、プッシュ処理部17と送受信部6とは非同期であることから、プッシュ処理部17は送受信部6にデータの配信(送信)を依頼さえすれば配信処理が完了するまで待つことなく次の処理に移ることができる。
【0033】
配信用サーバ3は、リアルタイム配信の定義を最新データに対して遅延を最大限少なく配信することと定義してユーザ〜サーバ間の接続環境やデータ特性に見合ったデータ配信方式を選択する。非同期型TCP/IPとスレッドプールとの組み合わせによる同時配信処理数の高効率化を図ることを特徴とする。
【0034】
本実施形態では、高効率な配信を実現するためのベースとして、全てのTCP/IP通信処理動作は、非同期型TCP/IPライブラリとスレッドプールの概念とを使用する。非同期型では接続ハンドルと処理との分離に加え、通信処理の完了を待たずに次の動作へ移ることが可能である。プッシュ処理部17では、同一キー(同一情報)の更新データの配信を待つ全ユーザに対する配信処理に一つの処理スレッドを作成し、一つの処理スレッドをループ処理で実行することにより、更新データをユーザ一人ずつ順番にシリアライズ送信する。
【0035】
送受信部6は、各端末4へ更新データ配信後、端末4から受信確認応答(ACK)を受信して接続ハンドル7が空くまで次のデータを送信できない。そのため、送信中のユーザについては送信完了イベントが発生するまで、そのユーザの配信のための処理スレッドを一時メモリに格納(プール)する。そして、ユーザ毎にデータを送信待ちキューに一時格納し、送信完了イベントの発生によって接続ハンドル7の空きが確認されると、そのユーザの送信待ちキューに格納されたデータの送信を送受信部6に依頼する。
【0036】
ここで、メモリに格納しておけるスレッド数(ユーザ数)=同時起動数に上限が設定されている。これは、同時に動作するスレッド数を制限しないと送信完了イベントが仮に同時に全ユーザ分発生した場合に、その分のスレッドを起動してしまうと、CPU効率が著しく落ちてしまい、送信の場合にシリアライズ化した意味がなくなってしまうからである。プールするスレッド数を制限することで結果として送信完了イベントや配信要求に基づく処理も、ある程度のシリアライズ(経時時間に従って順番に処理)がなされる効果がある。つまり本実施形態では、同時にイベント(接続要求や受信、送信完了)が発生した場合においても、意識的に同時稼動処理数を制限してシリアライズ化させることでCPU数に見合った最も効率的な同時処理と使用メモリ低減が可能となる。
【0037】
また本実施形態では、ユーザ毎の通信環境(回線種等)やデータ特性の違いを考慮し、その通信速度に応じて配信方法をユーザ毎に柔軟に切り替える方式を採用している。配信方法として3つの方式を採用する。すなわち、通信速度の高速なユーザにはベストエフォート(BEST EFFORT )方式(第1配信方式と称す)、通信速度のやや遅いユーザにはデファード(DEFERRED)方式(第2配信方式と称す)、通信速度の遅いユーザにはタイマ(TIMER )配信方式を採用する。判定手段としての判定部17Aがユーザ毎に通信速度を判定し、通信速度が遅いと判定されたユーザには、第1配信方式(単に第1方式という)→第2配信方式(単に第2方式という)→タイマ配信方式(単にタイマ方式という)の順で段階的に配信方式が自動的に切り替えられる設定となっている。この配信方式の切替えは、切替手段としてのプッシュ処理部17が行う。
【0038】
第1方式と第2方式は、更新イベントにより起動される更新起動型の配信方式であり、タイマ方式はタイマ12により設定時間(一定時間間隔)t1 ,t2 ,…,tn (但し、t1 <t2 <…<tn )毎に起動されるタイマ起動型の配信方式である。ここで、一定時間間隔t1は、更新起動型の第1方式および第2方式よりも、起動間隔時間が相対的に長くなるように設定されている。なお、本実施形態では、タイマ方式に設定される設定時間を複数段階(n段階)としているが、設定時間は1段階とすることもできる。
【0039】
次に、通信制御部9が管理するデータテーブル10およびユーザテーブル11について説明する。
図3に示すように、データテーブル10は、更新データの管理、更新データの配信処理をする際に配信必要性の有無や配信先の特定などをするための参照用に使用されるもので、キー項目、データ項目、更新フラグ、配信待ちキュー、およびTIMER 配信待ちキューなどのデータ列からなる。キー項目には、情報の識別番号であるキーが格納される。データ項目には更新データが格納される。例えば更新イベントにより更新通知がなされた更新データは同一キーのデータに上書きされ、データ項目には常に最新の更新データが格納される。更新フラグには、タイマ配信処理用のデータ更新を示すフラグが格納される。配信待ちキューには、第1方式と第2方式での配信待ちユーザエントリ用待ち行列が格納される。タイマ方式の配信待ちキューには、タイマ方式での配信待ちユーザエントリ用待ち行列が格納される。
【0040】
図4に示すように、ユーザテーブル11には、接続ハンドル、送信中フラグ、間引き送信フラグ、配信待ちエントリ用バッファ配列、送信待ちキュー、送信待ちキュー格納数およびキープアライブ(KeepAlive )受信時刻などのデータ列からなる。「接続ハンドル」とは、接続中の端末4毎に設定されるコネクションIDの識別番号である。「送信中フラグ」とは、非同期TCP/IP送信の完了待ちフラグである。「間引き送信フラグ」とは、第2方式またはタイマ方式が適用されているときにオンになるフラグである。「配信待ちエントリ用バッファ配列」とは、データテーブル10にエントリするためのバッファ配列を示す。バッファ配列は、「データキー」,「後方ポインタ」,「前方ポインタ」,「ユーザID」,「TCPハンドル」,「配信方式」等からなる。「送信待ちキュー」には、送信待ちデータエントリ用待ち行列が格納される。「送信待ちキュー格納数」は、送信待ちキューに格納されたエントリデータ数を示す。「キープアライブ受信時刻」とは、キープアライブ電文受信時刻を格納するためのものである。
【0041】
次にユーザ毎に配信方法が切り替えられる3つの方式の内容について説明する。
(1)第1方式(BEST EFFORT 方式)は、更新イベントが発生した際にデータ毎の配信待ちキューにエントリしている(配信の要求を行っている)各ユーザのうち送信中でないユーザについてはシリアライズ送信依頼を行うとともに、前回の送信が完了していない場合にユーザ単位ごとの送信待ちキューに一旦データを格納し、送信完了時に送信待ちキューの複数データを1つにまとめて送信する。これによりユーザの端末4までの回線速度に合わせた遅延および送信パケット数を抑えた回線効率の良い配信を実現する。1ユーザあたりの送信待ちキュー格納数が上限値(設定数)を超えた場合は、自動的に第2方式に移行する設定としている。
【0042】
(2)第2方式(DEFERRED方式)は、更新イベントが発生した際に配信待ちキューへの格納までは第1方式と同様であるが、配信時に配信待ちキュー内に同一キーデータが複数存在した場合は、未送信の古いデータを破棄し最新のデータのみを編集して1データとして送信する。結果的に間引きされて第1方式に比較して1回の送信パケットサイズを減らして送信が行われる。1ユーザあたりの送信待ちキュー格納数が上限値(設定数)を超えた場合は、自動的にタイマ方式に移行する設定としている。
【0043】
(3)タイマ方式(TIMER 方式)は、タイマ12の設定時間毎に処理を起動し、その起動時にデータテーブル10が更新されていた場合のみ、その最新の更新データのみを送信する。タイマ方式の配信待ちキューにあるユーザには設定時間tk内に複数回の更新があっても直近の最新データ以外の更新データが結果的に間引かれて配信される。タイマ方式に移行したときは最初に設定時間t1が設定され、1ユーザあたりの送信待ちキュー格納数が上限値を超えた場合は、設定時間tkから次段階の設定時間tk+1に切り替えられ、最終的に最後の段階の設定時間tnでも送信待ちキュー格納数が上限値(設定数)を超えたときは極度にリアル性が低下するとしてその端末4の接続を切断する。なお、上限値は各方式毎に異なる値を設定してもよい。
【0044】
このようにユーザ毎の送信待ちキュー格納数から判定される通信速度に応じてユーザ毎に配信方式を切り替える。よって、サーバ3までのインターネット接続環境で常に高速な回線を使用するユーザには第1方式が適用され、低速な回線を使用するユーザによる大規模同時接続に対しては実用上問題の無い範囲内でデータ量を間引く第2方式またはタイマ方式が適用される。自動的に配信方式の切替えが行われた場合は、配信方式変更のコマンド電文をユーザの端末4に送信し、ユーザに対して回線状況の悪化を知らせて別の接続ルートを促す。
【0045】
データ特性上、第2方式およびタイマ方式による間引き送信が許されるデータの例としては、刻々更新される値段や数値の情報に関するデータが挙げられる。これはユーザにとって最新データさえ見られれば十分で、秒単位で数回更新された全てのデータを漏れなく配信するために遅延して表示されるよりも、多少間引かれても最新データが早く表示されることの方がより重要だからである。逆にデータ特性上、間引き送信があってはならない例としてニュースなどがある。情報がニュースである場合は、第1方式のみが採用される。
【0046】
図2は、配信処理用アプリケーションプログラムを構成する各処理を示すブロック図である。情報発信源サーバ2は、更新アプリケーション2Aおよび更新モジュール2Bを備え、サーバ2のAPI コールを呼び出すことにより配信用サーバ3にTCP/IP接続し、最新データを配信用サーバ3に送信する。また端末4は、アプリケーション(ブラウザ等)4Aおよびクライアントモジュール4Bを備えており、端末4のAPI コールを呼び出すことによりインターネット5を通じて配信用サーバ3にTCP/IP接続する。
【0047】
サーバ3は、例えばネットワークカード等からなるハードウェア層18、OSおよび非同期型TCP/IPからなるOS層19およびアプリケーション層20を有している。非同期型TCP/IPにより構成される送受信部6はOS層19に属する。
【0048】
アプリケーション層20には、配信処理用アプリケーションを構成するプログラム群およびデータ群がある。図1のアプリケーション部分の各構成部10〜17は、CPUが図2の各処理(小プログラム群)を実行することで実現される。その対応関係を述べると、図2に示すように、更新受付部13は、更新側TCP/IPイベント管理(更新側イベント管理と称す)21と更新受付処理22とを有する。また、ユーザ受付部14は、配信側TCP/IPイベント管理(ユーザイベント管理と称す)23、ユーザ受付処理24、キープアライブタイマ処理25およびクリーナップ処理26を有する。さらに配信処理部15は配信処理27を有し、タイマ12はタイマ処理28を有する。
【0049】
更新側イベント管理部21は、サーバ2の接続、切断やデータ受信などの各TCP/IPイベントを受け付け、データスレッド(プログラム)を起動する。更新側イベント管理部21は、スレッドプールで構成されており、CPU数に応じて同時起動する処理スレッド数を規定し、規定数を超えた場合はシーケンシャルに起動処理を行うことで、処理スレッド数過多によるOSのオーバーヘッドを防ぐ。
【0050】
更新受付処理22は、更新側イベント管理部21から受け付けた各TCP/IPイベントによって起動されるデータスレッドからなる。データスレッドは、各TCP/IPイベントの種類に応じて起動される3つの処理群を有する。すなわち(1) ログイン受付処理、(2) ログアウト受付処理、(3) 受信処理である。(1) ログイン受付処理は、TCP/IP接続を受け付ける処理である。(2) ログアウト受付処理は、TCP/IP切断を受け付ける処理である。(3) 受信処理は、配信処理27を呼び出して更新データを配信処理27に引き渡す処理である。
【0051】
ユーザイベント管理23は、ユーザクライアントからの接続、切断や送信完了などの非同期TCP/IPイベントを受け付け、ユーザスレッド(プログラム)を起動する。ユーザイベント管理23は、スレッドプールで構成されており、CPU数に応じて同時起動する処理スレッド数を規定し、規定数を超えた場合はシーケンシャルに起動処理を行うことで、処理スレッド数過多によるOSのオーバーヘッドを防ぐ。
【0052】
ユーザ受付処理24は、ユーザイベント管理23が受け付けた各TCP/IPイベントにより起動されるユーザスレッド(プログラム)からなる。ユーザスレッドは、各TCP/IPイベントの種類に応じて起動される8つの処理群を有する。すなわち、(1) ログイン受付処理、(2) ログイン要求受信、(3) ログアウト処理、(4) 配信要求受信処理、(5) キープアライブ受信処理、(6) 送信完了処理、(7) 再送処理、(8) エラー処理である。
【0053】
(1) ログイン受付処理は、TCP/IP接続を受け付け、ユーザテーブル11へのエントリを追加する処理である。(2) ログイン要求受信処理は、ユーザIDを指定してデータの配信のために配信処理27の呼び出しをする処理である。(3) ログアウト受付処理は、TCP/IP切断を受け付け、クリーナップ処理26へ通知する処理である。(4) 配信要求受信処理は、データテーブル10の配信待ちキューへのエントリ追加およびデータテーブル10の最新データを配信処理27へ通知する処理である。(5) キープアライブ受信処理とは、ユーザの端末4の通信接続が生きているかをサーバ3が監視するために、端末4が一定間隔刻みで送信してくるキープアライブデータを受信した時のキープアライブ受信時刻をユーザテーブル11に書き込む処理である。(6) 送信完了処理は、TCP/IP送信の完了(送信完了イベント)を受け付け、配信処理27へ送信完了を通知する処理である。(7) 再送処理は、TCP/IP送信においてパケット分割が発生した場合、配信処理27へ通知する処理である。(8) エラー処理は、クリーナップ処理26へ通知する処理である。
【0054】
キープアライブタイマ処理25は、設定時間毎にタイマにより起動され、ユーザテーブル11にキープアライブ受信時刻が入っているかをユーザ数分チェックし、チェック後キープアライブ受信時刻をクリアする。設定時間間隔を過ぎてもキープアライブ受信時刻が入っていないユーザは正常にログアウトしないで終了したと判断してそのユーザの端末4を通信不通とみなし、切断のためにクリーナップ処理26を呼び出す。
【0055】
クリーナップ処理26は、ユーザテーブル11における指定ユーザのレコードおよびデータテーブル10の配信要求等の全データの削除(クリア)、およびTCP/IP接続の切断処理を行う。これによりコネクションやユーザテーブル11などに無駄なリソースが残ることを回避する。
【0056】
タイマ処理28は、タイマ方式の配信でタイマにより予め設定された複数種の設定時間tk毎の時刻になると、配信処理27に対し、タイマ方式の設定時間tkが適用された配信待ちのエントリユーザに対するタイマ配信処理を行うことを指示するタイマ配信通知を行う。タイマ処理28は例えばユーザテーブル11にタイマ方式が適用されたユーザが存在するときのみ、タイマ配信通知を行う。
【0057】
配信処理27は、更新データの蓄積、配信に関する制御を行うプログラムからなり、他の処理から受け付けた通知の種類に応じて起動される5つの処理を備える。すなわち(1) 更新データ蓄積処理、(2) プル処理、(3) 更新データ配信処理、(4) 送信完了処理および(5) タイマ配信処理である。なお(3) 〜(5) の処理はプッシュ処理に該当する。
【0058】
(1) 更新データ蓄積処理は、データテーブル10を検索し、該当キーレコードが存在する場合、上書きし、存在しない場合は追加保存する。この時、該当レコードの更新フラグをオンにする。
【0059】
(2)プル処理は、端末4の画面上でのアクセスを受け付けたときに、ユーザイベント管理23の配信要求受信処理が通知する配信要求によって起動され、データテーブル10からその要求キーのデータ項目を編集して送信する送信依頼を行う。
【0060】
(3) 更新データ配信処理は、更新データを受信した際にデータテーブル10の配信待ちキュー(第1方式、第2方式)にユーザエントリが存在する場合、全てのエントリ数分のループ処理を行う。ユーザテーブル11におけるエントリユーザのレコードを参照し、送信中フラグがオフの場合はそのユーザに対する送信依頼を行う。送信中フラグがオンの場合は、その場で送信せずにユーザテーブル11の送信待ちキューにエントリを行う。
【0061】
(4) 送信完了処理は、送信完了ユーザの送信待ちキューにエントリデータが存在する場合、全てのエントリデータを取り出し、ユーザの間引き送信フラグがオフ(第1方式)の場合、全データ(複数キー含む)を同一パケットでまとめて送信する。またユーザの間引き送信フラグがオン(第2方式またはタイマ方式)の場合、同一キーデータについては最新データのみとする間引き処理を行い、複数キーデータを同一パケットでまとめて送信する。送信待ちキューにエントリデータが存在しない場合は送信中フラグをオフとする。
【0062】
(5) タイマ配信処理は、タイマ処理28から設定時間tkのタイマ配信要求を受け付けた場合、データテーブル10を参照してその設定時間tkの更新フラグがオンとなっているキーが存在すれば、そのキーについて設定時間tkの配信待ちキューのエントリユーザを取り出す。そして、ユーザテーブル11を参照してそのエントリユーザの送信中フラグがオフの場合は、更新データを送信する送信依頼を行う。一方、送信中フラグがオンの場合は、ユーザテーブル11の送信待ちキューにエントリする。なお、配信処理27では上記5つの処理の他に送信中パケットをTCP/IP非同期で再送する再送処理も行われる。
【0063】
次に、第1方式、第2方式、タイマ方式の各配信処理および端末(ユーザ)毎の通信環境に応じた配信方式に自動切り替えする処理について、図5〜図7に示すフローチャートを用いて説明する。
【0064】
ここで、図5は、第1方式と第2方式において更新イベントによって起動されるプログラムであり、配信処理27における更新データ配信処理に相当する。また図6は、タイマ方式においてタイマ処理28からのタイマ配信要求を受け付けた時に起動されるプログラムであり、配信処理27におけるタイマ配信処理に相当する。また図7は、送信完了イベントによって起動されるプログラムであり、配信処理27における送信完了処理に相当する。
【0065】
多数の端末4がサーバ3にログインし、各ユーザは端末4の画面上に見たい情報があるとこれにアクセスする。サーバ3がそのアクセスを受信すると、送受信部6はアクセスによって要求された情報について要求イベントを発生し、ユーザスレッドが起動されて配信要求受信処理によって配信要求が配信処理27に通知される。さらに配信処理27ではその通知によってプル処理が起動され、要求イベントに応じる形でプル処理部16によってプル方式でのデータ送信が行われる。ログイン後の端末4とサーバ3との接続は維持される。また、サーバ3には情報発信源サーバ2から所定の情報の更新データが逐次送信されてくる。サーバ3が更新データを受信して送受信部6からの更新イベントを受け付けると、更新側イベント管理21は更新受付処理22のデータスレッドを起動させる。そして受信処理によって更新データは更新通知と共に配信処理27に引き渡される。
【0066】
<更新起動型配信依頼ルーチン>
配信処理27は、更新データおよび更新通知を受信する度に、図5の更新起動型配信依頼ルーチンを実行する。これは第1方式と第2方式のユーザを対象とする配信処理である。
【0067】
図5に示すように、ステップ(以下、「S」と記す)11では、データテーブル10における該当キーのデータ項目に更新データを上書き(更新)する。この際、データテーブル10においてその該当キーのタイマ方式用の更新フラグをオンにする。
【0068】
S12では、そのキーを待つユーザ(第1方式または第2方式)の配信待ちキューを読み出し、最初であるここでは配信待ちキューに格納されたうちまず最初のユーザを読み出す。
【0069】
S13では、ユーザテーブル11を参照し、送信可能状態(送信中フラグオフ)にあるユーザ(接続ハンドル)であるか否かを判断する。送信可能状態のユーザであればS14に進み、送信中ユーザであればS16に進む。
【0070】
S14では、そのユーザの接続ハンドルを指定して送受信部6に更新データの送信依頼をする。
S15では、送信依頼を終えたユーザを送信中とする。つまり、ユーザテーブル11においてそのユーザ(接続ハンドル)の送信中フラグをオンにする。
【0071】
S16では、ユーザテーブル11中のそのユーザ(接続ハンドル)の送信待ちキューに更新データを格納(エントリ)する。
S17では、送信待ちキューの格納数が上限値を超えたかどうかを判断する。その格納数が上限値を超えた場合はS18に進み、上限値を超えない場合はS19に進む。
【0072】
S18では、次段階の配信方式へ移行する。すなわち送信待ちキューの格納数が上限値を超えたユーザに適用された配信方式が第1方式であれば第2方式に移行し、その上限値を超えたユーザに適用された配信方式が第2方式であればタイマ方式に移行する。第1方式から第2方式への移行は、ユーザテーブル11の間引き送信フラグをオンにすることによって行われる。また第2方式からタイマ方式への移行は、データテーブル10中の配信待ちキューの格納データをタイマ方式の設定時間t1の配信待ちキューに移動させることで行う。
【0073】
S19では、配信待ちキューにエントリされた全ユーザ(接続ハンドル)について処理を終えたか否かを判断する。全ユーザ終了したときは当該ルーチンを終了する。一方、全ユーザ終了していなければS12に戻り、全ユーザの処理を終えるまでS12〜S18の処理をループ処理で繰り返し行う。これにより配信待ちキューのうち送信中でない各ユーザ(接続ハンドル)に対する更新データの送信はユーザ一人ずつ順番にシリアライズ送信依頼(シリアライズ処理)される。この配信の指示を受けた送受信部(非同期型TCP/IP)6は各端末4に順番に更新データを配信する。ここで最初の端末4と最後の端末4の発信時間差は、非同期型TCP/IPの使用によりネットワークドライバ〜ネットワークカード(ハードウェア)に近いレベルの差だけとなる。各端末4からの受信応答確認は、アプリケーションプログラムと非同期で動作する送受信部6が行うため、アプリケーション上の本ルーチンを実行するCPUは、配信の指示を終えれば直ぐに次の処理に移ることができる。また配信待ちキューのうち送信中の各ユーザ(接続ハンドル)については、各ユーザ毎の送信待ちキューに更新データがエントリされる。
【0074】
<tkタイマ起動型配信依頼ルーチン>
タイマ処理28(12)では設定時間tk毎の時を計時しており、設定時間tk(tk=t1,t2,〜tn)のうちいずれかが経過する度にタイマ処理28からその時tk とタイマ配信要求が配信処理27に通知される。このタイマ配信要求tkを受信すると、図6に示すtkタイマ起動型配信依頼ルーチンが起動される。
【0075】
S21では、データテーブル10を参照し、最初であるここでは最初のキーについて時間tk の更新フラグがオンとなっているか否かを判断する。全てのキーについて順番に見ていくが、先ず始めは最初のキーについて更新フラグがオンであるかどうかをみる。設定時間tkの更新フラグがオンであればS22に進み、その更新フラグがオフであればS30に進む。
【0076】
S22では、そのキーの更新データを待つユーザの配信待ちキューを読み出し、最初であるここでは配信待ちキューに格納されたうちまず最初のユーザを読み出す。
【0077】
S23では、ユーザテーブル11を参照し、送信可能状態(送信中フラグオフ)にあるユーザ(接続ハンドル)であるか否かを判断する。送信可能状態のユーザであればS24に進み、送信中ユーザであればS26に進む。
【0078】
S24では、そのユーザの接続ハンドルを指定して送受信部6に更新データの送信依頼をする。
S25では、送信依頼を終えたユーザを送信中とする。つまり、ユーザテーブル11においてそのユーザ(接続ハンドル)の送信中フラグをオンにする。
【0079】
一方、S26では、ユーザテーブル11中のそのユーザ(接続ハンドル)の送信待ちキューに更新データを格納(エントリ)する。
S27では、送信待ちキューの格納数が上限値を超えたかどうかを判断する。その格納数が上限値を超えた場合はS28に進み、上限値を超えない場合はS29に進む。
【0080】
S28では、次段階の時間tkへ移行する。すなわちタイマ方式の設定時間を、設定時間tk→設定時間tk+1に移行する。この設定時間tk→tk+1への移行は、データテーブル10中の設定時間tkに対応する更新フラグと配信待ちキューを、次に適用される設定時間tk+1の項目欄に移動させることにより行う。
【0081】
S29では、配信待ちキューにエントリされた全ユーザ(接続ハンドル)の処理を終えたか否かを判断する。全ユーザ終了したときはS30に進む。一方、全ユーザ終了していなければS22に戻り、全ユーザ分の処理を終えるまでS22〜S28の処理をループ処理で繰り返し行う。これにより配信待ちキューのうち送信中でない各ユーザ(接続ハンドル)に対する更新データの送信はユーザ一人ずつ順番にシリアライズ送信依頼(シリアライズ処理)される。この配信の指示を受けた送受信部(非同期型TCP/IP)6は各端末4に順番に更新データを配信する。また配信待ちキューのうち送信中の各ユーザ(接続ハンドル)については、各ユーザ毎の送信待ちキューに更新データがエントリされる。
【0082】
S30では、データテーブル10の全キー終了したか否かを判断する。データテーブル10の全キーについて更新フラグを走査し終われば当該ルーチンを終了する。一方、全キーについて更新フラグを走査し終わっていなければS21に戻る。こうして更新フラグオンの更新データについてS22〜S29の処理を繰り返し、これを更新フラグオンの全てのキーについて繰り返す。なお、各設定時間t1,t2,〜tnの計時は、タイマ配信通知が同時刻にならないように設定することが望ましい。
【0083】
<送信完了起動型配信依頼ルーチン>
送受信部6は端末4からの受信応答(ACK)を受信すると送信完了イベントを発生する。これにより配信処理27は、ユーザ受付処理24から送信完了通知を受け付けると、図7の送信完了起動型配信依頼ルーチンを起動する。
【0084】
まずS31では、ユーザテーブル11を参照し、その送信完了ユーザ(接続ハンドル)の送信待ちキューにエントリデータがあるか否かを判断する。送信待ちエントリデータがなければS37に進み、送信可能状態の設定(送信中フラグオフ)とする。一方、送信待ちエントリデータがあるときにはS32に進む。
【0085】
S32では、送信待ちキューのエントリデータを読み出す。
S33では、間引き送信フラグがオンであるか否かを判断する。つまりそのユーザ(接続ハンドル)に適用された配信方式が、第2方式またはタイマ方式であるかを判断する。間引き送信フラグがオンとなった第2方式またはタイマ方式である場合はS34に進み、一方、間引き送信フラグがオフとなっている第1方式の場合はS35に進む。
【0086】
S34では、送信待キューのエントリデータのうち同一キーデータついては、最新の更新データのみとする間引き処理をする。
S35では、間引き処理後のデータを1つにまとめて、送受信部6にまとめ送信依頼をする。
【0087】
S36では、送信依頼を終えたユーザ(接続ハンドル)を送信中(送信中フラグオン)とする。
よって図8に示すように、更新データAを受信すると、この情報を待つ第1方式または第2方式が適用された端末4のうち送信中でない端末(ユーザ)4に対しこの更新データAのデータパケットが送信される。この際、この更新データAを待つ複数の端末4に順番に更新データAがシリアライズに送信される。データパケットを送信した後、そのデータを受信した端末4からの受信応答(ACK)を受信するまでの間は、その端末4は送信中とされる。
【0088】
この送信中の間に新たに受信した更新データ「B,C,D」は送信待ちキューに格納される。そしてACKを受信して送信完了となった端末4に対してはデータ「B,C,D」はまとめて送信される。例えば送信待ちキューに「B,C,D,B」が格納されていたとすると、その端末4が第1方式を適用されたものであれば、データ「B,C,D,B」の全てがまとめて送信される。一方、その端末4が第2方式を適用されたものであれば、データ「B,C,D,B」のうち更新時期の異なる同一キーデータBについては直近の最新データのみが採用される間引きがなされた後のデータ「C,D,B」がまとめて送信される。
【0089】
また端末4が使用する通信環境に起因してその通信速度が遅いために、ACKを受信するまでの所要時間が長く、送信待ちキューの格納数が上限値を超えると、その端末4に適用される配信方式が次段階の配信方式に切り替えられる。すなわち第1方式→第2方式、第2方式→タイマ方式に切り替えられる。よって、送信待ちキューの格納数が上限値を超えるような通信速度の遅い端末4に第2方式が適用されると、データ量を小さくして通信速度を少しでも速くでき、またユーザの端末4では画面上に古いデータが一時的に表示されることなく最新の更新データが早く表示される。
【0090】
またタイマ方式では、設定時間tk を経過する度に更新データがあるかどうかを確かめ、更新データがあればこの情報を待つタイマ方式の端末4のうち送信中でない複数の端末(ユーザ)4に順番に更新データAがシリアライズに送信される。
【0091】
送信中の間に新たに受信した更新データ「B,C,D,B」は送信待ちキューに格納される。そしてACKを受信して送信完了となった端末4に対してはデータ「B,C,D,B」のうち更新時期の異なる同一キーデータBについては直近の最新データのみが採用される間引きがなされ、間引き後のデータ「C,D,B」がまとめて送信される。また通信速度の遅い端末4であってその送信待ちキューの格納数が上限値を超えるものについては、タイマ方式の設定時間tk がさらに長い次段階の設定時間tk+1に切り替えられる。よって設定時間tk が段階的に長くされていくことにより、結果的にデータの間引き率が大きくなるので、データ量を小さくして通信速度を少しでも速くでき、またユーザの端末4では画面上に最新の更新データが早く表示される。
【0092】
以上詳述したように本実施形態によれば、以下の効果が得られる。
(1)非同期型TCP/IPを使用し、データ更新検出時に配信処理部15(27)は、非同期で動く送受信部6に、データの配信または送信の依頼を出すだけでなので、配信先の端末4からの受信応答(ACK)を待つことなく直ぐに次の処理に移ることができる。また複数ユーザに対する配信処理は1つの処理スレッド(S12〜S15またはS22〜S25)のループ処理によってユーザ一人ずつ順番にデータがシリアライズ送信されるので、マルチタスク処理のようなプログラム間の切換処理による遅延を回避でき、例えば数百人以上の多数の端末4に同一データを配信するときには、マルチタスク処理を採用する場合に比べ、配信処理の所要時間を短く済ませられ、OSディスパッチを防ぐことができる。また、ループ処理であることからシリアライズ送信される複数ユーザ間で送信データを共有でき、メモリの使用容量がデータ1つ分で済むのでメモリ資源も有効利用できる。よって、使用メモリの肥大化に原因するオーバーヘッドを避けられ、多数ユーザの同時配信に対しても通信の遅延を極力避けることが可能となる。また、シリアライズ処理で問題となる最初のユーザと最後のユーザの時間差は、非同期型TCP/IPの使用によりネットワークドライバソフト〜ネットワークカード(ハードウエア層)に近いレベルの差だけとなる。
【0093】
(2)さらに送信中のユーザに対しては送信せず更新データをそのユーザの送信待ちキューに一時格納し、その後、そのユーザが送信可能状態になると、その送信待ちキューにそれまで溜まったデータを1つにまとめて送信するまとめ送信処理を採用する。よって、データを個々に送信する場合に比べデータサイズが小さく済むうえ、送信処理を一度で済ませられるため、通信効率を向上させることができる。また、データサイズを小さくできることから、パケット数が少なく済み、例えばパケット課金方式を採用するユーザは通信費を安く抑えられる。
【0094】
(3)ユーザ毎の通信速度を送信待ちキューの格納数から判定し、通信速度の遅いユーザに対してはその通信速度に応じた配信方式に、ユーザ毎に、第1方式→第2方式→タイマ方式の順に段階的に切り替えるようにした。従って、サーバ3の負担を軽減でき、サーバコンピュータのパフォーマンスが通信速度の遅い一部のユーザによって左右されることを防ぎ易くなる。
【0095】
(4)第1方式から第2方式に切り替えられると、まとめ送信する際に、同一キーデータについては最新の更新データのみを採用する間引き処理をする。このため、データサイズを小さくして送信速度を高められるとともに、サーバコンピュータの負担も軽減できる。
【0096】
(5)第2方式からタイマ方式に切り替えられると、一定時間間隔tk毎に起動されて、その時に更新データがあればその配信待ちキューのユーザに更新データをループ処理によってシリアライズ送信する。よって、一定時間間隔tk内に複数回更新があっても直近の最新データのみが送信され、事実上の間引きが行われる。またタイマ方式では、送信中のユーザについては送信完了後にそれまで溜まったデータをまとめて送信するまとめ送信と、そのまとめ送信の際に同一キーデータについては最新データのみとする間引き処理とが行われる。従って、サーバ3の負担を軽減でき、サーバコンピュータのパフォーマンスが通信速度の遅い一部のユーザによって左右されることを防ぎ易くなる。
【0097】
(6)タイマ方式では設定時間tkを複数段階(tk=t1,…tn)に設定したので、通信速度の特に遅いユーザに適用するタイマ方式の設定時間tkを切り替えることにより、サーバ3の負担を軽減でき、サーバコンピュータのパフォーマンスが通信速度の遅い一部のユーザによって左右されることを防ぎ易くなる。
【0098】
なお、実施の形態は、上記に限定されず以下の態様でも実施できる。
・ 第1方式、第2方式、タイマ方式などの配信方式の選択は、サーバ3の判定処理に従う自動切替えではなく、端末4からユーザ自身が指定する方法を採用してもよい。
【0099】
・ 第1方式、第2方式、タイマ方式の全てを採用することに限定されない。例えば第1方式のみを採用してもよい。また第2方式のみを採用してもよい。第1方式と第2方式のみを採用してもよい。第1方式とタイマ方式のみを採用してもよい。第2方式とタイマ方式のみを採用してもよい。タイマ方式のみを採用してもよい。タイマ方式のみを採用する場合、設定時間は1段階でもよいが、第1方式並みのリアルタイム性が確保される最も時間間隔の短いものと、これよりも長い時間間隔の少なくとも2通りを設定することが望ましい。
【0100】
・ 更新検出手段は、更新イベントによるのではなく、非常に短い時間(例えば1秒以内の値)間隔で起動するタイマ起動としてもよい。
2.タイマ方式の設定時間(インターバル)は、扱う情報の種類に応じて適宜設定してよい。例えば更新が秒単位であればタイマ配信の設定時間を、2秒、5秒、10秒、…3分などとし、例えば更新が10秒単位であればタイマ送信の設定時間をもう少し長く、30秒、1分、…10分などとしてもよい。
【0101】
・ 端末毎の通信速度を直接又は間接的に判定するコンピュータが備える判定手段の判定方法は、サーバ3でのデータ送信開始時からその受信応答(ACK)を受信するまでの所要時間から通信速度を判定するものであってもよい。
【0102】
・ 更新起動時やタイマ起動時に更新データを配信(シリアライズ送信)する順番を、配信待ちキューの順番を一定の規則に従って入れ替えることにより、変更する配信順序入れ替え方式を採用できる。この方法によれば、ユーザの公平性を担保することができる。
【0103】
・ アプリケーションで構成される配信手段から出された配信依頼を非同期に実行する手段または段階は、非同期型通信プロトコルを用いるものに限定されない。配信処理用プログラム(配信手段)と非同期動作するものであれば他のプログラム等(手段または段階)でもよい。
【0104】
・ 本明細書中の用語を次のように定義する。「非同期型通信プロトコル」:アプリケーション上のプログラムとは非同期で動作し、コンピュータネットワークを通じた端末等との間で行う通信を司る通信処理用ソフトウェアであり、特にOS(ミドルウェア含む)として用意されるものである。
【0105】
前記実施形態から把握される請求項以外の技術的思想を、以下に記載する。
(1)請求項2において、前記配信手段が前記処理を行って出された配信依頼を受け付けて、コンピュータの非同期型通信プロトコルで構成される送受信手段が該配信の依頼を実行する段階とを備えているプッシュ型情報配信方法。
【0106】
(2)請求項4〜7のいずれかにおいて、前記配信手段は、前記送受信手段に依頼する際に前記送受信手段が送信中の端末については端末毎に更新データの配信待ちキューを管理し、前記判定手段は、端末毎に管理された配信待ちキューの格納数が予め設定された設定数を超えたことをもって、端末毎の通信速度を判定することを特徴とするプッシュ型情報配信用プログラム。
【0107】
【発明の効果】
以上詳述したように請求項1〜9に記載の発明によれば、秒単位や分単位で更新されるデータでもユーザの端末にさほど表示の遅延を伴わずインターネット等のネットワークを介して配信でき、しかもサーバとして用いられるコンピュータの負担を軽減することによって、1台のサーバが受け持つ端末数を増やすことができる。
【0108】
請求項2及び4〜9に記載の発明によれば、ユーザ毎の通信環境に応じて配信方式を切り替えることによって、通信環境の悪い一部のユーザによってサーバ全体のパフォーマンスが左右されることを起き難くすることができる。
【図面の簡単な説明】
【図1】 プッシュ型配信システムを示す概略構成図。
【図2】 アプリケーションプログラムを構成する各処理を示すブロック図。
【図3】 データテーブル図。
【図4】 ユーザテーブル図。
【図5】 更新起動型配信依頼ルーチンのフローチャート。
【図6】 タイマ起動型配信依頼ルーチンのフローチャート。
【図7】 送信完了起動型配信依頼ルーチンのフローチャート。
【図8】 配信方式の処理の流れを説明する説明図。
【符号の説明】
1…プッシュ型情報配信システム、2…情報発信源サーバ、3…プッシュ型情報配信装置及びコンピュータとしての配信用サーバ(サーバコンピュータ)、4…端末、5…コンピュータネットワークとしてのインターネット、6…送受信手段としての送受信部、7…接続ハンドル、10…データテーブル、11…ユーザテーブル、12…タイマ手段としてのタイマ、13…更新検出手段としての更新受付部、15…配信手段としての配信処理部、17…配信手段を構成するとともに切替手段としてのプッシュ処理部、17A…判定手段としての判定部、19…OS層、20…アプリケーション層。
Claims (9)
- 端末から受け付けた情報についてそのデータが更新されると、その更新されたデータを前記端末に対しコンピュータネットワークを通じてプッシュ方式で配信するプッシュ型情報配信方法であって、
コンピュータのOS層に格納された非同期型通信プロトコルによって複数の端末に対する送受信処理を司る送受信手段を構築するとともに、プッシュ方式の配信処理を該送受信手段に非同期で実行させるように指示するようにし、
端末から受け付けた情報についてそのデータが更新されたことをコンピュータの更新検出手段が検出する段階と、
コンピュータの配信手段が、前記更新が検出された前記情報の配信待ち状態にある複数の端末のうち送信可能状態にある端末に該更新データを配信するための配信処理を前記送受信手段にシリアライズ処理で指示するとともに、その際に前記送受信手段が送信中の端末に対しては送信せず該更新データを一時保管し、当該送信中の端末が送信可能状態になったことを知ると、それまでに保管されて溜まったデータをまとめて該端末に送信する送信処理を前記送受信手段に指示する段階と
を備えたことを特徴とするプッシュ型情報配信方法。 - 請求項1に記載のプッシュ型情報配信方法において、
前記情報のデータ更新検出時に起動されてその情報を待つ端末に対し該更新データを配信する更新起動型配信方式の処理をコンピュータの配信手段が行う段階と、
端末毎の通信速度を直接又は間接的にコンピュータが判定する段階と、
更新起動型配信方式が適用された端末のうち通信速度が基準より遅いと判断された端末についてはその適用される配信方式を、更新起動型配信方式からタイマ起動型配信方式にコンピュータの切替手段が切り替える段階と、
コンピュータのタイマ手段により設定時間毎に起動されてその起動時の最新の更新データを前記タイマ起動型配信方式が適用された端末に配信するタイマ起動型配信方式の処理を前記配信手段が行う段階と
を備えたことを特徴とするプッシュ型情報配信方法。 - 端末から受け付けた情報についてそのデータが更新されると、その更新されたデータを前記端末に対しコンピュータネットワークを通じてプッシュ方式で配信するサーバ機能をコンピュータに実現させるプッシュ型情報配信用プログラムであって、
特に、コンピュータのOS層に格納された非同期型通信プロトコルによって構築された送受信手段に対しプッシュ方式の配信処理を指示するまでの処理を行うアプリケーションが有するプログラムであり、
コンピュータを、
端末から受け付けた情報についてそのデータが更新されたことを検出する更新検出手段と、
前記更新検出手段が前記情報についてそのデータが更新されたことを検出すると、その更新データを該情報の配信待ち状態にある複数の端末のうち送信可能状態にある端末に配信するための配信処理を前記送受信手段にシリアライズ処理で指示するとともに、その際に前記送受信手段が送信中の端末に対しては送信せず該更新データを一時保管し、当該送信中の端末が送信可能状態になったことを知ると、それまでに保管されて溜まったデータをまとめて該端末に送信するための送信処理を前記送受信手段に指示する配信方式をとる配信手段として機能させるプッシュ型情報配信用プログラム。 - 請求項3に記載のプッシュ型情報配信用プログラムにおいて、
前記配信手段は、前記配信方式である第1配信方式と、該第1配信方式とはデータ更新検出時に前記送信可能状態の端末に対する配信処理をシリアライズ処理で指示し、前記送信中の端末に対して前記更新データを一時保管するまでは同じ処理で、送信中の端末が送信可能状態となったことを知ると、それまでに保管されて溜まったデ−タのうち更新時期の異なる同一情報のデータについては最新データのみを採用する間引き処理をして該間引き処理後のデータをまとめて該端末に送信する送信処理を前記送受信手段に指示する第2配信方式とを採用し、
コンピュータを、
前記配信手段と、
端末毎の通信速度を直接又は間接的に判定する判定手段と、
前記判定手段により通信速度が基準よりも遅いと判定された端末に対しては、前記第1配信方式から第2配信方式に切り替える切替手段として機能させるプッシュ型情報配信用プログラム。 - 請求項3又は4に記載のプッシュ型情報配信用プログラムにおいて、
前記配信手段は、プッシュ方式配信の対象とされる端末に適用される配信方式として、データ更新検出時に起動される前記配信方式である更新起動型配信方式の処理と、コンピュータのタイマ手段によって設定時間毎に起動されるタイマ起動型配信方式の処理とを採用しており、
コンピュータを、
端末毎に通信速度を直接又は間接的に判定する判定手段と、
前記判定手段により通信速度が基準よりも遅いと判定された端末に対してはその適用される方式を、前記更新起動型配信方式からタイマ起動型配信方式に切り替える切替手段と、
前記タイマ起動型配信方式が適用された端末に対しては、前記タイマ手段による設定時間毎の起動時における最新の更新データを該情報の配信待ち状態にある複数の端末のうち送信可能状態にある端末に配信する配信処理を前記送受信手段にシリアライズ処理で指示するとともに、その際に前記送受信手段が送信中の端末に対しては送信せず該更新データを一時保管し、当該送信中の端末が送信可能状態になったことを知ると、それまでに保管されて溜まったデータをまとめて該端末に送信する送信処理を前記送受信手段に指示する前記配信手段として機能させるプッシュ型情報配信用プログラム。 - 請求項5に記載のプッシュ型情報配信用プログラムにおいて、
前記配信手段には、前記タイマ起動型配信方式としてその起動される設定時間が異なる複数段階用意されており、
端末毎に通信速度を直接又は間接的に判定する判定手段と、
タイマ起動型配信方式が適用された端末のうち、前記判定手段により通信速度が基準よりも遅いと判定された端末に対しては、前記タイマ手段によって起動される設定時間のより長い段階へと切り替える切替手段と
をサーバコンピュータに機能させるプッシュ型情報配信用プログラム。 - 端末から受け付けた情報についてそのデータが更新されると、その更新されたデータを前記端末に対しコンピュータネットワークを通じてプッシュ方式で配信するサーバ機能をコンピュータに実現させるプッシュ型情報配信用プログラムであって、
特に、コンピュータのOS層に格納された非同期型通信プロトコルによって構築された送受信手段に対しプッシュ方式の配信処理を指示するまでの処理を行うアプリケーションが有するプログラムであり、
コンピュータを、
複数段階設定された設定時間毎にコンピュータのタイマ手段によって起動され、その起動時における前記情報についての最新の更新データを該情報の配信待ち状態にある複数の端末のうち送信可能状態にある端末に配信する配信処理を前記送受信手段にシリアライズ処理で指示するとともに、その際に前記送受信手段が送信中の端末に対しては送信せず該更新データを一時保管し、当該送信中の端末が送信可能状態になったことを知ると、それまでに保管されて溜まったデータをまとめて該端末に送信する送信処理を前記送受信手段に指示する配信手段と、
端末毎に通信速度を直接又は間接的に判定する判定手段と、
前記判定手段により通信速度が基準よりも遅いと判定された端末に対しては、前記タイマ手段によって起動される設定時間がより長い段階の配信方式に切り替える切替手段として機能させるプッシュ型情報配信用プログラム。 - 請求項3〜7のいずれか一項に記載のプッシュ型情報配信用プログラムを記録したコンピュータ読み取り可能な記録媒体。
- 端末から受け付けた情報についてそのデータが更新されると、その更新されたデータを前記端末に対しコンピュータネットワークを通じてプッシュ方式で配信するプッシュ型情報配信装置であって、
請求項3〜7のいずれか一項に記載された、コンピュータが備える前記送受信手段と、コンピュータが備える前記配信手段とを少なくとも含む、コンピュータが備える前記各手段を備えたことを特徴とするプッシュ型情報配信装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001079873A JP4531280B2 (ja) | 2001-03-21 | 2001-03-21 | プッシュ型情報配信方法、プッシュ型情報配信用プログラム、及びプッシュ型情報配信装置、記憶媒体 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001079873A JP4531280B2 (ja) | 2001-03-21 | 2001-03-21 | プッシュ型情報配信方法、プッシュ型情報配信用プログラム、及びプッシュ型情報配信装置、記憶媒体 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2002278862A JP2002278862A (ja) | 2002-09-27 |
JP4531280B2 true JP4531280B2 (ja) | 2010-08-25 |
Family
ID=18936243
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001079873A Expired - Lifetime JP4531280B2 (ja) | 2001-03-21 | 2001-03-21 | プッシュ型情報配信方法、プッシュ型情報配信用プログラム、及びプッシュ型情報配信装置、記憶媒体 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4531280B2 (ja) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4760580B2 (ja) * | 2006-07-11 | 2011-08-31 | 株式会社明電舎 | 監視制御システムのデータ通信方式 |
JP6132021B2 (ja) * | 2013-06-10 | 2017-05-24 | 日本電気株式会社 | 配信制御装置及びその方法、プッシュ配信システム、並びにコンピュータ・プログラム |
US10664548B2 (en) | 2013-07-12 | 2020-05-26 | Trading Technologies International, Inc. | Tailored messaging |
KR101744533B1 (ko) * | 2016-05-23 | 2017-06-08 | 포항공과대학교 산학협력단 | N 스크린 기반 재해 및 리스크 정보 확산 시스템 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000078236A (ja) * | 1998-08-27 | 2000-03-14 | Nec Eng Ltd | 保留データ一括送信装置及びそれに用いる送信方法並びにその制御プログラムを記録した記録媒体 |
JP2000242697A (ja) * | 1999-02-19 | 2000-09-08 | Kokusai Electric Co Ltd | 情報配信システム |
JP2000284980A (ja) * | 1999-01-28 | 2000-10-13 | Mitsubishi Electric Inf Technol Center America Inc | マルチタスクシステムおよびマルチタスクシステムにおけるメッセージ伝送スケジューリング方法 |
-
2001
- 2001-03-21 JP JP2001079873A patent/JP4531280B2/ja not_active Expired - Lifetime
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000078236A (ja) * | 1998-08-27 | 2000-03-14 | Nec Eng Ltd | 保留データ一括送信装置及びそれに用いる送信方法並びにその制御プログラムを記録した記録媒体 |
JP2000284980A (ja) * | 1999-01-28 | 2000-10-13 | Mitsubishi Electric Inf Technol Center America Inc | マルチタスクシステムおよびマルチタスクシステムにおけるメッセージ伝送スケジューリング方法 |
JP2000242697A (ja) * | 1999-02-19 | 2000-09-08 | Kokusai Electric Co Ltd | 情報配信システム |
Also Published As
Publication number | Publication date |
---|---|
JP2002278862A (ja) | 2002-09-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6848005B1 (en) | Self-tuning dataflow I/O core | |
US9866624B2 (en) | Managing access to digital content sources | |
US6317786B1 (en) | Web service | |
US8874780B2 (en) | Data buffering and notification system and methods thereof | |
US7581006B1 (en) | Web service | |
US7844713B2 (en) | Load balancing method and system | |
JP3382953B2 (ja) | 有限メモリコンピュータシステム上におけるクライアント管理フロー制御方法及び装置 | |
US8543692B2 (en) | Network system | |
US20030139193A1 (en) | Wireless device hub system and method | |
JPH11120108A (ja) | サーバ側非同期フォーム管理方法および装置 | |
KR19980063407A (ko) | 고-가용성 컴퓨터 서버 시스템 | |
US20040059827A1 (en) | System for controlling network flow by monitoring download bandwidth | |
CA2275058A1 (en) | Method of discrete interactive multimedia list broadcasting | |
CN102158346A (zh) | 基于云计算的信息采集系统及方法 | |
US20070083654A1 (en) | Network system, network control method, and program | |
US6622167B1 (en) | Document shadowing intranet server, memory medium and method | |
JP4531280B2 (ja) | プッシュ型情報配信方法、プッシュ型情報配信用プログラム、及びプッシュ型情報配信装置、記憶媒体 | |
US20230330545A1 (en) | Method for displaying game picture, storage medium, and electronic device | |
JP2004266610A (ja) | 通信システム、リモートアクセスサーバ装置とリソース管理方法およびプログラム | |
CN101388863A (zh) | 一种wap网关提取业务的实现方法和系统 | |
JP2009080642A (ja) | 負荷制御方法及び装置及びプログラム | |
JP2002342193A (ja) | データ転送先サーバ選定方法及び装置及びデータ転送先サーバ選定プログラム及びデータ転送先サーバ選定プログラムを格納した記憶媒体 | |
JPH10312351A (ja) | データ通信システム及び方法並びに同システムのための代行サーバ | |
JPH10177510A (ja) | クライアント・サーバ・システム | |
CN114286293B (zh) | 消息推送管理方法、装置、系统、计算机设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20080109 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20100308 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100316 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100512 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20100601 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20100609 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 Ref document number: 4531280 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130618 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20160618 Year of fee payment: 6 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
EXPY | Cancellation because of completion of term |