説明

クラアイントサーバシステムにおけるサーバ負荷軽減方法

【課題】クライアントサーバシステム形態のネットワークおいて,クライアントの数を増やしてもサーバの負担を極力あげることなく,サーバからクライアントへのレスポンスも良いクライアントサーバシステムを提供する。
【解決手段】クライアントからのアクセスを受信する手段と,クライアント毎に管理され,それぞれの当該クライアントに通知すべき通知情報を管理する手段と,「所定の内容を当該通知情報の対象となるクライアントへ送信せよ」との依頼内容を,受信した前記アクセスの応答として送信元クライアントに向けて送信する応答手段と,を備えるサーバを含むクライアントサーバシステム。

【発明の詳細な説明】
【技術分野】
【0001】
本願発明はクライアントサーバ形態のネットワークシステムに関するものであり,特にサーバの負荷を軽減するものに関するものである。
【背景技術】
【0002】
一般に,クライアントサーバシステムでは,クライアントの数が多くなるとサーバの負担が増す。例として,図1に示すようなネットワーク環境で,クライアント101〜クライアント103が所定時間ごとにサーバ104にアクセス(ポーリング)し,自身に対するイベントがあるかないかを確認する状況を想定する。
【0003】
図2に示すシーケンスは,ポーリング間隔を10s(10秒)とした場合のものである。図示するように,クライアント101がサーバ104に最初にポーリング(通信111および通信121)を行ってから,次のポーリング(通信112および通信122)を行うまでの時間間隔が10sとなっている。これは他のクライアントにおいても同様である。図では,サーバ104にて発生したクライアント102に対するイベントを,クライアント102が検知するまでの様子を示している。
【0004】
このように,図2にて例示するクライアントサーバシステムでは,サーバ104にて,あるクライアントに対してイベントが発生していた場合,そのクライアントが当該イベントを検知できるまで最大10s必要となる。つまり,ポーリング間隔の長さに比例して,イベントを検知するまでの平均時間も長くなるわけである。
【0005】
ところで,クライアントサーバシステムにおいて,1台のサーバが管理するクライアントの数は多ければ多いほど良いのは言うまでもない。しかし,上記のシステムにおいてクライアントの数を増やすと,それに応じて単位時間当たりのポーリング回数が増え,サーバには大きな負担となる。
【0006】
これを改善する最も簡単な方法は,クライアントのポーリング間隔を大きくすることである。例えば上述した10sではなく30sなどとするわけである。当然,ポーリング間隔が3倍に増えると,10sの場合と同じサーバの負担で,理論上は3倍の数のクライアント数を管理することが可能になる。つまり,ポーリング間隔を大きくすると,理論上は無限ともいえるクライアントを管理することが可能になる。クライアント数に応じて,ポーリング間隔を大きく取ればよいだけだからである。
【0007】
しかしこれには次のような問題がある。例えば,ポーリング間隔を3600s(1時間)に設定すると,サーバ内で発生したクライアント向けのイベントを当該クライアントが検知できるまで最大3600sかかるということになる。つまり,クライアントへのレスポンスがそれだけ遅くなるわけである。特に,緊急性の高いイベントが発生していた場合には大きな問題となる。
【0008】
このような問題を改善する発明が特許文献1に開示されている。これは,サーバを介してクライアント同士が通信する場合において,サーバが管理すべき情報とそうでない情報とを分類し,サーバが管理すべき情報はサーバを介して通信し,そうでない情報は,クライアント同士で直接通信するというものである。これによりサーバの負担を軽減しつつ,サーバを介したクライアント同士の通信をレスポンスよく行うことが可能になる。
【0009】
しかし,特許文献1に開示の発明は,サーバが管理しなくてもよい情報,即ち一般的には重要度の低い情報が存在する場合を前提としている。このため,サーバが管理すべき情報(重要度が高い情報)が多くを占めるようなシステムの場合には,当然にサーバへの通信が多くなり,従来からの課題と同様,サーバへの負担が重くなる。
【先行技術文献】
【特許文献】
【0010】
【特許文献1】国際公開第WO01/057578号パンフレット
【発明の概要】
【発明が解決しようとする課題】
【0011】
本願発明はこのような問題を解決するものである。すなわち,クライアントサーバシステム形態のネットワークおいて,クライアントの数を増やしてもサーバの負担を極力あげることなく,サーバからクライアントへのレスポンスも良いクライアントサーバシステムを提供することである。
【課題を解決するための手段】
【0012】
本願発明にかかる第1の形態は,サーバと複数のクライアントとがネットワーク接続されており,クライアントは所定の時間間隔にて当該サーバへのアクセスを行うクライアントサーバシステムにおける当該サーバであって,クライアントからのアクセスを受信する手段と,クライアント毎に管理され,それぞれの当該クライアントに通知すべき通知情報を管理する手段と,「所定の内容を当該通知情報の対象となるクライアントへ送信せよ」との内容を含む依頼を,受信したアクセスの応答として送信元クライアントに向けて送信する応答手段と,を備えるサーバである。
【0013】
好ましくは,所定の内容は「通知情報の対象となるクライアントが,サーバにアクセスし,通知情報を取得する」という動作のトリガである。
【0014】
本願発明にかかる第2の形態は,サーバと複数のクライアントとがネットワーク接続されており,クライアントは所定の時間間隔にて当該サーバへのアクセスを行うクライアントサーバシステムにおける当該サーバであって,クライアントからのアクセスを受信する手段と,クライアント毎に管理され,それぞれの当該クライアントに通知すべき通知情報を管理する手段と,通知情報の数が複数の場合,所定の条件に基づき通知情報の順位を決定し,受信したアクセスに対する応答として,当該順位の最上位から所定数の通知情報に関し,受信したアクセスの応答として「所定の内容を当該通知情報の対象となるクライアントへ送信せよ」との内容を含む依頼を送信元クライアントに向けて送信する応答手段と,を備えるサーバである。
【0015】
好ましくは,所定の条件は「通知情報の対象となるクライアントにとっての優先度」および/または「サーバにおける通知情報の未処理時間」である。
【0016】
好ましくは,所定の内容は「通知情報の対象となるクライアントが,サーバにアクセスし,通知情報を取得する」という動作のトリガである。
【0017】
本願発明にかかる第3の形態は,サーバと複数のクライアントとがネットワーク接続されており,クライアントは所定の時間間隔にて当該サーバへのアクセスを行うクライアントサーバシステムであって,サーバは,所定のクライアントからのアクセスを受信する手段と,クライアント毎に管理され,それぞれの当該クライアントに通知すべき通知情報を管理する手段と,「所定の内容を当該通知情報の対象となるクライアントへ送信せよ」との依頼内容を,受信したアクセスの応答として送信元クライアントに向けて送信する応答手段と,を備えるクライアントサーバシステムである。
【0018】
本願発明にかかる第4の形態は,サーバと複数のクライアントとがネットワーク接続されており,クライアントは所定の時間間隔にて当該サーバへのアクセスを行うクライアントサーバシステムあって,サーバは,クライアントからのアクセスを受信する手段と,クライアント毎に管理され,それぞれの当該クライアントに通知すべき通知情報を管理する手段と,通知情報の数が複数の場合,所定の条件に基づき通知情報の順位を決定し,受信したアクセスに対する応答として,当該順位の最上位から所定数の通知情報に関し,受信したアクセスの応答として「所定の内容を当該通知情報の対象となるクライアントへ送信せよ」との内容を含む依頼を送信元クライアントに向けて送信する応答手段と,を備えるクライアントサーバシステムである。
【0019】
本願発明にかかる第5の形態は,サーバと複数のクライアントとがネットワーク接続されており,クライアントは所定の時間間隔にて当該サーバへのアクセスを行うクライアントサーバシステムにおける当該サーバを,クライアントからのアクセスを受信する手段と,クライアント毎に管理され,それぞれの当該クライアントに通知すべき通知情報を管理する手段と,「所定の内容を当該通知情報の対象となるクライアントへ送信せよ」との依頼内容が含まれた応答を,受信したアクセスの応答として送信元クライアントに向けて送信する応答手段と,して機能させるプログラムである。
【0020】
好ましくは,所定の内容は「通知情報の対象となるクライアントが,サーバにアクセスし,通知情報を取得する」という動作のトリガである。
【0021】
本願発明にかかる第6の形態は,サーバと複数のクライアントとがネットワーク接続されており,クライアントは所定の時間間隔にて当該サーバへのアクセスを行うクライアントサーバシステムにおける当該サーバを,クライアントからのアクセスを受信する手段と,クライアント毎に管理され,それぞれの当該クライアントに通知すべき通知情報を管理する手段と,通知情報の数が複数の場合,所定の条件に基づき通知情報の順位を決定し,受信したアクセスに対する応答として,当該順位の最上位から所定数の通知情報に関し,受信したアクセスの応答として「所定の内容を当該通知情報の対象となるクライアントへ送信せよ」との内容を含む依頼を送信元クライアントに向けて送信する応答手段と,して機能させるプログラムである。
【0022】
好ましくは,所定の条件は「通知情報の対象となるクライアントにとっての優先度」および/または「サーバにおける通知情報の未処理時間」である。
【0023】
好ましくは,所定の内容は「通知情報の対象となるクライアントが,サーバにアクセスし,通知情報を取得する」という動作のトリガである。
【発明の効果】
【0024】
本願発明の第1の形態によれば,サーバで発生した特定クライアント向けのイベント発生通知依頼を,他のクライアントのポーリング応答に含めることで,サーバへの負担を軽減するためクライアントの数を増やしポーリング間隔を大きくしたとしても,当該特定のクライアントは自身に対するイベント発生を遅滞なく検知することができる。さらに,イベント発生通知を受信した当該特定クライアント自身が,この受信をトリガとして,サーバにアクセスを行い自身に対して発生したイベントの内容を取得することで,重要度が高いものや,秘匿性を有するようなイベントであっても,良好なレスポンスを維持しつつ内容を取得することができる。
【0025】
さらに本願発明の第2の形態によれば,サーバから送信されるイベント発生通知依頼は,イベントの重要度およびイベントの未処理時間に基づいて送信順序が決定されるため,クライアントの数が増加し,イベントが多数発生したとしても,効率よくクライアントに通知することができる。
【0026】
また,その他の形態によれば,イベントの未処理時間に応じて優先度を変化させることで,優先度の低いイベントが長期間にわたって通知されないという問題を回避することができる。
【0027】
また,その他の形態によれば,ポーリングしてきたクライアントに通知するイベント数を,当該クライアントの処理能力等に応じて変化させることで,イベントが発生しているクライアントへのイベント発生通知を,より効率的に行うことができる。
【発明を実施するための形態】
【0028】
以下では図面を参照し本願発明に係る実施例を説明する。
[実施例1]
【0029】
図3は本実施例にかかるシーケンス図である。図示するように本実施例ではポーリング間隔を30sにしている。図2の説明では10sであったが,これよりも長い間隔としている。こうすることで,クライアントの数を3倍に増やしても,理論上,サーバへの負担は図2の場合と同じである。
【0030】
本願発明では,ポーリング間隔を長くしたことによる,サーバからクライアントへのレスポンス低下を防ぐため,任意のクライアント(必ずしもそのクライアントにイベントが発生している必要はない)からのポーリングに対する応答の中に,イベントが発生したクライアントに向けたイベント発生通知の依頼を含めている。この応答を受信したクライアントは,イベントが発生しているクライアントに対してイベント発生通知をする。こうすることで,当該イベントが発生しているクライアントは,自身のポーリング間隔に関係なく,他のクライアントからイベント発生通知を受信しイベントの発生を検知することができる。すなわち,イベントが発生しているクライアントにとって,他のクライアントから送信されたイベント発生通知の受信は,サーバにアクセスし当該イベントの内容を取得するためのトリガとなっている。
【0031】
図3は,クライアント102へのイベントがサーバ104にて発生した場合を図示している。図からわかるように,クライアント102は,自身のポーリング時間の到来を待たずしてイベント発生を検知できる。結果として,クライアント102がイベントを検知するまでの平均時間を,ポーリング間隔よりも大幅に短くすることが可能である。
[ブロック図]
【0032】
図4は本実施例にかかるサーバ104のブロック図である。
【0033】
イベント管理手段404は,クライアントに対するイベントが発生すると,これをイベント保存領域406に登録する。
【0034】
アクセス受信手段402は,ネットワークインタフェース401を介してクライアントからのポーリングを受信する手段である。
【0035】
イベント存否判断手段403は,クライアントからのアクセスがあると,当該クライアント以外のクライアントに対するイベントが存在するかどうかを,イベント保存領域406を参照して判断する。判断の結果,イベントが存在していれば,後述する応答手段405にその旨通知する。
【0036】
応答手段405は,アクセス受信手段402が受信したクライアントからのポーリングに対して応答するものであるが,応答の際,前述のイベント存否判断手段403からの通知を受信していれば,イベント保存領域406からイベント情報を読み出し,その情報とともにクライアントに応答する。イベントが複数ある場合はすべてを読み出して応答する。
[サーバの動作フロー]
【0037】
図5はサーバ104の動作フローである。
【0038】
ステップ501にて,クライアントからのアクセスがあるかどうかを判断する。判断の結果,アクセスがあれば,次のステップに進み,そうでなければ受信判断を繰り返す。
【0039】
ステップ502にて,イベントがあるかどうかを,イベント保存領域406を参照して判断する。判断の結果,存在すれば,次のステップに進み,そうでなければ受信判断に戻る。
【0040】
ステップ503にて,イベント保存領域406から,イベントを読み出し,これをステップ501にて受信したアクセスに対する応答内容に含めて応答する。
[実施例2]
【0041】
すでに述べたように,クライアントのポーリング間隔を大きくすることで,サーバ104の負担を高めることなくクライアントの数を増やすことができる。しかし,クライアント数を増やせば,それに応じてイベント発生数も多くなる。
【0042】
発生したすべてのイベントを,ポーリングしてきたクライアントに一時に通知すると,当該クライアントにとっては大きな負担となる。そこで,本実施例では,サーバ104が,クライアントに通知するイベントの順位付けを行い,ポーリングしてきた1つのクライアントに対して上位から順に1件ずつ通知することで,クライアントの負荷を軽減しつつ,効率的なイベント通知を行う。
【0043】
上述した動作を示したのが図6である。これは,サーバ104がイベント保存領域406にて管理するイベントのリストである。図示するとおり,各イベントには,通知対象となるクライアント名,イベント優先度,および未処理時間の属性が与えられる。
【0044】
イベント優先度は,クライアントにとっての緊急度や重要度を意味し,優先度が高いほど即時処理を期待されるものである。優先度はイベントの種類に対応した所定のもの(図では優先度が高い順にS,A,B,C)が予め定められている。一方,未処理時間は,イベントがサーバ104で発生してからの経過時間である。一般には,未処理時間が長いものほど,即時処理が求められると考えられる。
【0045】
サーバ104のイベント管理手段404は,発生したイベントをイベント保存領域406に登録する際,イベント優先度を第1キーとして登録する。次いで,同じイベント優先度の中での順位は,未処理時間の長いものほど上位になるようにソートして登録する。
【0046】
クライアントからのポーリングを受信すると,1件のポーリングに対し1件ずつイベントを上位から通知する。これにより,最も重要度・緊急度が高いと推測されるイベント順に,対象となるクライアントに通知することができる。
[ブロック図]
【0047】
図7は実施例2におけるサーバ104のブロック図である。図示するように,イベント管理手段404には,優先度および未処理時間をキーとしてイベントをソートする手段であるイベントソート手段701が備えられている。残りの手段は実施例1と同じであるため説明を省略する。
【0048】
図8は実施例2におけるサーバ104の動作フローである。図示するように,イベント管理タスクのステップ802にて,発生したイベントを優先度・未処理時間順にソートして,イベント保存領域406に登録する。
【0049】
次いで,メインタスクのステップ803にて,イベント保存領域406に保存されているイベントを,最上位から順にポーリングしてきたクライアントに通知する。
[その他の実施例]
実施例2では,イベントを,優先度および未処理時間にて管理したが,この未処理時間が所定の閾値を超えると,優先度を上げるというようにしてもよい。例えば,優先度Aのイベントの未処理時間が100sを超えると,優先度Sに変えるなどである。この場合,未処理時間をいったん0(ゼロ)にリセットすることが望ましい。
【0050】
実施例2では,サーバ104にて発生したイベントをポーリングしてきたクライアントに1件ずつ通知したが,クライアントの処理能力等を考慮し,優先度が高いものから順に,数件のイベントをまとめて通知することもできる。例えば,クライアントの処理能力が高い場合は,複数のイベントを通知することができる。
[まとめ]
【0051】
本願発明の第1の形態によれば,サーバで発生した特定クライアント向けのイベント発生通知依頼を,他のクライアントのポーリング応答に含めることで,サーバへの負担を軽減するためクライアントの数を増やし,ポーリング間隔を大きくしたとしても,当該特定のクライアントは自身に対するイベント発生を遅滞なく検知することができる。さらに,イベント発生通知を受信した当該特定クライアント自身が,この受信をトリガとして,サーバにアクセスを行い自身に対して発生したイベントの内容を取得することで,重要度が高いものや,秘匿性を有するようなイベントであっても,良好なレスポンスを維持しつつ内容を取得することができる。
【0052】
さらに本願発明の第2の形態によれば,サーバから送信されるイベント発生通知依頼は,イベントの重要度およびサーバによるイベントの未処理時間に基づいて送信順序が決定されるため,クライアントの数が増加し,イベントが多数発生したとしても,効率よくクライアントに通知することができる。
【0053】
また,その他の形態によれば,イベントの未処理時間に応じて優先度を変化させることで,優先度の低いイベントが長期間にわたって通知されないという問題を回避することができる。
【0054】
また,その他の形態によれば,ポーリングしてきたクライアントに通知するイベント数を,当該クライアントの処理能力等に応じて変化させることで,イベントが発生しているクライアントへのイベント発生通知を,より効率的に行うことができる。

