| 原作者 | ブラッド・フィッツパトリック |
|---|---|
| 開発者 | ブライアン・エイカー、エリック・デイ |
| 初回リリース | 2009年1月8日 |
| 安定リリース | 1.1.19.1 / 2020年2月18日 |
| リポジトリ | github.com/gearman/gearmand/ |
| 書かれた | C++、C、M4、シェルスクリプト |
| オペレーティング·システム | Linux、Windows(サーバーなし)、OpenVMS |
| 利用可能 | 英語 |
| ライセンス | BSDライセンス |
| Webサイト | ギアマン |
Gearman は、適切なコンピュータ タスクを複数のコンピュータに分散するように設計されたオープン ソースのアプリケーションフレームワークです。これにより、大規模なタスクをより迅速に実行できます。場合によっては、速度よりも負荷分散が主な目的になることがあります。たとえば、Web サーバーは Gearman を使用して、最適化されていないタスクを別のコンピュータ (別のアーキテクチャで実行されている、別のオペレーティング システムを使用している、または特定の操作に適したコンピュータ言語がロードされている) に送信できます。
もともとはBrad FitzpatrickによってPerlで書かれました。Brian Akerと Eric Day がフレームワークをCで書き直しました。
ギアマンの仕組み

Gearman は、関係する各コンピュータに、クライアント、ジョブサーバー、またはワーカーの役割を割り当てます。ワーカー マシンには、ワーカー役割の複数のインスタンスを割り当てることができます。これにより、より強力なコンピュータが、特定のタスクのより多くの部分を完了できるようになります。タスクはクライアントで発生し、クライアントからジョブ サーバーに送信され、1 つ以上のワーカーで実行されます。完了したタスクの出力は、ジョブ サーバーを経由して、タスクが発生したクライアントに返されます。Gearman は概念的にMapReduceに関連しています。Gearman は、ワーカー ノードが作業を他のワーカーにマップできるようにすることで MapReduce を処理し、元のワーカーはリデューサーとして機能します。
Gearman は、クライアントから送信された作業の結合を実行します。2 つ以上のクライアントが同じ作業の完了を要求した場合、同じブロックが送信されているか、クライアントから送信された一意の値を使用して、作業が結合され、1 つのワーカーのみが使用されるようになります。これは、キャッシュ ヒットの失敗に共通する Thundering Herd 問題を回避するために特に行われます。
ジョブ サーバー (またはそのネットワーク接続) に障害が発生した場合に発生する損害を軽減するために、クライアントに複数のジョブ サーバーを割り当てることができます。割り当てられた最初のジョブ サーバーに障害が発生した場合、別のジョブ サーバーに透過的に置き換えることができます。
Gearman は、要求と応答を含むバイナリ パケットで構成されるプロトコルを実装します。このプロトコルは、Gearman 実装の 3 つの部分間で渡されるメッセージの構造を定義します。デフォルトでは、Gearman プロトコルはTCPポート 4730 を使用します。以前はポート 7003 で動作していましたが、これはAFSポート範囲と競合していたため、 IANAによって新しいポート (4730) が割り当てられました。
「ギアマン」という名前は、 「マネージャー」のアナグラムとして選ばれました。「ギアマンは、実行すべき仕事を派遣しますが、それ自体は何も有用なことをしません。」[1]
特徴
- ジョブの再試行
- ラウンドロビンスケジュール
- 合体
- 永続ストレージ経由:
- libmemcached
- libdrizzle
- SQLite
- マイグレーション
- ポストグレ
- 東京キャビネット
- Redis (未リリース - 現在開発中)
- MongoDB (未リリース - 現在開発中)
実装
- Gearmand、バージョン 1.1.12 まで
- Gearmand、バージョン 1.1.13 以降
- java-gearman-サービス
- ギアマン::サーバー
- Tclギアマン
クライアント
現在、C、Perl、Node.js、Python、PHP、Ruby、Java、.NET、JMS、MySQL、 PostgreSQL、Drizzle用のクライアントライブラリがあります。[2]
外部リンク
- http://danga.com/words/2007_06_usenix/usenix.pdf
- http://gearman.org/documentation/
- http://gearman.org/download/
- http://lists.danga.com/pipermail/gearman/2008-April/000076.html
- https://web.archive.org/web/20081209012837/http://krow.livejournal.com/628025.html
- Symfony2 プロジェクト用の GearmanBundle
引用
- ^ “Gearman [Gearman Job Server]”.
- ^ Gearman ページのクライアントおよびワーカー API
