12

書き込み要求の約 50% で、最終的に複数のデータ ストアにデータをプッシュし、それらのデータ ストアに多数のレコードを挿入および更新する Web アプリケーションを開発しています。応答時間を改善するために、このようなリクエストをバックグラウンドで非同期に処理したいと考えています。

私たちの Web アプリケーションは Ruby on Rails で書かれています。

私が傾倒している 2 つのソリューションは、Resque と Gearman です。

Resque: 詳細はこちら: http://github.com/blog/542-introducing-resque Resque は Ruby に非常に適しているようで、特にバックグラウンド ジョブ処理に適しています。「バックグラウンド ジョブは、実行に応答する任意の Ruby クラスまたはモジュールにすることができます。既存のクラスをバックグラウンド ジョブに簡単に変換したり、特に作業を行うための新しいクラスを作成したりできます。」

Gearman: 非同期処理のバックグラウンド ジョブ専用というわけではありませんが、それは間違いなくできることです。どうやらより堅牢なようです。Gearman のもう 1 つの利点は、クライアント コードが Ruby で記述されていても、ワーカー コードが PHP で記述されている可能性があることです。現時点では完全に Ruby on Rails アプリですが、将来、当面の仕事に応じて PHP やその他の何かを使用する可能性があるかどうかはわかりません。

あなたは何をお勧めします?どちらかの経験はありますか?2 つのうちどちらかを選択する際に、実際の制作上のどのような課題に留意する必要がありますか? そして、ここでリンゴとリンゴを比較していますか?

4

1 に答える 1

2

非同期のワークロード分散を提供できる分散分岐メカニズムを探していたときに、Gearman を使用した経験があります。クラスタ環境での処理。

これは、非同期処理が 2 台のマシン (各マシンに 2 人のワーカー = 4 人のワーカー) にディスパッチされた「シミュレートされた」ケースで機能していると言えます。実際のシナリオではありません(それがあなたに言うことは何でも)。「シミュレーション」が有用な情報を提供すると、実際のケースのシナリオが実装されます。

選択するメカニズムは、ワークロードの分散における 1 つの要因にすぎないため、並行して動作する分散された「ワーカー」がデータストアへの書き込みを開始するときに、データが破損したり無効になったりしないようにしてください。

私が行った「シミュレーション」アプローチを採用し、どちらを使用するかを決定する前にテストを行うことをお勧めします。

よろしく、

于 2010-03-06T11:07:57.653 に答える