説明

サーバ分散管理方法

【課題】 情報システムの複数サーバの動作状況の把握とキャッシュ管理を、管
理者の手間を増やさず、かつ効率的に行う。
【解決手段】 複数のサーバ(10、10…)が、相互支援により動的再構成さ
れるマルチキャスト階層を構成し、この上でサーバ状態(109)、キャッシュ
・ディレクトリ(108)、ヴァリデーションの通信(106)を行う。
【効果】 管理者は他のいくつかのサーバを指定してサーバを立ち上げる以外、
サーバ間の連携を管理する必要がない。キャッシュ・ディレクトリの交換によっ
てサーバ間のキャッシュが共有されるとともに、ヴァリデーション時間が削減さ
れることで、高速なユーザ反応時間が得られる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は計算機システムに関し、特にネットワークによって接続された複数の
計算機が、情報を流通・共有・変更するシステム(情報システム)を構築する際
のシステムの管理方法に関し、さらに具体的にはWorld―Wide Web
(WWW)に好適なサーバ分散管理方法に関する。
【背景技術】
【0002】
現在の情報システムは、ネットワークで接続された複数の計算機が情報を提供
、または入手することによって運営されている。主に情報を提供する計算機のハ
ードウェアとソフトウェアを総称してサーバ、主に情報を入手する計算機のハー
ドウェアとソフトウェアを総称してはクライアントと呼ぶ。
【0003】
従来用いられている情報システムでは、サーバが複数ある場合、これらのサー
バの間にはまったく連携が存在しない(例えば第1のサーバと第2のサーバがあ
っても、互いに存在を知らないか、依存しあわない)か、強く連携しあっている
(例えば第1のサーバと第2のサーバがデータを互いに交換したり、キャッシュ
する)かのいずれかである。
【0004】
第1のサーバの動作中に第2のサーバが新設されるか起動された場合(総称し
てサーバの追加と呼ぶ)や、第2のサーバが一時停止したり故障(サーバ自身の
故障と、サーバへの通信回線の故障の両方を含む)した場合(総称してサーバの
削除と呼ぶ)に、第1のサーバと第2のサーバを連携させるためには、従来は管
理者が第1のサーバと第2のサーバの設定を適切に行う必要があった。
【0005】
このことは、サーバがごく少数である場合には特に問題にならなかった。しか
し、サーバが多数になった場合、新たなサーバが追加または削除される際に、管
理者に大きな負担となる。
【0006】
近年のインターネットとWWWの爆発的な成長により、サーバの数が非常に多
数にわたる場面が発生している。まずWWWで用いられている技術(公知例1と
呼ぶ)を説明する。
【0007】
WWWでは、WWWサーバが保持すべき情報を「ホームページ」と呼ばれる単
位で保持している。ホームページは、それぞれURL(Uniform Res
ource Locatorの略)と呼ばれる名前を持っている。WWWクライ
アントのユーザが、アクセスしたいホームページのURLをWWWクライアント
に指定すると、WWWの第1の処理形態では、WWWクライアントは当該URL
で指定されるWWWサーバに対して、当該URLに対応するホームページの送信
を依頼する。当該WWWサーバは、この要求に応えて、当該ホームページを当該
WWWクライアントに与える。
【0008】
また第2の処理形態では、WWWクライアントが、ユーザが与えたURLで指
定されるWWWサーバに依頼を行なうかわりに、「プロキシ・サーバ(または単
にプロキシ)」と呼ばれる別の種類のサーバに依頼を行なう。プロキシは、当該
WWWサーバから当該URLに対応するホームページを得るか、さらに別のプロ
キシに当該URLを転送する。プロキシの依頼が複数段階である場合、プロキシ
は親子関係を持つ。親子関係を持つプロキシに関しては、例えばA.Chank
hunthod他の文献”A Hierarchical Internet
Object Cache”(1996 USENIX Technical
Conference、pp.153―163、1996)に記載されている。
WWWのプロキシは、複数のクライアントによって共有されるキャッシュを持つ
ことができる。このため、多くのプロキシを擁する第2の処理形態が現在のイン
ターネットでは広く用いられている。各プロキシがどのプロキシに依頼を転送す
るかは、管理者が設定する。
【0009】
また、WWW以外にもいくつかの情報システムが広く用いられているが、いず
れのシステムでも複数のサーバ間の連携は、管理者が設定する固定的な関係にと
どまっている。
【0010】
ネットワーク・ニュース・システム(以後公知例2と呼ぶ。B.Kantor
他著の文献”Network News Transfer Protocol
:A Proposed Standard for the Stream―
Based Transmission of News”Network W
orking Group RFC―977等に記載されている)は情報システ
ムの別の例であり、WWW同様複数のサーバによって構成される。
【0011】
ネットワーク・ニュース・システムの複数のサーバは、クライアントが購読お
よび投稿する「ニュース記事」のコピーを互いに配布しあっている。各サーバの
管理者は、それぞれのサーバが別のどのサーバとニュース記事の授受を行うかを
設定する。新たなサーバが追加された場合、既存のサーバの設定を手動で変更す
る必要がある。
【0012】
さらに、DNSドメイン名前サービス(公知例3と呼ぶ。例えばP.Mock
apetris著の文献”Domain Names―Implementat
ion and Specification”Network Workin
g Group RFC―1035の特に第2節に記載されている)も情報シス
テムの別の例であり、複数のサーバによって構成される。
【0013】
DNSはインターネットのホスト名と、そのホスト名の付随情報(IPアドレ
スやメールサーバ)とを対応づける。この対応情報を保持するため、複数のDN
Sサーバが木構造を構成する。クライアントの依頼は当該木構造をたどって、複
数のサーバの間を転送され、処理される。
【0014】
各DNSサーバが、別のどのDNSサーバに依頼を転送するかは、各DNSサ
ーバの管理者が設定する。あるDNSサーバが置き換わる場合には、隣接するD
NSサーバの設定を手動で変更する必要がある。また、前記木構造の各ノードは
、2つ以上のDNSサーバによって冗長構成をとっているが、これらのDNSサ
ーバが故障した場合(またはこれらのDNSサーバへのネットワーク経路が故障
した場合)には、やはり隣接するDNSサーバの設定を手動で変更する必要があ
る。
【0015】
ローカル・エリア・ネットワーク(LAN)内の分散ファイルシステムにおい
て、キャッシュのための空間を複数のコンピュータで共有する「協調キャッシン
グ」とよばれる方法も知られている。例えばMichael Dahlin他著
の文献”Cooperative Caching:Using Remote
Client Memory to Improve File Syste
m Performance”(First USENIX Symposiu
m on Operating Systems Design and Im
plementation、pp.267―280、1994)(公知例4と呼
ぶ)では、「マネージャ」と呼ばれるサーバが、どのファイル・ブロックがどの
ファイル・サーバに格納されているかを保持している。マネージャがクライアン
トからファイル・ブロックの転送を依頼されると、クライアントにファイル・ブ
ロックが格納されているコンピュータを返答するか、当該ファイル・サーバにク
ライアントの要求を転送する。マネージャは複数存在することができるが、ファ
イル・ブロックとマネージャとの対応関係はあらかじめ定められており、この対
応関係を変更するためには管理者が手動で設定を変更する必要がある。
【発明の開示】
【発明が解決しようとする課題】
【0016】
WWWでは、ある統計ではサーバ数が1996年6月から1997年1月まで
の半年で2.8倍に増加するなど、急激な成長が続いている。このため、WWW
全体の情報量も爆発的に増えている。プロキシは、複数のクライアントによって
共有されるキャッシュとしてユーザの反応時間(ユーザが情報を要求してからそ
の情報がユーザの手元に届くまでの時間)を減少させる役目があるが、WWW全
体の情報量に比してキャッシュの容量が小さいため、現状では低い効果しか得ら
れていない。
【0017】
本発明が解決しようとする第1の課題は、WWWのプロキシのように複数のサ
ーバを連携して動作させる際の、管理者の手間を減らすことである。これによっ
て、プロキシを多数擁する大規模なキャッシュの実現において、管理に大量の時
間と人数が必要であるという課題を解決する。具体的には、第1のサーバが追加
または削除される場合に、管理者が1つ以上の既存の第2のサーバの設定を変更
することなしに、第1のサーバの存在(または存在しないこと)を第2のサーバ
に知らせ、また第1のサーバに第2のサーバの存在(または存在しないこと)を
知らせることが課題である。
【0018】
なお第1の課題の解決には、WWWはインターネットの上で動作しており接続
マシン数が膨大であり、かつ管理組織も多数にわたるため、ブロードキャストを
用いる方法や、単一のサーバにすべての設定を集める方法は現実的な解決法とな
らない。また、第2のサーバが多数になった場合には、第1のサーバと第2のサ
ーバのすべてが連携することすら現実的ではなくなる。このようにサーバ数が非
常に多くなった場合には、連携するべきサーバの数を制限するための仕組みが必
要となる。
【0019】
また第1の課題が解決された場合に、複数のサーバに分散して存在するキャッ
シュを運営するために、複数のサーバ間で互いのキャッシュのリストを効率よく
交換し、以て1つのサーバのキャッシュにない情報を別のサーバに問い合わせる
方法が必要となる。この方法を実現することが第2の課題である。
【0020】
さらに、第1および第2の課題が解決された場合に、複数のサーバに跨る大規
模なキャッシュが実現されることになるが、この際、WWWで用いられている通
信プロトコルHTTP(R.Fielding他著の文献”Hypertext
Transfer Protocol―HTTP/1.1、”Network
Working Group RFC―2068等に記載されている)では、
キャッシュが十分に新しい情報を保持しているかを確認する動作(ヴァリデーシ
ョン動作と呼ぶ)を要求しているが、このヴァリデーション動作がユーザ反応時
間を悪化させていることがわかった。このため、ヴァリデーション動作がユーザ
反応時間を悪化させないようにすることも本発明が解決しようとする第3の課題
である。
【課題を解決するための手段】
【0021】
第1の課題を解決するために本発明の情報システム分散管理方法では、サーバ
動作情報(動作しているサーバのリスト)を分散管理するための「サーバ状態伝
播プロトコル」を持つ。各サーバは、管理者から与えられた少数の他のサーバの
名前から出発して、サーバ群の相互支援によってサーバ動作情報のマルチキャス
ト階層を動的に構築する。マルチキャスト階層はサーバ群が構成する木構造のグ
ループであり、各グループは数台から数十台のサーバからなる。一部のサーバが
停止したり再起動するに従って、マルチキャスト階層の動的再構成が行われる。
【0022】
このサーバ状態伝播プロトコルにより、上記第1の課題である複数のサーバを
連携して動作させる際の、管理者の手間が低減される。本発明では、サーバの起
動時に、他のサーバの名前をいくつか与えるだけでよく、その後複数のサーバの
うち一部が停止したり再起動する度毎に管理者が各サーバの設定を変更する必要
がないためである。また、本発明のサーバ状態伝播プロトコルは、ブロードキャ
ストを必要とせず、マルチキャストも動作中のサーバ群にのみ行われるので、イ
ンターネット上での使用に耐える。また、各サーバがサーバ動作情報を交換する
際には近接サーバ優先で通信することにより、サーバ数が膨大になった場合にも
動作する。すなわち、これにより第1の課題が解決される。
【0023】
第2の課題を解決するために本発明の情報システム分散管理方法では、「広域
協調キャッシュ管理プロトコル」を備える。このプロトコルは、前記サーバ状態
伝播プロトコルが形成するマルチキャスト階層を用いてキャッシュ・ディレクト
リ(URLと当該URLをキャッシュ中に保持するサーバのリスト)の伝播と、
キャッシュ制御(どのサーバがどのURLをキャッシュ中に保持するか、いつ、
どのURLをあるサーバから別のサーバに移動させるか)を、公知例4のマネー
ジャにあたる集中管理サーバなしで行う。
【0024】
サーバがある情報を別のサーバに移動させる場合があるが、この場合には移動
先サーバを決定する必要がある。この目的で、サーバが受け入れ可能なキャッシ
ュ価値の最小値(受け入れ可能キャッシュ価値と呼ぶ)を他サーバに回覧する。
また、1つのグループの複数のサーバが一斉に情報の移動を予定している場合、
移動先が1つのサーバに集中する恐れがある。この問題を解決するために、各サ
ーバは移動しようとする情報および予定移動先のリストを回覧する。これにより
各サーバは、他のサーバが選んでいない移動先を避けて移動先サーバを決定する
ことができる。さらに、近接する複数のサーバが同一情報のキャッシュを保持し
ている場合、このキャッシュのコピーすべてが一斉に破棄されないように工夫す
ることが必要である。集中サーバを用いずに近似的な方法でこの状態に近づける
ために、破棄しようとする情報のリスト(破棄予定リストと呼ぶ)をサーバの間
で回覧する。自分が破棄しようとする情報のキャッシュがグループのメンバが保
持する最後のコピーである場合には、予定した破棄を中止する。以上により第2
の課題が解決される。
【0025】
第3の課題を解決するために本発明の情報システム分散管理方法では、従来の
ようにユーザが情報を要求した時点でヴァリデーション動作を行うのではなく、
ユーザの要求以前にあらかじめヴァリデーション動作を行っておく「先行ヴァリ
デーション」を備える。先行ヴァリデーションは、一定時間ごとや、URLが参
照されてから一定時間経過後などに行う。この先行ヴァリデーションをHTTP
のプロトコルで許された範囲内で行う。これにより従来ユーザ反応時間の多くの
部分を占めていたヴァリデーション動作による消費時間をユーザ反応時間から取
り除くことができ、第3の課題が解決される。
【発明の効果】
【0026】
サーバ動作情報(動作しているサーバのリスト)を分散管理するためのサーバ
状態伝播プロトコルを持ったことにより、WWWのプロキシのように複数のサー
バを連携して動作させる際の、管理者の手間を減らすことができる。管理者は他
のいくつかのサーバを指定してサーバを立ち上げる以外、サーバ間の連携を管理
する必要がない。
【0027】
サーバ状態伝播プロトコルが形成するマルチキャスト階層を用いてキャッシュ
・ディレクトリの伝播と、キャッシュ制御を、集中管理サーバなしで行う広域協
調キャッシュ管理プロトコルを備えたことにより、複数のサーバに分散して存在
するキャッシュを運営するために、複数のサーバ間で互いのキャッシュのリスト
を効率よく交換し、以て1つのサーバのキャッシュにない情報を別のサーバに問
い合わせることができる。
【0028】
ユーザの要求以前にあらかじめヴァリデーション動作を行っておく「先行ヴァ
リデーション」を備えたことにより、ヴァリデーション動作がユーザ反応時間を
悪化させないようにすることができる。
【発明を実施するための最良の形態】
【0029】
以下、本発明の実施の一形態を図面を参照しながら説明する。簡単のため「発
明の実施の形態」を「実施例」と呼ぶ。
【0030】
図1と図2を用いて実施例の構成を説明する。
【0031】
外部サーバ13、13’、13”、…は、情報システムが提供する情報を保持
し、要求に応じてクライアント11またはサーバ10、10’、10”、…に情
報を提供する計算機である。サーバ10、10’、10”、…は情報システムの
キャッシュを保持するサーバである。クライアント11はユーザが利用する計算
機で、ネットワーク12を通じて外部サーバ13、13’、13”、…またはサ
ーバ10、10’、10”、…から提供された情報をユーザに表示する。サーバ
10、10’、10”、…は外部サーバ13、13’、13”、…の中で、最近
クライアント11が利用した情報や、クライアント11が今後利用すると予想さ
れる情報をキャッシュとして保持する。このキャッシュの目的にはいくつか考え
うるが、代表的な目的はクライアント11が情報を得るのに要する時間を高速化
することである。クライアント11が外部サーバ13、13’、13”、…の代
わりにサーバ10、10’、10”、…にアクセスすることにより、外部サーバ
13、13’、13”、…がネットワーク12の遠くにある場合でも高速に情報
にアクセスできる。
【0032】
この実施例の計算機は、いわゆるパーソナル・コンピュータ、ワークステーシ
ョン、並列計算機、大型計算機等、任意のコンピュータでよい。クライアント1
1はサーバ10、10’、10”、…と通信し、情報を表示する機能があればよ
いので、各種コンピュータ端末装置、携帯通信端末(いわゆるパーソナル・デジ
タル・アシスタンスPDAやハンドヘルド・パーソナル・コンピュータHPC)
、ネットワーク・コンピュータなどでも差し支えない。
【0033】
外部サーバ13、13’、13”、…、クライアント11、サーバ10、10
’、10”、…は計算機ではなく、計算機とソフトウェアの組合わせで実現して
も差し支えない。特に、計算機自身には変更を加えず、計算機上で動作するプロ
グラム(プロセス)によって、本発明を実施しても差し支えない。
【0034】
ネットワーク12は、ある団体(企業や学校や類似の団体)の全体や位置部門
でよく使用されるLANでもよく、また地理的に分散した複数の地点を結合する
WANの一部または全部でもよい。またネットワーク12は、計算機間結合網や
並列計算機内部のプロセッサ要素間の結合網でもよい。
【0035】
サーバ10はクライアント要求処理部100、キャッシュ管理部101、サー
バ管理部102、通信部106の各処理部分を含み、キャッシュ表107、キャ
ッシュ・ディレクトリ108、サーバ状態表109、グループ表110の各デー
タ構造を含む。また、キャッシュ管理部101は更にキャッシュ価値評価部10
4とキャッシュ移動破棄部105の各処理部分を含む。また、サーバ10、10
’、10”、…はそれぞれ一意な番号であるサーバID(または単にID)を持
つ。サーバIDとしては、サーバIDからサーバの通信用アドレスを対応づけ、
通信を行うことができるIDを用いる。例えば、IPアドレスをサーバIDとし
て用いても差し支えない。
【0036】
クライアント要求処理部100は、クライアント11が情報の取得を要求した
際に、応対を行う部分である。クライアント要求処理部100からのメッセージ
送信は通信部106を経由して(127)、ネットワーク12に送出される。逆
にネットワーク12からクライアント要求処理部100へのメッセージは、通信
部106を経由してクライアント要求処理部100に送られる(126)。クラ
イアント要求処理部100はキャッシュ表107に対する読み出し(146)を
行う。キャッシュ表107に対する書き込み(147)を行う場合もあるが、稀
である。
【0037】
キャッシュ管理部101は、サーバ10が保持するキャッシュを管理する部分
である。キャッシュ管理部101は、通信部106を経由してネットワーク12
へのメッセージの受信と送信を行う(128と129)。またキャッシュ管理部
101はキャッシュ表107に対する書き込みと読み込み(134と135)、
キャッシュ・ディレクトリ108に対する書き込みと読み込み(136と137
)、およびサーバ状態表109に対する書き込みと読み込み(138と139)
を行う。キャッシュ管理部101中のキャッシュ価値評価部104は、特定の情
報のキャッシュを保持することがどのくらい有用かを判定する部分である。また
キャッシュ管理部101中のキャッシュ移動破棄部105は、ある情報のキャッ
シュをサーバ10に置いておくべきでない場合に、当該キャッシュを破棄したり
、1つ以上の他のサーバ10’、10”、…に当該キャッシュを移動する部分で
ある。
【0038】
サーバ管理部102は、他のサーバ10’、10”、…をリストアップし、こ
れらのサーバの動作状況を管理する部分である。サーバ管理部102は、通信部
106を経由してネットワーク12へのメッセージの受信と送信を行う(130
と131)。またサーバ管理部102はサーバ状態表109に対する書き込みと
読み込み(140と141)、およびグループ表110に対する書き込みと読み
込み(142と143)を行う。
【0039】
ヴァリデーション管理部103は、先行ヴァリデーションの制御を行う部分で
ある。ヴァリデーション管理部103は、通信部106を経由してネットワーク
12へのメッセージの受信と送信を行う(132と133)。ヴァリデーション
管理部103はキャッシュ表107に対する書き込みと読み込み(144と14
5)を行う。
【0040】
通信部106は、クライアント11、他のサーバ10’、10”、…、外部サ
ーバ13、13’、13”、…と通信を行う部分である。クライアント11から
の受信と送信は120と121による。他のサーバ10’、10”、…からの受
信と送信は122と123による。外部サーバ13、13’、13”、…からの
受信と送信は124と125による。
【0041】
キャッシュ表107は、サーバ10のキャッシュの実体およびキャッシュの各
種属性を保持する表である。キャッシュ表107は1つ以上のキャッシュ表エン
トリ200からなる。1つのキャッシュ表エントリ200は1つの情報の1つの
キャッシュに対応しており、URL201が当該情報のURLを保持し、サイズ
202が当該情報のバイト数を保持し、日付203が当該情報の最終更新日付を
保持し、参照回数204が当該情報の最近の参照回数を保持する。キャッシュ内
容205は当該情報のコピーを保持する。
【0042】
キャッシュ・ディレクトリ108は、サーバ10、10’、10”、…のどれ
が、どの情報のキャッシュを持っているかという情報を保持する表である。キャ
ッシュ・ディレクトリ108は1つ以上のキャッシュ・ディレクトリ・エントリ
210からなる。1つのキャッシュ・ディレクトリ・エントリ210が、1つの
別のサーバが持つ1つの情報に対応しており、URL211が当該情報のURL
を、サーバID212が当該サーバのサーバIDを保持する。
【0043】
サーバ状態表109は、サーバ10、10’、10”、…のうちいくつかのI
Dと動作状態等の属性とを保持する表である。サーバ状態表109は1つ以上の
サーバ状態表エントリ220からなる。1つのサーバ状態表109が1つのサー
バに対応しており、サーバID221が当該サーバのサーバIDを保持し、スル
ープット222が当該サーバへ至る通信回線のスループット(ビット/秒)、レ
イテンシ223が当該サーバへ至る通信回線のレイテンシ(秒)を保持する。サ
ーバ状態表109にあるサーバのエントリがないか、スループット222が0で
あるか、レイテンシ223が「無限大」であれば、当該サーバが動作中でないか
、当該サーバへ至る通信回線に障害が発生していることを意味する。
【0044】
グループ表110は、サーバ状態表109に格納されているサーバ群のうち、
いくつかの近接のサーバ群を選んで保持する表である。1つのグループは最大M
AX台(MAXは定数)のサーバ(メンバ)からなる。各グループのサーバ群は
、サーバIDによってグループ内で順序づけされる。グループ内で最も若いサー
バIDを持つサーバを「リーダ」と呼ぶ。リーダは、1つ上のグループ(上位グ
ループ)の一員となることができ、グループ間でマルチキャスト通信を行う際に
は、その通信の中継役となる。もしリーダに障害が発生した場合には、リーダの
次に若いサーバIDを持つサーバが代行リーダとなる。この構造を表現するため
にグループ表110は、リーダのサーバIDを保持するリーダ・サーバID23
1、メンバのサーバIDを保持するサーバID232、232’、…、上位グル
ープのリーダを保持する上位リーダ・サーバID 233、上位グループのメン
バのサーバIDを保持する上位サーバID 234、234’、…からなる。
【0045】
次に、図3を用いて、サーバ10、10’、10”、…が相互に通信する際に
用いるメッセージの種類と、その形式を説明する。
【0046】
グループ参加メッセージ300は、新たにグループに参加しようとするサーバ
が発するメッセージである。1つのサーバがグループに参加しようとする場合と
、複数のサーバがグループに参加(または変更)しようとする場合の両方に用い
る。グループ参加メッセージ300は新規サーバID 301、301’、…を
格納しており、それぞれが新たにグループに参加しようとするサーバ群のIDで
ある。
【0047】
階層維持メッセージ310は、グループのメンバの動作状況を確認するために
用いるメッセージである。通常、あるグループのリーダが発し、当該グループお
よび他のいくつかのグループの動作中のメンバの間を回覧されて、再びリーダに
戻る。階層維持メッセージ310は、当該メッセージを最初に発したサーバのI
Dである送信元サーバID311と、動作中のサーバ群のIDである新規サーバ
ID312、312’、…と、ネスト数313からなる。ネスト数313は、複
数のグループに跨って1つの階層維持メッセージ310を回覧する際に用い、何
段先のグループまで階層維持メッセージ310を回覧するかを指定する。
【0048】
グループ更新メッセージ320は、グループに参加することが許可されたサー
バに(通常リーダから)送られるメッセージである。グループ更新メッセージ3
20は、参加すべきグループのリーダのIDである新リーダ・サーバID321
を格納する。
【0049】
ヴァリデーション依頼メッセージ330は、先行ヴァリデーションを行う時に
、先行ヴァリデーションを依頼するサーバから、先行ヴァリデーションの依頼を
受けるサーバに送られるメッセージで、先行ヴァリデーションの対象となる1つ
以上のURLを持つ。ヴァリデーション依頼メッセージ330は1つ以上のヴァ
リデーション依頼メッセージ・エントリ331からなり、各エントリは依頼元サ
ーバのIDであるサーバID332、先行ヴァリデーションの対象となるURL
であるURL333、依頼元サーバが知っているURLの最終更新日付である日
付334を格納する。
【0050】
キャッシュ価値メッセージ340は、サーバ同士が各自のキャッシュ全体のキ
ャッシュ価値の指標を交換し合うために用いるメッセージである。キャッシュ価
値メッセージ340は1つ以上のキャッシュ価値メッセージ・エントリ341か
らなり、各エントリはサーバを指定するサーバID342と、当該サーバのキャ
ッシュ価値の指標であるキャッシュ価値343を含む。
【0051】
移動予告メッセージ350は、第1のサーバが、キャッシュの中で(一般には
キャッシュ価値の低い)1つ以上の情報を第2のサーバに移動させる予定である
ことを、他の複数のサーバに知らせる際に用いる。移動予告メッセージ350は
1つ以上の移動予告メッセージ・エントリ351からなり、移動予告メッセージ
・エントリ351は第1のサーバのIDであるサーバID352、当該情報のU
RLであるURL353、および第2のサーバのIDである移動先サーバID3
54を格納する。
【0052】
破棄予告メッセージ360は、第1のサーバが、キャッシュの中で(一般には
キャッシュ価値の低い)1つ以上の情報を破棄する予定であることを、他の複数
のサーバに知らせる際に用いる。破棄予告メッセージ360は1つ以上の破棄予
告メッセージ・エントリ361からなり、各エントリは第1のサーバのIDであ
るサーバID362と、当該情報のURLであるURL353を格納する。
【0053】
ホストURLメッセージ370は、サーバ同士が各自のキャッシュにどのよう
な情報が格納されているかを交換し合うために用いるメッセージである。ホスト
URLメッセージ370は1つ以上のホストURLメッセージ・エントリ371
からなり、各エントリはキャッシュを持つサーバのIDであるサーバID372
、1つの情報のURLであるURL373、および当該URLが存在するか存在
しないかを示すフラグ374を格納する。
【0054】
サーバ状態伝播
本発明の情報システム分散管理方法では、サーバ動作情報(動作しているサー
バのリスト)を分散管理するための「サーバ状態伝播プロトコル」を持つ。以下
、このプロトコルの動作を説明する。
【0055】
(1)階層形成処理
まず図4を用いて、主にサーバ初期化時に行う階層形成処理を説明する。以下
の処理手順の説明では、説明をわかりやすくするために動作の骨子に絞って説明
を行う。すなわち、エラー処理やタイミング依存の動作等は省略する。
【0056】
管理者は、0個または1つ以上の他のサーバのサーバIDを与えて、サーバ1
0を起動する。サーバ10が起動されるとすべての表を「空」に初期化した後サ
ーバ管理部102に制御を移し、与えられたサーバIDをサーバ状態表109に
格納してから、他のサーバ10’、10”、…の動作状態を調べ、他のサーバ1
0’、10”、…をより多く取得し、1つのグループに参加する動作を行う。
【0057】
ステップ401で、サーバ状態表109が空であるかを判定する。判定結果が
Y(YESの略)であれば(402)、他のサーバが一切わからないので、ステ
ップ403で、サーバ状態表109に新たなサーバ状態表エントリ220を追加
し、当該エントリのサーバID221に自分のIDを、スループット222に「
無限大」を、レイテンシ223に「0」を格納する。そして、階層形成処理を終
了する(417)。
【0058】
一方、ステップ401の判定結果がN(NOの略)であれば(404)、サー
バ状態表109から第1のサーバを1つ選択し(ステップ405)、第1のサー
バに「グループ表転送」の要求メッセージを送信する(ステップ406)。ステ
ップ406では同時に、第1のサーバとサーバ10との通信速度の計測を開始す
る。なお第1のサーバが「グループ表転送」の要求メッセージを受け取ると、第
1のサーバのグループ表110をメッセージに詰め、返答としてサーバ10に送
る。続くステップ407で、第1のサーバが返答として返したグループ表を受信
し、同時に通信速度の計測を終了する。
【0059】
ステップ408では、サーバ状態表109に計測した通信速度を反映させると
ともに、受け取った第1のサーバのグループ表を自サーバのサーバ状態表109
に反映させる。具体的には、サーバ状態表エントリ220でサーバID221が
第1のサーバのIDに等しいエントリを探し、当該エントリのスループット22
2とレイテンシ223を計測した通信速度を用いて更新する。更新の方法には、
平均をとる、置き換えるなどいくつか考えられるが、本実施例では置き換える方
法をとる。次に、受け取った第1のサーバのグループ表に含まれるリーダ・サー
バID、サーバID、上位リーダ・サーバID、上位サーバIDのうち、サーバ
状態表109に対応するサーバ状態表エントリ220がないサーバのIDの各々
について、新たなサーバ状態表エントリ220を追加し、サーバID221に当
該サーバのIDを、スループット222に「0」を、レイテンシ223に「無限
大」を格納する。これにより、第1のサーバに近接のサーバ群がいくつか、サー
バ状態表109に追加される。
【0060】
ステップ409では、上記ステップ405から408をN回(Nは定数)繰り
返したかどうかを判定する。判定がNなら(410)、ステップ405に戻る。
判定がYなら(411)、ステップ412に移る。ステップ412では、サーバ
状態表に格納されたサーバ群のうち、最も近接のサーバ(例えばスループット2
22をレイテンシ223で割った値が最大のサーバ)に対してグループ参加メッ
セージ300を送る。この際新規サーバID301には自分のサーバIDを格納
する。ステップ413で、当該グループ参加メッセージ300に対する返答であ
るグループ更新メッセージ320を受信すると、ステップ414でグループ更新
メッセージ320の新リーダ・サーバID321に対応するリーダに向けて、「
グループ表転送」の要求メッセージを送信する(ステップ415)。リーダは「
グループ表転送」の要求メッセージを受け取ると、リーダのグループ表110を
メッセージに詰め、返答としてサーバ10に送る。続くステップ407で、第1
のサーバが返答として返したグループ表を受信し、さらにステップ416で、受
け取ったグループ表を自サーバのグループ表110に反映させる。
【0061】
以上が階層形成処理の手順である。なお、グループ更新メッセージ320がこ
の手順以外に受信される場合もありうる。この場合、当該グループ更新メッセー
ジ320の新リーダ・サーバID321を用いて、ステップ414、415、4
16の処理を行う。
【0062】
(2)グループ参加要求処理
次にグループ参加メッセージ300を受信した場合の処理を、5を用いて説明
する。
【0063】
サーバ10がグループ参加メッセージ300を受け取ると、ステップ501で
自分がリーダがどうかを判定する。具体的には、グループ表110のリーダ・サ
ーバID231が「空」であるか、自分のサーバIDが格納されているならば、
リーダである。ステップ501の判定がNなら(502)、ステップ503でリ
ーダ(グループ表110のリーダ・サーバID231に格納されているサーバI
D)に現在処理中のグループ参加メッセージ300を転送し、グループ参加要求
処理を終了する(504)。
【0064】
一方ステップ501の判定がYなら(505)、グループのメンバ数がどのよ
うに変化するかによってどのようにグループを構成するかを決定する。まず現在
グループに参加しているメンバの数(グループ表110のサーバID 232、
232’、…の数)を調べ「旧メンバ数」とする。そして、グループ参加メッセ
ージ300に含まれるサーバの数(新規サーバID 301、301’、…の数
)を「新メンバ数」とする。ステップ506では、旧メンバ数と新メンバ数の和
が前記MAX未満かどうかを調べる。この判定がYなら(507)、ステップ5
08で、グループ参加メッセージ300に含まれる新規サーバID 301、3
01’、…をグループ表110のサーバID 232、232’、…に追加する
。ステップ509でグループ更新メッセージ320の新リーダ・サーバID32
1にサーバ10のサーバIDを格納し、当該メッセージをグループ参加メッセー
ジ300の新規サーバID 301、301’、…に対応するサーバ群に返答す
る。そして、グループ参加要求処理を終了する(510)。
【0065】
一方、ステップ506の判定がNなら(511)、ステップ512で旧メンバ
数を1増加してもMAX未満かどうかを調べる。この判定がYなら(513)、
514で、グループ参加メッセージ300の新規サーバ ID301をグループ
表110のサーバ ID232、232’、…に追加する。そしてステップ51
5で新規サーバID301には新リーダ・サーバID321にサーバ10のサー
バIDを格納したグループ更新メッセージ320を送信し、新規サーバID 3
01’、301”、…には新リーダ・サーバID321に新規サーバID301
を格納したグループ更新メッセージ320を送信する。そして、グループ参加要
求処理を終了する(516)。
【0066】
一方、ステップ512の判定がNなら(517)、ステップ518で新グルー
プを作成する。この新グループのメンバは、サーバ10と新規サーバID301
のサーバ、およびサーバID232のサーバである。現在のグループのリーダは
サーバID232に譲る。具体的には、現在のグループを、サーバID232を
リーダとしたグループとするために、サーバID 232、232’、…に対し
、新リーダ・サーバID321にサーバID232を格納したグループ更新メッ
セージ320を送信する。サーバID232のサーバはこれによってリーダにな
り、かつ既にのべた動作によって、上位リーダをサーバ10に設定する。次に新
グループを形成するため、グループ表110のサーバID 232、232’、
…に、新規サーバID301とサーバID232を格納する。続くステップ51
9で、新規サーバID301には新リーダ・サーバID321にサーバ10のサ
ーバIDを格納したグループ更新メッセージ320を送信し、新規サーバID
301’、301”、…には新リーダ・サーバID321に新規サーバID30
1を格納したグループ更新メッセージ320を送信する。
【0067】
以上がグループ参加要求処理である。以上の動作によって、各グループの最大
数をMAX以下に保ちながら、サーバの動的な増加に対応して階層化して行くこ
とが可能となる。
【0068】
(3)階層維持メッセージ受信処理
サーバ10がリーダの場合、タイマー等を用いて定期的に階層維持メッセージ
310を発行する。階層維持メッセージは、サーバ10が属するグループのメン
バの他、上下K段(Kは階層維持メッセージ受信処理開始時の引数)のグループ
階層を伝って回覧され、再びサーバ10に戻る。この動作を実現する処理の手順
を図6を用いて説明する。階層維持メッセージ310に対し各メンバは、自分が
動作中であるというデータを付加して次のメンバに送る。もし次のメンバとの通
信ができなければ、その次のメンバを試みる。この動作の結末は、(1)動作中
のメンバ全員を回って階層維持メッセージ310がリーダに返る、(2)階層維
持メッセージ310を保持中のメンバが障害を起して階層維持メッセージ310
、(3)リーダが障害を起し、最終送信先がなくなる、のいずれかとなる。以下
のプロトコルでは代行リーダとタイムアウトの使用により、(1)、(2)、(
3)のいずれにも対処できる。
【0069】
サーバ10が階層維持メッセージ310を受け取ると、まずステップ601で
送信元サーバID311が自分のIDと等しいかどうかを判定する。判定がYな
ら(602)、階層維持メッセージ受信処理は終了である。
【0070】
一方ステップ601の判定がNなら(603)、ステップ604で階層維持メ
ッセージ310に自分のサーバIDを新規サーバID312、312’、…に追
加する。
【0071】
なおこの時、すでに新規サーバID312、312’、…に自分のサーバID
が含まれている場合、同じ階層維持メッセージ310が2度回ってきたことを意
味する。この場合、リーダが受け取るべきメッセージを受け取れなかったために
、自分が代行リーダになったことを意味する。この場合で、階層維持メッセージ
310がグループ表110の上位サーバID 234、234’、…のいずれか
から送られた場合には上位グループのリーダになるため、上位サーバID 23
4、234’、…のサーバ群に対して、新リーダ・サーバID321に自分のサ
ーバIDを格納したグループ更新メッセージ320を送信する。また、階層維持
メッセージ310がグループ表110のサーバID232、232’、…のいず
れかから贈られた場合にはグループのリーダになるため、サーバID 232、
232’、…のサーバ群に対して、新リーダ・サーバID321に自分のサーバ
IDを格納したグループ更新メッセージ320を送信する。
【0072】
続いて、自分がリーダで、かつネスト数313が1に等しいかを判定する(ス
テップ605)。判定がYなら(606)、ステップ606で階層維持メッセー
ジ310にグループ表110のサーバID 232、232’、…を新規サーバ
ID312、312’、…に追加し、ステップ610に進む(608)。また、
ステップ605の判定がNなら、ここでは何もしない(609)。
【0073】
続いて、自分がリーダで、かつネスト数313が2以上かを判定する(ステッ
プ610)。判定がYなら(611)、ステップ612で送信元サーバID31
1をサーバ10のIDに変更してネスト数313を1減じ、ステップ613でメ
ンバの1つに階層維持メッセージ310を送信する。具体的には、グループ表1
10のサーバID 232、232’、…を上から走査していき、階層維持メッ
セージ310の送信がうまくいくまで試みる。ステップ614でメンバから階層
維持メッセージ310が戻ってきたら、階層維持メッセージ310の送信元サー
バID311を元に戻し、次の処理に進む(615)。
【0074】
なお、ステップ613とステップ614の間で回覧される送信元サーバID3
11が、メンバの障害やネットワーク12の障害によって、失われる可能性もあ
る。この際、サーバ10はタイムアウトによりステップ614の受信をあきらめ
、次の処理に進む(615)。
【0075】
次に、ステップ617で、階層維持メッセージ310が上位メンバから受け取
ったものかを判定する。判定がYなら(618)、当該階層維持メッセージ31
0は上位メンバを回覧されているので、送信先も上位メンバから選択するのが良
い。具体的にはステップ619で、グループ表110の上位サーバID 234
、234’、…のうちサーバ10のIDが格納されているエントリを探す。もし
この条件に合うエントリがあり、そのエントリの次のエントリのサーバがあれば
、当該サーバに階層維持メッセージ310の送信を試みる。もし当該サーバへの
送信が失敗した場合(すなわち当該サーバの障害かネットワーク12の障害の場
合)、さらに次のエントリ、その次のエントリ、…を試みる。もし最後のエント
リも試したら、上位リーダ・サーバID 233を試みる。これを上位リーダ・
サーバID 233および上位サーバID234をすべて試みるまで続け、もし
どこにも送信できなければ送信をあきらめる。次にステップ622に進む(62
0)。また、ステップ617の判定がNなら(621)、ステップ622に進む

