同期 http リクエスト/レスポンス モデルを非同期キュー ベースのモデルに接続する良い方法は何ですか?
ユーザーの HTTP 要求が来ると、キュー (この場合はbeanstalkd ) に送られる作業要求が生成されます。ワーカーの 1 人がリクエストを受け取り、作業を行い、レスポンスを準備します。
キュー モデルはリクエスト/レスポンスではありません。レスポンスではなく、リクエストのみがあります。問題は、応答を HTTP の世界に戻し、ユーザーに戻すにはどうすればよいかということです。
アイデア:
Beanstalkd は、軽量のトピックまたはキュー (チューブと呼ばれます) をサポートしています。リクエストごとにチューブを作成し、ワーカーにそのチューブでメッセージを作成させ、http プロセスをチューブに置いて応答を待機させることができます。これは特に好きではありません。Apache プロセスがメモリを占有しているからです。
http クライアントに応答をポーリングさせます。ユーザーの最初の HTTP 要求は、キューでジョブを開始し、すぐに戻ります。クライアント (ユーザーのブラウザー) は定期的に応答をポーリングします。バックエンドでは、ワーカーはその応答を memcached に置き、nginx を memcached に接続して、ポーリングが軽量になるようにします。
コメットを使用します。2 番目のオプションに似ていますが、ポーリングを回避するためにより洗練された http 通信を使用します。
簡単でよく知っているので、私は2に傾いています(私はまだコメットを使用していません)。おそらく、私が思いもよらなかった、はるかに優れた明白なモデルもあると思います。どう思いますか?