next up previous
Next: 分散並列実行の実装 Up: 実装 Previous: 実装言語

メタサーバ の実装

メタサーバ は、ひとつのプロセスとして実装している。 クライアントからリクエストを受けとると、新たにthread を作成して そのリクエストを処理する。 他のメタサーバ からの通信に対しても、同様にthread を作成して 対応している。 メタサーバ 間の通信では メタサーバ 内の情報が変化する場合があるが、 メモリ空間を共有しているため、他の動作中のthread にも自動的に 情報が伝搬するので、実装が容易である。

例として、クライアントから受けたリクエストを実行できるNinf サーバ を 知らなかった場合を考えてみる。この場合、このリクエストを処理する thread は、他のメタサーバ に問い合わせを発行する。 この問い合わせの返答は、他のthread が受けとるので、 元のthread は、適当な間隔をあけてNinf サーバ の入った構造体を polling するだけでよい。 返答を受けとったthread は、構造体に書き込む処理だけを行なう。 このように、構造体を経由したthread 間の通信が行なえるため 実装が非常に容易である。



Hidemoto Nakada
Tue Feb 20 18:17:47 JST 1996