【0076】
ステップ622では、階層維持メッセージ310がメンバから受け取ったもの
かを判定する。判定がYなら(623)、当該階層維持メッセージ310はメン
バを回覧されているので、送信先もメンバから選択するのが良い。具体的にはス
テップ624で、グループ表110のサーバID 232、232’、…のうち
サーバ10のIDが格納されているエントリを探す。もしこの条件に合うエント
リがあり、そのエントリの次のエントリのサーバがあれば、当該サーバに階層維
持メッセージ310の送信を試みる。もし当該サーバへの送信が失敗した場合(
すなわち当該サーバの障害かネットワーク12の障害の場合)、さらに次のエン
トリ、その次のエントリ、…を試みる。もし最後のエントリも試したら、リーダ
・サーバID231を試みる。これをリーダ・サーバID231およびサーバI
D232をすべて試みるまで続け、もしどこにも送信できなければ送信をあきら
め(626)、階層維持メッセージ受信処理を終了する。また、ステップ622
の判定がNなら(626)、そのまま階層維持メッセージ受信処理を終了する。
【0077】
以上が階層維持メッセージの処理の手順である。階層維持メッセージの受信処
理が終了してから、サーバ10は階層維持メッセージ310の新規サーバID3
12をサーバ状態表109に反映する。すなわち、サーバ状態表109に対応す
るサーバ状態表エントリ220がないサーバのIDの各々について、新たなサー
バ状態表エントリ220を追加し、サーバID221に当該サーバのIDを、ス
ループット222に「0」を、レイテンシ223に「無限大」を格納する。これ
により、第1のサーバに近接のサーバ群がいくつか、サーバ状態表109に追加
される。
【0078】
階層維持メッセージ310のうちネスト数313が0のメッセージは、特にグ
ループ内のサーバの活動状態を調べ、メンバに伝播するのに用いる。この場合、
リーダが階層維持メッセージ310を送信して、動作中のメンバを一周してリー
ダに戻る。この後、同じメッセージにネスト数313に「―1」を格納してメン
バに回覧する。ネスト数313が―1の階層維持メッセージ310を受け取った
ら、サーバは階層維持メッセージ310の新規サーバID312、312’、…
をサーバID 232、232’、…に格納して、次のメンバに同じメッセージ
を渡す。この手順により、メンバの活動状態がグループ全体に伝播する。
【0079】
(4)階層再構成処理
あるグループのサーバ数が一定数以下になった場合、グループを再構成する。
この手順を図7を用いて説明する。
【0080】
サーバ10がリーダの場合、グループ表110が変化する度に階層再構成処理
を起動する。ステップ701で、グループ表110のサーバID 232、23
2’、…の数がMIN以下(MINは定数)かつ、上位リーダ・サーバID 2
33が「空」でなく、かつ上位リーダ・サーバID 233が自分のサーバID
以外であるかを判定する。この判定がNなら(702)、階層再構成処理を終了
する。
【0081】
一方、ステップ701の判定がYなら(703)、上位リーダ・サーバID
233に対応するサーバに、グループ参加メッセージ300を送る。この際の新
規サーバID 301、301’、…には、自分のサーバIDおよびグループ表
110のサーバID 232、232’、…を格納する。
【0082】
これにより、既に説明したグループ参加要求処理が上位グループで起動され、
サーバ10の属するグループは再構成されて、通常別のグループに吸収される。
【0083】
以上(1)から(4)の各処理によって実現されるサーバ状態伝播プロトコル
によって、以下の特長が得られる。相互支援によってマルチキャスト階層を動的
に構築することによって、他サーバの動作状況の変化および通信速度の変化を、
集中サーバを必要とせずに把握すること。伝播するサーバ情報を一定数以下の近
接サーバの情報と遠隔サーバの情報に絞り、伝播先をマルチキャスト階層の構造
にしたがって一定数以下にすることによって、サーバが多数になっても、管理の
ための通信が爆発しないこと。マルチキャスト階層再構築によって、システム動
作中の動的なサーバの参加・脱退に対応することと、一部サーバまたはネットワ
ークの障害時に対処すること。管理者が与える設定を、サーバ起動時に最初に通
信する少数のサーバのみに絞り、管理者の設定が簡単にすること。
【0084】
広域協調キャッシュ管理
本発明の情報システム分散管理方法では、「広域協調キャッシュ管理プロトコ
ル」を備える。このプロトコルは、前記サーバ状態伝播プロトコルが形成するマ
ルチキャスト階層を用いてキャッシュ・ディレクトリの伝播と、キャッシュ制御
(どのサーバがどのURLをキャッシュ中に保持するか、いつ、どのURLをあ
るサーバから別のサーバに移動させるか)を集中管理サーバなしで行う。
【0085】
(1)キャッシュの検索とキャッシュ・ディレクトリの伝播
サーバ10が、クライアント11が発した第1のURLの情報に対する要求を
受け付けると、クライアント要求処理部100がこの要求を処理する。クライア
ント要求処理部100は、キャッシュ表107を第1のURLを用いて検索し、
URL201が第1のURLに等しいキャッシュ表エントリ200があればキャ
ッシュ内容205をクライアント11に返し、参照回数204を1増加させる。
このようなエントリがなければ、キャッシュ管理部101に制御を移す。
【0086】
キャッシュ管理部101では、キャッシュ・ディレクトリ108を第1のUR
Lを用いて検索し他のサーバ10’、10”、…が第1のURLの情報を保持し
ていないかを調べる。すなわち、URL211が第1のURLに等しいキャッシ
ュ・ディレクトリ・エントリ210があれば、当該キャッシュ・ディレクトリ・
エントリ210のサーバID212に対応するサーバにクライアント11の要求
を転送する。もしこのようなエントリがなければ、第1のURLを処理可能な外
部サーバ13、13’、13”、…にクライアント11の要求を送信する。
【0087】
他のサーバ10’、10”、…と外部サーバ13、13’、13”、…に送信
した要求の返答は、HTTPのプロトコルで返される。このプロトコルの詳細は
省略するが、情報の内容、サイズ、最終更新日付が付加されるのが普通である。
この返答を受け取ったキャッシュ管理部101は、キャッシュ表107に新たな
キャッシュ表エントリ200を作り、該エントリのURL201に第1のURL
を、サイズ202にサイズを、日付203に最終更新日付を、参照回数204に
0を、キャッシュ内容205に情報の内容を格納する。
【0088】
グループのキャッシュ・ディレクトリ108を更新するために、新たな情報を
入手したサーバ10は、グループのメンバに対してホストURLメッセージ37
0を送る。ホストURLメッセージ370のサーバID372はサーバ10のI
Dを、URL373は当該情報のURLを、フラグ374は「存在」を保持する

