ホームページ >バックエンド開発 >PHPチュートリアル >Gearman を使用して PHP アプリケーションのワークロードを分散する
Gearman
を使用して PHP アプリケーションのワークロードを分散する
http://www.ibm.com/developerworks/cn/opensource/os-php-gearman/
PHP からの Gearman の使用
PHP からの Gearman の使用 前の例と同様、唯一の違いは、プロデューサーとコンシューマーが PHP 内で作成されることです。各コンシューマーの作業は、1 つ以上の PHP 関数内にカプセル化されます。
リスト 1 は、PHP で作成された Gearman ワーカーを示しています。このコードをworker.phpというファイルに保存します。
リスト 1. Worker.php
$worker= new GearmanWorker();
$worker->addServer();
$worker->addFunction("title", "title_function");
while ($worker->work());
function title_function($job)
{
Return ucwords(strto lower($job->workload()));
}
?>
リスト 2 は、PHP で書かれたコードを示しています。プロデューサーとかクライアントとか。このコードを client.php というファイルに保存します。
リスト 2. Client.php
$client= new GearmanClient();
$client->addServer();
print $client->do("title", "All The World's a sTagE");
print "n";
?>
これで、次のコマンド ラインを使用してクライアントとワーカーを接続できるようになります:
$ php worker.php &
$ php client.php
All The World's A Stage
$ jobs
[3]+ php worker.php の実行 &
ワーカー アプリケーションは引き続き実行され、別のクライアントにサービスを提供できるようになります。
----------------------------------------------------- ---
トップに戻る
Gearman の高度な機能
Gearman は Web アプリケーション内のさまざまな場所で使用できます。サイトのエクスペリエンスや応答性に影響を与えることなく、大量のデータのインポート、多数の電子メールの送信、ビデオ ファイルのエンコード、データのマイニング、中央ログ機能の構築を行うことができます。データは並行して処理できます。また、Gearman プロトコルは言語やプラットフォームに依存しないため、ソリューションにプログラミング言語を混在させることができます。たとえば、プロデューサーを PHP で作成し、ワーカーを C、Ruby、または Gearman ライブラリをサポートするその他の言語で作成できます。
クライアントとワーカーを接続する Gearman ネットワークは、想像できるほぼすべての構造を使用できます。多くの構成には、複数のエージェントを実行し、ワーカーを多くのマシンに分散する機能があります。負荷分散は暗黙的です。動作可能なすべての利用可能なワーカー (ワーカー ホストごとに複数のワーカー) がキューからジョブをプルします。ジョブは同期または非同期で実行でき、優先順位を付けることができます。
Gearman の最新バージョンでは、システム機能が拡張され、永続的なジョブ キューと、HTTP 経由で作業リクエストを送信するための新しいプロトコルが追加されました。前者の場合、Gearman ワーク キューはメモリ内に保持され、リレーショナル データベースにバックアップされます。こうすることで、Gearman デーモンが失敗した場合でも、再起動後にワーク キューを再作成できます。最近のもう 1 つの改善により、memcached クラスターを介してキューの耐久性が追加されました。 Memcached ストレージもメモリに依存しますが、単一障害点を避けるために複数のマシンに分散されています。
Gearman はまだ始まったばかりですが、非常に強力な作品配信システムです。 Gearman の著者である Eric Day 氏によると、Yahoo! は Gearman を使用して 60 台以上のサーバーで 1 日あたり 600 万件のジョブを処理しています。ニュース アグリゲーター Digg も、1 日あたり 400,000 件のジョブを処理できる同様の規模の Gearman ネットワークを構築しました。 Gearman の優れた例は、オープンソースの検索エンジン、Narada にあります (「参考文献」を参照)。
Gearman の将来のバージョンでは、統計情報の収集と報告、高度な監視の提供、ジョブ結果のキャッシュなどが行われる予定です。 Gearman プロジェクトをフォローするには、Google グループに登録するか、Freenode の IRC チャンネル #gearman にアクセスしてください。