2012-11-08 11 views
5

私たちのウェブサイトはリアルタイム更新の必要性を開発しており、さまざまな彗星/ロングポーリングソリューションを検討しています。調査の結果、私たちはnginxを4つの竜巻インスタンス(Amazon EC2でホストされている)へのリバースプロキシとして解決しました。現在、従来のLAMPスタックを使用しており、PHPでかなりの量のコードを書いています。私たちは、このソリューションをより良くサポートするために、PHPコードをPythonに変換していきたいと考えています。ここに私の質問です:nginxのための1つを:クアッドコアプロセッサを想定しApache/PHPからNginx/Tornado/Python

  1. 、nginxのは4つの竜巻インスタンスと同じサーバー上で実行されているため、それ大丈夫ですか、であることは、2台の別々のサーバーを実行することをお勧めします4つのトルネードプロセスに1つ

  2. Nginxの前でHAProxyを使用する利点はありますか? Nginxは単独で負荷分散をうまく処理しないのですか?

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

  4. アプリケーションコードの大部分は、リアルタイムの更新には関係しません。このコードにはいくつかのデータベースクエリとファイルシステムの読み込みが含まれているため、非ブロック型アプリケーションサーバーには適していません。私の研究では、ブロッキングの問題が複数のTornadoインスタンスを持つだけで緩和されているのに対し、コールをブロックするには別のアプリケーションサーバー(Gunicorn/Django/Flaskなど)を使用することをお勧めします。ノンブロッキングサーバーを使用しているときにブロッキングコールを処理する最善の方法は何ですか?

  5. 私たちのコードをPHPからPythonに変換する作業は時間がかかるでしょう。 Nginxの背後にあるApache/PHPとTornadoを同時に実行することは受け入れられますか?それとも、言語(Gornicorn/Django/flaskまたはトルネード単独の竜巻か)に固執すべきですか?

答えて

6

私はポイントでポイントを行くよ:

  1. はい。 1台のサーバーにtornadoとnginxを実行するのは大丈夫です。竜巻のリバースプロキシとしてnginxを使用することもできます。

  2. 複数のサーバーインスタンスがある場合、Haproxyは利点をもたらします。また、Webソケットを直接竜巻にプロキシすることもできます。

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

  4. また、竜巻のブロック部分と非ブロック部分を書き込むことができます。また、トルネードにはdbクエリ用の非ブロックライブラリがいくつかあります。あなたがここでdjangoの力を必要としているかどうかは分かりません。

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

実際に質問は非常に基本的です - 回答にも。あなたが望むならば、私はどんな点であれ詳しく説明することができます。

+0

迅速な対応をありがとう! – xxjbmxx

+1

)私たちは実際にリバースプロキシとしてnginxを使用する予定です。 nginxプロセスが、同じサーバー上で実行されている場合、tornodoインスタンスの1つを圧縮するのに十分なリソースを消費することが可能であるかどうか不思議でした。 4。)どのPythonフレームワークをブロック呼び出し(djangoが不要な場合)のためにお勧めですか? – xxjbmxx

+1

それは絶対に大丈夫です - あなたはnginx +竜巻とのトラブルを1つのサーバー上で得ることはありません。コールをブロックする単純なタスクについては、Flaskを見てください。優れた管理者とシンプルなデータベーススキーマ操作ツールが必要な場合は、djangoを入手してください。 –

関連する問題