【0089】
(2)キャッシュ価値回覧処理
本発明では、サーバ10、10’、10”、…がキャッシュされた情報のキャ
ッシュ価値を「キャッシュ価値=(参照回数)×(予測再入手時間)/(情報の
サイズ)」の式で評価する。予測再入手時間は、外部サーバ13、13’、13
”、…と他のサーバ10’、10”、…から入手する時間を予測する。他のサー
バ10’、10”、…との予測際入手時間の予測には、サーバ状態表109のス
ループット222とレイテンシ223を用いる。外部サーバ13、13’、13
”、…を用いた予測再入手時間は、スループットとレイテンシともに一律な定数
を用いる。
【0090】
サーバ10、10’、10”、…は、キャッシュに保持している各情報のキャ
ッシュ価値を計算し、情報を順序付けする。この順序に従って、必要に応じて情
報をキャッシュから破棄したり、他のサーバ10’、10”、…へ移動する。
【0091】
サーバ10が第1の情報を他のサーバ10’、10”、…の1つに移動させる
場合には、移動先サーバを決定する必要がある。この目的でサーバ10、10’
、10”、…は、自分が受け入れ可能なキャッシュ価値の最小値(受け入れ可能
キャッシュ価値と呼ぶ)を他サーバに回覧する。受け入れ可能キャッシュ価値に
は、例えば、キャッシュされている情報のうち、最下位から数えてM番目(Mは
適当な定数)のキャッシュ価値を用いる。この受け入れ可能キャッシュ価値を用
いて、各サーバは移動先サーバを選択する。
【0092】
受け入れ可能キャッシュ価値回覧処理の手順を、図8を用いて説明する。
【0093】
リーダのキャッシュ価値評価部104は、一定時間毎にキャッシュ価値回覧処
理を起動する。またリーダ以外のキャッシュ価値評価部104は、キャッシュ価
値メッセージ340を受け取った時点でキャッシュ価値回覧処理を行う。キャッ
シュ価値回覧処理を開始すると、ステップ801で自分がリーダであるかどうか
を判定する。
【0094】
ステップ801の判定がYの場合(802)、ステップ803で上記の要領で
自分の回覧すべき受け入れ可能キャッシュ価値を計算する。次に、新たなキャッ
シュ価値メッセージ340を作成し、新たなキャッシュ価値メッセージ・エント
リ341を作り、当該エントリのサーバID342に自分のサーバIDを、キャ
ッシュ価値343に計算した受け入れ可能キャッシュ価値を格納する。そして、
ステップ804で作成したキャッシュ価値メッセージ340を送信する。送信先
は、階層維持メッセージの回覧と同様、グループ表110を用いて決定する。
【0095】
続くステップ805では動作中のメンバを一周してきたキャッシュ価値メッセ
ージ340を受信する。そして受け取ったメッセージをもう一周回覧するために
、ステップ806で再びメンバに受け取ったキャッシュ価値メッセージ340を
送信する。さらにステップ807でキャッシュ価値メッセージ340を受信する
。これによって、キャッシュ価値回覧処理の間動作中のメンバは2回キャッシュ
価値メッセージ340を受け取ることになる。
【0096】
一方ステップ801の判定がNの場合(808)、まずステップ809でキャ
ッシュ価値メッセージ340を受信し、ステップ810でキャッシュ価値メッセ
ージ340の自分のキャッシュ価値メッセージ・エントリ341があるかを判定
する。具体的には、受信したキャッシュ価値メッセージ340のキャッシュ価値
メッセージ・エントリ341のうち、サーバID342が自分のサーバIDに等
しいエントリがあるかを調べる。この判定がNの場合(811)、ステップ81
2で回覧すべき受け入れ可能キャッシュ価値を計算し、ステップ813でキャッ
シュ価値メッセージ340に自分のキャッシュ価値メッセージ・エントリ341
を追加する。すなわち、新たなキャッシュ価値メッセージ・エントリ341を作
り、当該エントリのサーバID342に自分のサーバIDを、キャッシュ価値3
43に計算した受け入れ可能キャッシュ価値を格納する。そして、ステップ81
4で次のメンバにキャッシュ価値メッセージ340を送る。送信先は、階層維持
メッセージの回覧と同様、グループ表110を用いて決定する。
【0097】
また、ステップ810の判定がYの場合(815)、すなわち二周目の回覧の
場合、ステップ816で、受信したキャッシュ価値メッセージ340をキャッシ
ュ価値評価部104の中に保存する。続いてステップ814の処理を行い、キャ
ッシュ価値回覧処理を終了する。
【0098】
(3)移動予告回覧によるキャッシュ移動集中の回避
1つのグループの複数のサーバが一斉に情報の移動を予定している場合、移動
先が1つのサーバに集中する恐れがある。この問題を解決するために、各サーバ
は移動しようとする情報および予定移動先のリスト(移動予定リストと呼ぶ)を
移動予告メッセージ350にのせて回覧する。これにより各サーバは、他のサー
バが選んでいない移動先を避けて移動先サーバを決定することができる。
【0099】
移動予告回覧処理の手順を、図9を用いて説明する。
【0100】
リーダのキャッシュ移動破棄部105は、一定時間毎に移動予告回覧処理を起
動する。またリーダ以外のキャッシュ移動破棄部105は、移動予告メッセージ
350を受け取った時点で移動予告回覧処理を行う。移動予告回覧処理を開始す
ると、ステップ901で自分がリーダであるかどうかを判定する。
【0101】
ステップ901の判定がYの場合(902)、ステップ903で上記の要領で
移動予告リストを作成する。移動予告リストはステップ904で移動予告メッセ
ージ350に格納される。すなわち、新たな移動予告メッセージ350を作成し
、移動すべき情報毎に新たな移動予告メッセージ・エントリ351を作り、当該
エントリのサーバID352に自分のサーバIDを、URL353に移動すべき
情報のURLを、そして移動先サーバID354に移動先サーバを格納する。そ
して、ステップ905で作成した移動予告メッセージ350を送信する。送信先
は、階層維持メッセージの回覧と同様、グループ表110を用いて決定する。続
くステップ906で、移動処理を行う。すなわち、移動すべき情報のそれぞれに
対し、情報を移動すべきサーバに情報をネットワーク12経由で転送する。
【0102】
一方ステップ901の判定がNの場合(907)、まずステップ908で移動
予告メッセージ350を受信し、ステップ909で移動予告メッセージ350を
もとに自分の移動予告リストを更新する。すなわち、もし自分が移動を予定して
いる移動先サーバが、移動予告メッセージ350の上記M個以上の移動予告メッ
セージ・エントリ351の移動先サーバID354に格納されていれば、別の移
動先サーバを選択する。次にステップ910で、更新した自分の移動予告リスト
を移動予告メッセージ350に反映する。すなわち、移動すべき情報毎に新たな
移動予告メッセージ・エントリ351を作り、当該エントリのサーバID352
に自分のサーバIDを、URL353に移動すべき情報のURLを、そして移動
先サーバID354に移動先サーバを格納する。続くステップ911で、作成し
た移動予告メッセージ350を送信する。送信先は、階層維持メッセージの回覧
と同様、グループ表110を用いて決定する。続くステップ906で、移動処理
を行う。すなわち、移動すべき情報のそれぞれに対し、情報を移動すべきサーバ
に情報をネットワーク12経由で転送する。
【0103】
(4)破棄予告回覧によるキャッシュ一斉破棄の回避
近接する複数のサーバが同一情報のキャッシュを保持している場合、このキャ
ッシュのコピーすべてが一斉に破棄されないように工夫することが必要である。
理想的には、近接する複数のサーバに対して情報のコピーがただ1つ存在するの
が望ましい。本発明のシステムでは、集中の管理サーバを用いずに近似的な方法
でこの状態に近づける。このために、破棄しようとする情報のリスト(破棄予定
リストと呼ぶ)をメンバの間で回覧する。自分が破棄しようとする情報のキャッ
シュがグループのメンバが保持する最後のコピーである場合には、予定した破棄
を中止する。
【0104】
破棄予告回覧処理の手順を、図10を用いて説明する。
【0105】
リーダのキャッシュ移動破棄部105は、一定時間毎に破棄予告回覧処理を起動
する。またリーダ以外のキャッシュ移動破棄部105は、破棄予告メッセージ3
60を受け取った時点で破棄予告回覧処理を行う。破棄予告回覧処理を開始する
と、ステップ1001で自分がリーダであるかどうかを判定する。
【0106】
ステップ1001の判定がYの場合(1002)、ステップ1003で上記の
要領で破棄予告リストを作成する。破棄予告リストはステップ1004で破棄予
告メッセージ360に格納され、送信される。すなわち、新たな破棄予告メッセ
ージ360を作成し、破棄すべき情報毎に新たな破棄予告メッセージ・エントリ
361を作り、当該エントリのサーバID362に自分のサーバIDを、URL
363に破棄すべき情報のURLを格納する。送信先は、階層維持メッセージの
回覧と同様、グループ表110を用いて決定する。続くステップ1005で、破
棄予告メッセージ360の受信を行い、しかる後にステップ1006で破棄処理
を行う。すなわち、破棄すべき情報のそれぞれをキャッシュ表107から削除す
る。この際、グループのキャッシュ・ディレクトリ108を更新するために、サ
ーバ10はグループのメンバに対してホストURLメッセージ370を送る。ホ
ストURLメッセージ370のサーバID372はサーバ10のIDを、URL
373は当該URL333を、フラグ374は「存在しない」を保持する。
【0107】
一方ステップ1001の判定がNの場合(1007)、まずステップ1008
で破棄予告メッセージ360を受信し、ステップ1009で破棄予告メッセージ
360とキャッシュ・ディレクトリ108をもとに自分の破棄予告リストを更新
する。すなわち、もし自分が破棄を予定している情報のそれぞれについて、「(
キャッシュ・ディレクトリ108に登場する回数)―(破棄予告メッセージ36
0に登場する回数)」が1以下であれば、破棄をしないことにし、破棄予定リス
トから取り除く。次にステップ1010で、更新した自分の破棄予告リストを破
棄予告メッセージ360に反映する。すなわち、破棄すべき情報毎に新たな破棄
予告メッセージ・エントリ361を作り、当該エントリのサーバID362に自
分のサーバIDを、URL363に破棄すべき情報のURLを格納する。続くス
テップ1011で、作成した破棄予告メッセージ360を送信する。送信先は、
階層維持メッセージの回覧と同様、グループ表110を用いて決定する。続くス
テップ1006で、すでに説明した破棄処理を行う。
【0108】
先行ヴァリデーション
WWWではキャッシュのヴァリデーションに消費する時間がユーザの反応時間
のかなりの部分を占める。そこで、定期的にキャッシュされた情報のヴァリデー
ションを行っておくことで、キャッシュの新鮮さを常に一定以上に保つ先行ヴァ
リデーションを導入する。先行ヴァリデーションは、ユーザの要求が特にないと
きにでも、ヴァリデーションをサーバ10、10’、10”、…が行うことであ
る。これにより、ユーザがWWWページを参照した時点でのヴァリデーションを
できる限り回避する。
【0109】
ヴァリデーション間隔をどの程度まで広く取ることが可能かを見積るために、
1度参照されたWWWページが、別のユーザから参照されるまでの時間を、我々
の組織のWWW利用記録から得た。1時間以内に再参照されるWWWページは参
照されるWWWページ全体の2.3%に過ぎず、12時間以内でも9.9%である。
また全体を平均すると再参照間隔は177.7時間であることが明らかとなった
。正確な時間はユーザの母集団に左右されることが予想されるが、基本的にヴァ
リデーションの時間間隔は8時間から12時間程度でもユーザが得るキャッシュ
の新鮮さにほとんど影響を与えないことが言える。また、ヴァリデーション動作
を変更する場合、広く用いられているHTTP/1.0およびInternet
Engineering Task Force(IETF)に標準化提案さ
れているHTTP/1.1に準拠することが望ましい。HTTP/1.1ではキャ
ッシュの古さが24時間以内なら、ユーザに警告を行う必要なしと決められてい
る。このため、8時間以上24時間以下が、望ましい先行ヴァリデーション間隔
となる。また、サーバが置かれている組織の都合により、管理者が明示的に指定
した時間帯を先行ヴァリデーションに用いてもよい。こうすることで、企業の従
業員がサーバ10を利用しない時間帯を選んで先行プリフェッチを行うことが可
能となる。
【0110】
さらに、先行ヴァリデーションに際しては、先行ヴァリデーションを行うサー
バおよび当該サーバ付近のネットワークに相当の負荷が発生するため、クライア
ントからのサーバへの負荷が低い時間帯(オペレーティング・システムへの問合
わせにより、サーバの負荷を得ることが可能である)、またはネットワークの負
荷が低い時間帯(グループ内のサーバとの通信速度の変化を記録することにより
、ネットワークの負荷の概算を得ることができる)とを別の条件として用いると
よい。
【0111】
また、先行ヴァリデーションは、各サーバが外部サーバ13、13’、13”
、…に対して行うことができるが、複数のサーバが行うべき先行ヴァリデーショ
ンの対象となるURLを、1つのサーバに集めて、一括してヴァリデーションを
行った方が、1つのURLを何回もヴァリデーションする無駄が少なくなる。そ
こで、あるサーバから別のサーバに先行ヴァリデーションを依頼するヴァリデー
ション依頼メッセージ330を用いる。
【0112】
先行ヴァリデーションの処理を図11を用いて説明する。
【0113】
リーダのヴァリデーション管理部103は、上記の時間間隔に基づく考察によ
り、一定時間毎にヴァリデーション処理を起動する。またリーダ以外のヴァリデ
ーション管理部103は、同じく一定時間毎にヴァリデーション処理を起動する
。ヴァリデーション処理を開始すると、ステップ1101で自分がリーダである
かどうかを判定する。
【0114】
ステップ1101の判定がYの場合(1102)、ステップ1103でメンバ
から送られてくるヴァリデーション依頼を受信する。一定時間ヴァリデーション
依頼を受け付けたあと、ステップ1104に移り、ヴァリデーション処理を行う
。この処理の内容は、ヴァリデーション依頼メッセージ330中の各ヴァリデー
ション依頼メッセージ・エントリ331のURL333について、HTTPの「
HEAD」要求を用いて、最終更新日付を外部サーバ13、13’、13”、…
から入手することである。ヴァリデーション処理が終わると、続くステップ11
05で、ヴァリデーション依頼を受信した各サーバに、ヴァリデーションの結果
を返す。ヴァリデーションの結果はヴァリデーション依頼と同じヴァリデーショ
ン依頼メッセージ330であるが、各ヴァリデーション依頼メッセージ・エント
リ331の日付334はそれぞれ、ステップ1104で得た最新の最終更新日付
で置き換えてから送信する。
【0115】
一方ステップ1101の判定がNの場合(1107)、まずステップ1108
でヴァリデーション依頼メッセージ330を作成する。ヴァリデーション依頼メ
ッセージ330には、ヴァリデーションの対象となる情報(すなわちキャッシュ
表107に含まれる情報のうち、参照回数204がT回以上の情報(Tは定数)
)に関してそれぞれヴァリデーション依頼メッセ−ジ330には、ヴァリデーシ
ョンの対象となる情報(すなわちキャッシュ表107に含まれる情報のうち、参
照回数204がT回以上の情報(Tは定数))に関してそれぞれヴァリデーショ
ン依頼メッセージ・エントリ331を作成し、サーバID332に自分のサーバ
IDを、URL333に当該情報のURLを格納する。日付334には「空」を
格納する。続くステップ1108で作成したヴァリデーション依頼メッセージ3
30をリーダに対して送信する。続くステップ1109では、リーダがヴァリデ
ーション結果を返答として返すのを待って受け取る。ステップ1109ではヴァ
リデーション結果をもとにキャッシュ表107を更新する。すなわち、ヴァリデ
ーション結果であるヴァリデーション依頼メッセージ330に格納されたヴァリ
デーション依頼メッセージ・エントリ331のそれぞれについて、URL333
がキャッシュ表107のURL201に等しいキャッシュ表エントリ200を検
索し、もしそのようなキャッシュ表エントリ200があれば、参照回数204に
0を格納する。そして、当該キャッシュ表エントリ200の日付203を当該ヴ
ァリデーション依頼メッセージ・エントリ331の日付334と比較する。もし
日付334がより新しければ、キャッシュ表107中の情報は古いので、当該キ
ャッシュ表エントリ200を削除する。この際、グループのキャッシュ・ディレ
クトリ108を更新するために、サーバ10はグループのメンバに対してホスト
URLメッセージ370を送る。ホストURLメッセージ370のサーバID3
72はサーバ10のIDを、URL373は当該URL333を、フラグ374
は「存在しない」を保持する。
【0116】
なお、上記定数Tの設定に際しては、WWWのローカリティが低いことを考慮
することが重要である。例えば、我々の組織では、ユーザが要求したWWWの情
報のうち70%近くが、一回しか参照されないことがわかった。このため、例え
ばTを1にすると、キャッシュされた情報のうちヴァリデーションをすべき情報
を、効果的に絞りこむことができ、大量の情報をすべてヴァリデーションしなく
てもよい。
【0117】
以上の手順で、先行ヴァリデーションが行われ、キャッシュ表107の中の情
報は常にある程度以上の新鮮さが保証される。
【図面の簡単な説明】
【0118】
【図1】本発明の内部構成を示すブロック図。
【図2】データ構造を示す図。
【図3】メッセージの形式を説明する図。
【図4】サーバ初期化時の階層形成処理のフローチャート。
【図5】グループ参加要求処理のフローチャート。
【図6】階層維持メッセージ受信処理のフローチャート。
【図7】階層再構成処理のフローチャート。
【図8】キャッシュ価値回覧処理のフローチャート。
【図9】移動予告回覧処理のフローチャート。
【図10】破棄予告回覧処理のフローチャート。
【図11】ヴァリデーション処理のフローチャート。
【符号の説明】
【0119】
10、10’、10”、…:サーバ、11:クライアント、12:ネットワー
ク、13、13’、13”、…:外部サーバ、100:クライアント要求処理部
、101:キャッシュ管理部、102:サーバ管理部、103:ヴァリデーショ
ン管理部、104:キャッシュ価値評価部、105:キャッシュ移動破棄部、1
06:通信部、107:キャッシュ表、108:キャッシュ・ディレクトリ、1
09:サーバ状態表、110:グループ表。

