Heroku に REST サーバーがあります。REST サービス用の N-dyno とワーカー用の N-dyno があります。
基本的に、私はいくつかの長期にわたる休息リクエストを持っています。これらが入ってきたら、ワーカーの 1 つに委任し、クライアントにリダイレクトを与えて操作をポーリングし、最終的に操作の結果を返したいと考えています。
これには、RedisToGo の JEDIS/REDIS を使用します。私が知る限り、これを行うには2つの方法があります。
- PUB/SUB 機能を使用できます。パブリッシャーに作業結果の一意の ID を作成してもらい、これらをリダイレクト URI で REST クライアントに返します。
- 基本的には同じですが、PUB/SUB の代わりに RPUSH/BLPOP を使用します。
1位のメリットがよくわかりません。たとえば、LongMathOperation というタスクがある場合、このリストを単純に作成できるように思えます。リスト要素は、算術演算の引数と、結果を配置する場所として REST サーバーによって生成された UUID を持つ JSON オブジェクトです。次に、すべてのワーカー dyno が BLPOP 呼び出しをブロックするだけで、最初の dyno がジョブを取得して処理し、UUID のキーを使用して結果を REDIS に入れます。
わかる?だから私の質問は、「PUB/SUB を使用する方がこれより優れているのはなぜですか?」ということです。PUB/SUB は、私が見逃していることをここでテーブルにもたらしますか?
ありがとう!