サーバ構造
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/04/24 23:41 UTC 版)
「BOINCクライアント-サーバ技術」の記事における「サーバ構造」の解説
BOINCシステムの主要部分はバックエンドサーバである。このサーバは1台のマシンでも複数台のマシンでも動作するので、BOINCは任意の規模のプロジェクトにも簡単に対応することができる。BOINCサーバは、Linuxベースのコンピュータ上で動作し、ウェブシステムとデータベースシステムにApache、PHP、MySQLを使用する。 科学計算は、参加者のコンピュータ上で実行される。ユーザーのクライアントから科学研究者のデータベースにアップロードされた後、バックエンドサーバが結果を検証し、分析する。検証作業には、すべてのタスクを複数の参加者のコンピュータで実行し、結果を比較することが含まれる。 BOINCサーバは、次の機能も提供する。 同種の冗長性(同じプラットフォームのコンピューターにのみワークユニットを送信する。例:Windows XP SP2のみ) ワークユニット・トリッキング(ワークユニットが完了する前にサーバに情報を送信する) ローカリティ・スケジューリング(必要なファイルをすでに持っているコンピュータにワークユニットを送信し、オンデマンドで作業を作成する) ホストのパラメータに基づいた作業配布(たとえば、512MBのRAMを必要とするワークユニットは、少なくともその量のRAMを持つホストにのみ送信される) サーバはC++で記述された2つのCGIプログラムと(通常は)5つのデーモンで構成されている。クライアントが実行する計算をワークユニットと呼ぶ。結果はワークユニットのインスタンスを記述する(それが完了していなくても)。プロジェクトでは明示的に結果を作成することはなく、サーバがワークユニットからそれらを自動的に作成する。 スケジューラー(scheduler)CGIプログラムは、クライアントからの要求を処理し、完了した結果を受け取り、新しい作業を計算機に送信する。スケジューラーは、データベースから直接に利用可能な結果を取得するわけではない。その代わりに、フィーダー(feeder)デーモンがデータベースからタスクをロードして共有メモリブロックに保持し、スケジューラーがそれを読み取る。スケジューラーがそれらの結果をクライアントに送信した後、フィーダーは、共有メモリブロックの空の「スロット」を定期的に埋める。 ワークユニットのすべての結果が完了して返されると、バリデーター(validator)はそれをチェックする。一般的な方法の一つは、結果を相互に比較することである。バリデーターは、結果どうしのファジー比較を行うカスタムプロジェクトコードを持つことも、ビット単位で比較することもできる。バリデーターは、少なくとも一部の結果が有効であると判断した場合、ワークユニットと有効な結果にマークを付け、正当な結果を返したユーザーにはクレジットが付与され、「正規の結果」が選択される[誰によって?]。バリデーターがどの結果が有効なのか判断できない場合や、すべての結果を無効であると宣言した場合は、新しい結果を生成して、バリデーターがどの結果が有効なのか判断できるようになるまで、このサイクルを繰り返すことができる。 次に、アシミレーター(assimilator)デーモンが、プロジェクト固有のコードを使用して、正規の結果を処理する。たとえば、ファイルを解析してデータベースに情報を保存するプロジェクトもあれば、ファイルを別の場所にコピーするだけのプロジェクトもある。また、アシミレーターは、返されたデータに基づいて、より多くのワークユニットを生成することもできる。 ファイル_デリーター(file_deleter)デーモンは、アシミレーターが処理した後の出力ファイルを削除したり、不要になった入力ファイルを削除する。 トランジショナー(transitioner)デーモンは、ワークユニットと結果の状態遷移を処理する。また、ワークユニットが最初に作成されたときや、さらに必要なときに(たとえば、結果が無効であることが判明した場合)、ワークユニットから結果を生成する。
※この「サーバ構造」の解説は、「BOINCクライアント-サーバ技術」の解説の一部です。
「サーバ構造」を含む「BOINCクライアント-サーバ技術」の記事については、「BOINCクライアント-サーバ技術」の概要を参照ください。
- サーバ構造のページへのリンク