演習3 米澤研究室 発表2 山崎孝裕 主な内容 分散動的サーバモデル(復習) 掲示板システムの問題点と仮定 掲示板システムの大まかな動き(細かいエ ラー処理は考慮しない) 分散動的サーバモデル 従来のClient/Serverモデルにおいて特定のサーバ がやっていた処理の一部を、P2Pオーバレイ上の 複数のノードに処理をさせる。 P2P上に構築された分散的なClient/Serverモデル ということができる。 →目的は負荷の分散。高い秘匿性ではない。 P2Pノードがサーバの肩代わりをするため、ノード の動的参加・脱退を意識する必要がある。 掲示板システム(1) ユーザがスレッドを立て、スレッドにレスを書 き込むという形の掲示板を想定する。 スレッドの管理は動的に決定され、あるノー ドがそのスレッドへの書き込み・読み込みを 管理するサーバとなる。 どのスレッドをどのノードが現在管理してい るかの情報は、中央管理サーバが持ってい る。 掲示板システム(2) 中央管理サーバが落ちることはない、と仮定する。 実際に信頼性の高いシステムを構築する場合は、中央 管理サーバを多重化するなどの工夫が必要となる。 負荷分散のため、中央管理サーバを分散処理させるこ とも考えられうる。 スレッドは特定のノードが所有する、というわけで はない。 スレッドを立てたノードが落ちても、常にスレッドへの書 き込み・読み込みはできる。 問題点と仮定(1) 疑問 「P2Pオーバレイから全てのノードが脱退した場合、ス レッドデータを誰が持つのか?」 「次にP2Pオーバレイに参加したノードは最新のデータ をどこからとってくるのか?」 常に生きていることを仮定した中央データサーバ にデータを置いておくことで一応の解決はできる (?) 次に参加するノードは中央データサーバからデー タをもらってきて、そのデータの管理者となる。 問題点と仮定(2) そもそも、参加ノードがゼロになってしまうことがあ るような参加ノード数が極端に少ないネットワーク ならば、分散させる必要はない。 →従来のClient/Serverモデルでも十分。 上記のような問題がおきるのは特殊ケースとして 別に扱い、通常時は起きないものと仮定する。 分散動的サーバとして動くノードの数は、クライア ントとしてのみ動くノードの数に比べて十分に小さ いものとする。 掲示板の規模の例 1レス = 500Byte 1スレッド = 300レス = 150KB 1掲示板 = 1,000スレッド = 150MB 100,000レス/day ≒ 1レス/sec 数十~数百スレッド/day ※ 2ちゃんねるの大き目の板を参考に推定 http://www6.big.or.jp/~beyond/bbsnews/ 分散サーバと分散サーバ群 中央管理サーバは、新規に分散サーバ郡が必要 だと判断したとき、現在分散サーバでないN個の ノードを分散サーバに任命する。このN個の分散 サーバの集まりを分散サーバ群と呼ぶ。 分散サーバ群の各分散サーバには1からの優先 度が順に割り振られている。 優先度1の分散サーバは分散メインサーバと呼ば れ、スレッドへの管理・変更を行う。 優先度が2~Nの分散サーバは分散サブサーバと 呼ばれ、データのコピーを常に持つ。 保持データ 中央管理サーバ スレッドがどの分散サーバ群に属するかの表を持つ。 各分散サーバ群の分散サーバのIPアドレスを持つ。 分散サーバ 同じ分散サーバ群に属するノードの優先度とIPアドレス を保持している。 分散サーバ群に割り当てられたスレッドデータを、全て の各分散サーバが持つ システムの動き 分散サーバの動的指定 メインサーバの引き継ぎ サブサーバの補充 スレッドとレスの管理 スレッドの参照 レスの書き込み スレッドの作成 スケーラビリティの確保 分散サーバ群の分割と統合 メインサーバの引き継ぎ 分散サーバはサーバ群に属する他のサーバと一 定間隔で互いの存在を確認しあう。 メインサーバの存在が確認できなかった場合、サ ブサーバの優先度が繰り上げられ、優先度が2で あったサブサーバが優先度1となりメインサーバに 昇格する。 サブサーバの存在が確認できなかった場合、その サーバより小さい優先度を持つサブサーバの優 先度が繰り上げられる。 サブサーバの補充 分散サーバ群のサーバ数がノードの脱退に よってNより小さくなった場合、メインサーバ は中央管理サーバに新たにサブサーバを 要求し、割り当てられたサブサーバを分散 サーバ群に組み込み、優先度を割りあてる。 新たに分散サーバに割り当てられたノード は、スレッドデータを他の分散サーバからも らいコピーを作成する。 スレッドの参照 スレッドがどの分散サーバ群に属するかの 情報は中央管理サーバが持っている。 クライアントはスレッドの分散サーバ群を中 央管理サーバに問い合わせてノードアドレ スを取得する。 分散サーバ群の任意のノードにスレッド データを要求することで、データを取得でき る。 レスの書き込み スレッドの属する分散サーバ群のメインサーバに 対して、レス書き込み要求を送信する。 メインサーバは優先度2のサブサーバに対して書 き込みデータを送信し、受信したサブサーバは次 の優先度のサブサーバにデータを送信する。 最後に優先度Nのサブサーバは、メインサーバに データを送信し、メインサーバは書き込みデータが 正しいかどうかをチェックする。このチェックが終 わった時点で正式に書き込みが完了したこととな る。 スレッドの作成 クライアントは、スレッド作成要求を中央管 理サーバに送信する。 中央管理サーバは新規スレッドの属する分 散サーバ群を決定し、そのサーバ群にス レッド作成命令を送信する。 新規スレッドの属する分散サーバ群が新規 のサーバ群である場合は、先にサーバ群を 作成する。 分散サーバ群の分割と統合 一つの分散サーバ群への負荷が大きい場 合、サーバ群の分割を行う。 中央管理サーバが分散サーバになってい ないN個のノードを選出する。 これともとのサーバ群のサーバとを半々に 混ぜ、新規サーバに分割されたスレッド データをコピーする。 来週の予定 各処理の状態遷移図 各処理の各状態でノードがダウンしたときな どの細かいエラー処理 その他
© Copyright 2024 ExpyDoc