Unicorn(2人のワーカー)とnginxで実行するRailsアプリがあります。単一のリクエストの処理に1〜20秒かかるサードパーティのAPIを統合したいと考えています。そのサービスにプロキシする新しいコントローラーを作成するだけでは、アプリ全体が影響を受けます。これは、APIを介してそのサービスにリクエストを送信するのに2人しかかからず、残りのユーザーは残りのユーザーにアクセスできないためです。アプリ。
私たちは2つの解決策を考えています。
- サードパーティAPIへのすべてのリクエストを実行する別のnode.jsサーバーを作成します。この場合、認証/承認にRailsのみを使用し、X-Accel-Redirectヘッダーを使用してnginx経由でノードにリクエストをリダイレクトします(ここで説明されているようにhttp://blog.bitbucket.org/2012/08/24/分離サービス/)
- ユニコーンをシンまたはレインボーに置き換えてください!そして、Railsアプリでプロキシを維持します。これにより、おそらく、より多くの同時接続を処理できるようになります。
どの解決策が良いでしょうか?または、他に何かできることはありますか。
個人的には、ノードの偶数ループがここでの作業に適していると感じています。オプション2では、まだ多くのスレッドをブロックしてHTTPリクエストが完了するのを待っているためです。オプション1では、遅いのを待っている間に、より多くのリクエストを実行できます。終了するもの。
ありがとう!