【図面の簡単な説明】
【0055】
【図1】システム全体図
【図2】従来技術のシーケンス図
【図3】実施例1 シーケンス図
【図4】実施例1 サーバのブロック図
【図5】実施例1 サーバの動作フロー
【図6】実施例2 サーバ側でのイベント通知依頼送信順序
【図7】実施例2 サーバのブロック図
【図8】実施例2 サーバの動作フロー
【符号の説明】
【0056】
402 アクセス受信手段
404 イベント管理手段
405 応答手段


【特許請求の範囲】
【請求項1】
サーバと複数のクライアントとがネットワーク接続されており,クライアントは所定の時間間隔にて当該サーバへのアクセスを行うクライアントサーバシステムにおける当該サーバであって,
クライアントからのアクセスを受信する手段と,
クライアント毎に管理され,それぞれの当該クライアントに通知すべき通知情報を管理する手段と,
「所定の内容を当該通知情報の対象となるクライアントへ送信せよ」との内容を含む依頼を,受信した前記アクセスの応答として送信元クライアントに向けて送信する応答手段と,を備えるサーバ。
【請求項2】
前記所定の内容は「通知情報の対象となる前記クライアントが,前記サーバにアクセスし,前記通知情報を取得する」という動作のトリガであることを特徴とする請求項1に記載のサーバ。
【請求項3】
サーバと複数のクライアントとがネットワーク接続されており,クライアントは所定の時間間隔にて当該サーバへのアクセスを行うクライアントサーバシステムにおける当該サーバであって,
クライアントからのアクセスを受信する手段と,
クライアント毎に管理され,それぞれの当該クライアントに通知すべき通知情報を管理する手段と,
前記通知情報の数が複数の場合,所定の条件に基づき前記通知情報の順位を決定し,受信した前記アクセスに対する応答として,当該順位の最上位から所定数の通知情報に関し,受信した前記アクセスの応答として「所定の内容を当該通知情報の対象となるクライアントへ送信せよ」との内容を含む依頼を送信元クライアントに向けて送信する応答手段と,を備えるサーバ。
【請求項4】
前記所定の条件は「前記通知情報の対象となるクライアントにとっての優先度」および/または「前記サーバにおける前記通知情報の未処理時間」であることを特徴とする請求項3に記載のサーバ。
【請求項5】
前記所定の内容は「通知情報の対象となる前記クライアントが,前記サーバにアクセスし,前記通知情報を取得する」という動作のトリガであることを特徴とする請求項3または4に記載のサーバ。
【請求項6】
サーバと複数のクライアントとがネットワーク接続されており,クライアントは所定の時間間隔にて当該サーバへのアクセスを行うクライアントサーバシステムであって,
前記サーバは,
所定のクライアントからのアクセスを受信する手段と,
クライアント毎に管理され,それぞれの当該クライアントに通知すべき通知情報を管理する手段と,
「所定の内容を当該通知情報の対象となるクライアントへ送信せよ」との依頼内容を,受信した前記アクセスの応答として送信元クライアントに向けて送信する応答手段と,
を備えるクライアントサーバシステム。
【請求項7】
サーバと複数のクライアントとがネットワーク接続されており,クライアントは所定の時間間隔にて当該サーバへのアクセスを行うクライアントサーバシステムあって,
前記サーバは,
クライアントからのアクセスを受信する手段と,
クライアント毎に管理され,それぞれの当該クライアントに通知すべき通知情報を管理する手段と,
前記通知情報の数が複数の場合,所定の条件に基づき前記通知情報の順位を決定し,受信した前記アクセスに対する応答として,当該順位の最上位から所定数の通知情報に関し,受信した前記アクセスの応答として「所定の内容を当該通知情報の対象となるクライアントへ送信せよ」との内容を含む依頼を送信元クライアントに向けて送信する応答手段と,
を備えるクライアントサーバシステム。
【請求項8】
サーバと複数のクライアントとがネットワーク接続されており,クライアントは所定の時間間隔にて当該サーバへのアクセスを行うクライアントサーバシステムにおける当該サーバを,
クライアントからのアクセスを受信する手段と,
クライアント毎に管理され,それぞれの当該クライアントに通知すべき通知情報を管理する手段と,
「所定の内容を当該通知情報の対象となるクライアントへ送信せよ」との依頼内容が含まれた応答を,受信した前記アクセスの応答として送信元クライアントに向けて送信する応答手段と,して機能させるプログラム。
【請求項9】
前記所定の内容は「通知情報の対象となる前記クライアントが,前記サーバにアクセスし,前記通知情報を取得する」という動作のトリガであることを特徴とする請求項8に記載のプログラム。
【請求項10】
サーバと複数のクライアントとがネットワーク接続されており,クライアントは所定の時間間隔にて当該サーバへのアクセスを行うクライアントサーバシステムにおける当該サーバを,
クライアントからのアクセスを受信する手段と,
クライアント毎に管理され,それぞれの当該クライアントに通知すべき通知情報を管理する手段と,
前記通知情報の数が複数の場合,所定の条件に基づき前記通知情報の順位を決定し,受信した前記アクセスに対する応答として,当該順位の最上位から所定数の通知情報に関し,受信した前記アクセスの応答として「所定の内容を当該通知情報の対象となるクライアントへ送信せよ」との内容を含む依頼を送信元クライアントに向けて送信する応答手段と,して機能させるプログラム。
【請求項11】
前記所定の条件は「前記通知情報の対象となるクライアントにとっての優先度」および/または「前記サーバにおける前記通知情報の未処理時間」であることを特徴とする請求項10に記載のプログラム。
【請求項12】
前記所定の内容は「通知情報の対象となる前記クライアントが,前記サーバにアクセスし,前記通知情報を取得する」という動作のトリガであることを特徴とする請求項10または11に記載のプログラム。



【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公開番号】特開2013−37656(P2013−37656A)
【公開日】平成25年2月21日(2013.2.21)
【国際特許分類】
【出願番号】特願2011−175734(P2011−175734)
【出願日】平成23年8月11日(2011.8.11)
【出願人】(500112146)サイレックス・テクノロジー株式会社 (74)