【特許請求の範囲】
【請求項1】
ネットワークで互いに接続された1つ以上のサーバ機能を有する計算機からな
り、該計算機はそれぞれ一意な番号(ID)を持ち、それぞれ独立に動作または
停止することができ、該IDを用いて該計算機間の通信先を指定し、動作中の計
算機を1つ以上の第1のグループに分類して管理するサーバ分散管理方法であっ
て、
第1のグループに属する計算機のそれぞれに、該計算機の属するグループを構
成する計算機のIDを通知する処理と、
管理者が動作中の計算機の初期IDを1つ以上与えて第1の計算機を新たに起
動した際に、該計算機を第1のグループのいずれかに追加する処理と、
第1のグループのいずれかの台数が第1の定数を超えた場合に、第1のグルー
プを分類し直して、各グループを第1の定数以下の台数に再分類する処理と、
からなることを特徴とするサーバ分散管理方法。
【請求項2】
前記第1のグループのそれぞれがリーダを持ち、
前記追加する処理は、
前記初期IDに対応する1つ以上の計算機から、該計算機が保持する動作中の
計算機の表を前記第1の計算機に送信する処理と、
第1の計算機が該表中の第2の計算機を選択する処理と、
第1の計算機をグループに追加する要求を、第1の計算機が第2の計算機経由
で、第2の計算機の属するグループのリーダである第3の計算機へ送信する処理
と、
第3の計算機が第1の計算機を該グループへ追加する処理と
からなる請求項1に記載のサーバ分散管理方法。
【請求項3】
前記動作中の計算機が、前記第1のグループの相互の上下関係を決定し、もっ
て第1のグループが階層構造を形成する請求項1に記載のサーバ分散管理方法。
【請求項4】
前記再分類する処理は、
前記第1の定数を超えたグループのリーダが新たなグループを作成する処理と
、 該超えたグループに属する計算機の一部を該新たなグループに移動する処理
と、からなる請求項1に記載のサーバ分散管理方法。
【請求項5】
前記再分類する処理は、前記第1の定数を超えたグループのリーダが、該リー
ダの属するグループを構成する計算機の一部を前記階層構造で隣接するグループ
に移動する処理を含む請求項3に記載のサーバ分散管理方法。
【請求項6】
前記第1の計算機をグループに追加する要求を送信する処理は、
前記動作中の計算機の一部または全部との通信速度を計測する処理と、
第1の計算機との通信速度が大きい計算機が属するグループへ追加の要求を送
信する処理と、
からなる請求項2に記載のサーバ分散管理方法。
【請求項7】
ネットワークで互いに接続された1つ以上のサーバ機能を有する計算機からな
り、該計算機はそれぞれ一意な番号(ID)を持ち、それぞれ独立に動作または
停止することができ、該IDを用いて該計算機間の通信先を指定し、動作中の計
算機を1つ以上の第1のグループに分類して管理するサーバ分散管理方法であっ
て、
第1のグループに属する計算機のそれぞれに、該計算機の属するグループを構
成する計算機のIDを通知する処理と、
管理者が動作中の計算機の初期IDを1つ以上与えて第1の計算機を新たに起
動した際に、該計算機を第1のグループのいずれかに追加する処理と、
第1のグループのいずれかの台数が第1の定数を超えた場合に、第1のグルー
プを分類し直して、各グループを第1の定数以下の台数に再分類する処理と、
動作中の計算機のいずれかが停止または故障または通信が不能になった場合に
、該計算機の属するグループから該計算機を削除する処理と、
前記第1のグループのいずれかの台数が第2の定数未満となった場合に、第1
のグループに属する一部または全部の計算機を第2のグループに移動させる処理
と、
からなることを特徴とするサーバ分散管理方法。
【請求項8】
前記第2のグループとして、請求項3の階層構造で隣接するグループを用いる
請求項7に記載のサーバ分散管理方法。
【請求項9】
前記第1のグループに属する計算機が、第1のグループを構成する計算機のI
Dを収集する処理を行う請求項1または請求項7に記載のサーバ分散管理方法。
【請求項10】
前記第1のグループに属する計算機のそれぞれが、該計算機の属するするグルー
プを構成するすべての計算機のIDを保持する表を持つ請求項1または請求項7
に記載のサーバ分散管理方法。
【請求項11】
前記第1のグループの1つである第3のグループに属する計算機が、第3のグル
ープを構成する計算機の一部または全部に1つのデータを送信する場合に、第3
のグループを構成する計算機の間で該データを順に回覧する請求項1または請求
項7に記載のサーバ分散管理方法。
【請求項12】
前記第3のグループに属する計算機が、前記第3のグループを構成する1つ以上
の計算機からデータを収集する場合に、1つのメッセージを該1つ以上の計算機
の間で回覧し、回覧時に該1つ以上の計算機の各々が該メッセージにデータを付
加する請求項1または請求項7に記載のサーバ分散管理方法。
【請求項13】
ネットワークで互いに接続されて情報を利用するクライアントと、1つ以上の
情報を保持してクライアントにより指定された情報を提供する2つ以上のサーバ
とからなり、1つのサーバが保持する情報を別のサーバに移動させるサーバ分散
管理方法であって、
第1のサーバが保持する第1の情報を第2のサーバに移動させることを1つ以
上の第3のサーバに予告する移動予告メッセージを第3のサーバに送付する処理
と、
該メッセージを受け取った第3のサーバが、第3のサーバが持つ第2の情報を
第2のサーバに移動する動作を中止する処理と、
からなることを特徴とするサーバ分散管理方法。
【請求項14】
前記第3のサーバが、請求項1または請求項7に記載のグループに属する計算
機である請求項13に記載のサーバ分散管理方法。
【請求項15】
前記移動予告メッセージを請求項11に記載の順に回覧して第3のサーバに送
付する請求項13に記載のサーバ分散管理方法。
【請求項16】
前記移動予告メッセージを受け取った第3のサーバは、前記第2のサーバへの
情報の移動数が第1の定数以上である場合に第2の情報を第2のサーバに移動す
る動作を中止する請求項13に記載の情報サーバ分散管理方法。
【請求項17】
ネットワークで互いに接続された、情報を利用するクライアントと、1つ以上
の情報を保持し、クライアントからの依頼により指定された情報を提供する2つ
以上のサーバからなり、サーバが保持するデータを破棄することができるサーバ
分散管理方法であって、
第1のサーバが保持する第1の情報を破棄する際に、第1の情報のコピーを持
つ可能性がある1つ以上の第2のサーバに、該破棄を予告する破棄予告メッセー
ジを送付する処理と、
該破棄予告メッセージを受け取った第2のサーバが自身の保持する第1の情報
のコピーの破棄を中止する処理と、
からなるサーバ分散管理方法。
【請求項18】
前記第2のサーバが、請求項1または請求項7に記載のグループに属する計算
機である請求項17に記載のサーバ分散管理方法。
【請求項19】
前記破棄予告メッセージを、請求項11に記載の順に回覧して第2のサーバに送
付する請求項17に記載のサーバ分散管理方法。
【請求項20】
前記第2のサーバが第2の情報を破棄する際に、回覧された前記破棄予告メッ
セージに、該破棄の予告を追加して回覧する請求項17に記載のサーバ分散管理
方法。
【請求項21】
前記第2のサーバが、前記第1のサーバ及び第2のサーバのうち、第1の情報
またはそのコピーを持つ可能性があるサーバの数の予測である保持数を保持し、
前記破棄予告メッセージに記載の第1の情報またはそのコピーの破棄予告数を
得、
該保持数から該破棄予告数を減じた数が1以下であれば、第2のサーバが保持
する第1の情報またはそのコピーの破棄を中止する
請求項17に記載のサーバ分散管理方法。
【請求項22】
ネットワークで互いに接続された、情報を利用するクライアントと、1つ以上
の情報のコピーを保持し、クライアントからの依頼により指定された情報を提供
するサーバと、1つ以上の情報を保持し、サーバまたはクライアントに情報を提
供する2つ以上の外部サーバとからなり、サーバまたはクライアントが情報のコ
ピーが最新かどうかを問合わせるヴァリデーションに対して外部サーバが答える
サーバ分散管理方法であって、
サーバが保持する情報のうち、前回のヴァリデーションから1回以上参照され
た情報を、所定の時間毎に、サーバが外部サーバにヴァリデーションを行うこと
を特徴とするサーバ分散管理方法。
【請求項23】
前記所定の時間として、8時間以上24時間以下の時間を用いる請求項22に
記載のサーバ分散管理方法。
【請求項24】
前記所定の時間毎のヴァリデーションにかえて、前記情報を外部サーバから入
手してから8時間以上24時間以下で、かつサーバの負荷またはサーバ近辺のネ
ットワークの負荷が所定の値以下の時にヴァリデーションを行う請求項22に記
載のサーバ分散管理方法。
【請求項25】
前記所定の時間毎のヴァリデーションにかえて、前記情報を外部サーバから入
手してから8時間以上24時間以下で、かつ管理者が指定した時間帯の中でヴァ
リデーションを行う請求項22に記載の情報サーバ分散管理方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate


【公開番号】特開2008−165833(P2008−165833A)
【公開日】平成20年7月17日(2008.7.17)
【国際特許分類】
【出願番号】特願2008−70582(P2008−70582)
【出願日】平成20年3月19日(2008.3.19)
【分割の表示】特願平9−259591の分割
【原出願日】平成9年9月25日(1997.9.25)
【出願人】(000005108)株式会社日立製作所 (27,607)
【Fターム(参考)】