sql >> データベース >  >> NoSQL >> Redis

delayd_jobs vs resque vsbeanstalkd?

    私のプロジェクトでは、rails2と3のcollectiveidea / delayd_jobで非常に快適に感じるでしょう。beanstalkdはわかりませんが、すぐに試してみます:-)。resqueドキュメントの提案に従いました。報告します。

    Resque vs DelayedJob
    

    ResqueはDelayedJobとどのように比較されますか?また、なぜどちらかを選択するのですか?

    • Resqueは複数のキューをサポートします
    • DelayedJobは、よりきめ細かい優先順位をサポートします
    • Resqueワーカーは、メモリリーク/膨張に対して回復力があります
    • DelayedJobワーカーは非常にシンプルで、簡単に変更できます
    • ResqueにはRedisが必要です
    • DelayedJobにはActiveRecordが必要です
    • Resqueは、JSON可能なRubyオブジェクトのみを引数としてキューに配置できます
    • DelayedJobは、任意のRubyオブジェクトを引数としてキューに配置できます
    • Resqueには、何が起こっているかを監視するためのSinatraアプリが含まれています
    • インターフェースを追加したい場合は、Railsアプリ内からDelayedJobを照会できます

    Rails開発を行っている場合は、すでにデータベースとActiveRecordがあります。 DelayedJobはセットアップが非常に簡単で、うまく機能します。 GitHubはこれを何ヶ月も使用して、約2億件のジョブを処理しました。

    次の場合にResqueを選択します:

    • 複数のキューが必要です
    • 数値の優先順位は気にしない/嫌いです
    • すべてのRubyオブジェクトを永続化する必要はありません
    • 潜在的に巨大なキューがあります
    • 何が起こっているのかを知りたい
    • あなたは多くの失敗/混乱を期待しています
    • Redisをセットアップできます
    • RAMが不足していません

    次の場合にDelayedJobを選択します:

    • 数値の優先順位が好きです
    • あなたは毎日膨大な量の仕事をしていません
    • キューは小さくて機敏です
    • 多くの失敗/混乱はありません
    • キューに何かを簡単に投げたい
    • Redisをセットアップしたくない

    次の場合にBeanstalkdを選択します:

    • 数値の優先順位が好きです
    • 非常に高速なキューが必要です
    • RAMを無駄にしたくない
    • 多数の仕事に従事したい
    • 引数としてキューにあるJSON可能なRubyオブジェクトで問題ありません
    • 複数のキューが必要です

    Resqueが「より良い」DelayedJobになることは決してないので、アプリに最適なツールを選択するようにしてください。

    キューイングバックエンド速度の優れた比較:

                     enqueue                work
    -------------------------------------------------
    delayed job |   200 jobs/sec     120 jobs/sec
    resque      |  3800 jobs/sec     300 jobs/sec
    rabbitmq    |  2500 jobs/sec    1300 jobs/sec
    beanstalk   |  9000 jobs/sec    5200 jobs/sec
    

    良い一日を!

    P.S. resque、Delayed Job(改訂版)、Beanstakldに関するRailsCastがあります。ご覧ください!

    P.P.S.私のお気に入りのchoicheはSidekiq(非常にシンプル、高速、シンプルな仕事に効率的)です。比較のためにこのページをご覧ください。



    1. データベースとしてのNoSQL(MongoDB)とLucene(またはSolr)

    2. 2つのリストの違いを再確認しますか?

    3. mongodbTTLがドキュメントを削除しない

    4. ClusterControlを使用したMongoDB4.0の監視と運用管理