2017-10-12 17 views
1

私は結果として1文字列と2整数を返す多くのSidekiqジョブ(数千万)を処理しています。 Redisサーバーをホストしている/結果を格納している中央コンピュータと、この中央コンピュータからデータを取得して作業者として働く複数のコンピュータがあります。Sidekiq - 別のキューにプッシュするワーカーの副作用?

労働者の中に、私は処理のために必要なロジックを行い、その結果が呼び出された後、私はちょうど呼び出し:

Sidekiq::Client.push('class' => ResultsWorker, 'args' => [arg1, arg2, arg3]) 

と中央コンピュータ上で、私はちょうどこのキューをチェック別の労働者を持っており、結果をデータベースに格納する。

私はこのような "双方向コミュニケーション"のパターンがこのサイドキックコミュニティのどこにでも言及されているのを見ていません。だから私は疑問に思っていた、これには理由があるのだろうか?これにはいくつかの副作用がありますか?私は、結果を受け入れて保存するredis server compにシンプルなWebアプリケーションを置こうとしましたが、そのような小さなデータに対して、別のキューを持つ同じRedisサーバーを再利用しないのはなぜですか?

答えて

1

私はこのような "双方向コミュニケーション"のパターンがこのサイドキックコミュニティのどこにでも言及されているのを見ていません。

これは特別なことや珍しいことは何もないので、特別な言及や議論は必要ありません。ジョブは実際に他のジョブをエンキューできます。これは大きなアプリで左右に発生します。


あなたのケースでは、この具体的な状況のオーバーヘッドを測定する必要がありますが、最初の仕事から直接データベースに永続することは、はるかに高速になることが分かります(ネットワークリクエストなどの損失はありません)

+0

私はこのような関連する/同様のパターンを指すことができますか?一ヶ月前にSideKiqと協力し、人々が実際にどのようにそれを適用するかを学びたいと熱望しています。 – daremkd

+0

@daremkd: "パターン"はどういう意味ですか?ジョブをエンキューすることはパターンではありません:) –

+0

ジョブが終了したときに通常行われることについては、どのアプローチ(「アプローチ」はより良い言い方です:)))が最も一般的です。今のところ私は知っている)a)いくつかのAPIにHTTPリクエストを送るb)結果がargsのジョブをキューに送る – daremkd

関連する問題