5

当社のウェブサイトはリアルタイムの更新の必要性を開発しており、さまざまな彗星/ロングポーリングソリューションを検討しています。調査の結果、4つのトルネードインスタンス(Amazon EC2でホストされている)へのリバースプロキシとしてnginxを決定しました。現在、従来のLAMPスタックを使用しており、PHPでかなりの量のコードを記述しています。このソリューションをより適切にサポートするために、PHPコードをPythonに変換する用意があります。これが私の質問です:

  1. クアッドコアプロセッサを想定して、nginxを4つのトルネードインスタンスと同じサーバーで実行しても問題ありませんか、それとも2つの別々のサーバー(nginx用と4つのトルネードプロセス用)を実行することをお勧めしますか?

  2. Nginxの前でHAProxyを使用する利点はありますか?Nginxはそれ自体で負荷分散をうまく処理しませんか?

  3. 私の調査によると、Nginxには優れたURLリダイレクトモジュールがないようです。リダイレクトにRedisを使用することをお勧めしますか?もしそうなら、RedisはNginxの前にあるべきですか、それとも後ろにあるべきですか?

  4. アプリケーションコードの大部分は、リアルタイムの更新には関与しません。このコードには、いくつかのデータベースクエリとファイルシステムの読み取りが含まれているため、非ブロッキングアプリサーバーには明らかに適していません。私の調査から、ブロッキングの問題は複数のTornadoインスタンスを使用するだけで軽減されることがわかりましたが、他の人は通話をブロックするために別のアプリサーバー(Gunicorn / Django / Flaskなど)を使用することを提案しています。非ブロッキングサーバーを使用するときにブロッキング呼び出しを処理するための最良の方法は何ですか?

  5. コードをPHPからPythonに変換するには、時間のかかるプロセスになります。Nginxの背後でApache/PHPとTornadoを同時に実行することは許容されますか、それとも言語(gunicorn / django / flaskを使用するtornadoまたはtornado自体)に固執する必要がありますか?

4

1 に答える 1

6

私はポイントごとに行きます:

  1. はい。1台のサーバーでtornadoとnginxを実行しても問題ありません。nginxを竜巻のリバースプロキシとして使用することもできます。

  2. 複数のサーバーインスタンスがある場合、Haproxyはあなたに利益をもたらします。また、WebSocketをトルネードに直接プロキシすることもできます。

  3. 実際、nginxは問題なくリダイレ​​クトに使用できます。リダイレクトにredisを使用することについて聞いたことがありません-それはキー/値のストレージです...あなたは何か他のことを意味しているのでしょうか?

  4. 繰り返しになりますが、ブロッキング部分はdjangoで、非ブロッキング部分はtornadoで記述できます。また、tornadoには、dbクエリ用の非ブロッキングライブラリがいくつかあります。ここにdjangoのパワーが必要かどうかはわかりません。

  5. はい、nginxの背後でApacheを実行しても問題ありません。多くのプロジェクトでは、静的ファイルを提供するためにapacheの前でnginxを使用しています。

実際、質問は非常に基本的です-答えも。よろしければ、どの点についても詳しく説明させていただきます。

于 2012-11-09T08:53:13.787 に答える