web-dev-qa-db-ja.com

いつ、どのようにトルネードを使用しますか?いつダメですか?

トルネードはノンブロッキングで非常に高速であり、多くの永続的なリクエストを簡単に処理できます。

しかし、それは特効薬ではなく、DjangoベースのサイトやTornadoを使用した他のサイトを盲目的に実行しただけでは、パフォーマンスは向上しません。

私はこれの包括的な説明を見つけることができなかったので、ここでそれを尋ねています:

  • トルネードはいつ使用する必要がありますか?
  • いつダメですか?
  • それを使用するとき、何を考慮する必要がありますか?
  • Tornadoを使用して非効率サイトを作成するにはどうすればよいですか?
  • サーバーとウェブフレームワークがあります。フレームワークはいつ使用する必要があり、いつ他のフレームワークに置き換えることができますか?
80

サーバーとウェブフレームワークがあります。フレームワークはいつ使用する必要があり、いつ他のフレームワークに置き換えることができますか?

この区別は少しぼやけています。静的ページを提供している場合にのみ、lighthttpdなどの高速サーバーのいずれかを使用します。それ以外の場合、ほとんどのサーバーは、Webアプリケーションを開発するためのさまざまな複雑さのフレームワークを提供します。 Tornadoは優れたWebフレームワークです。 Twistedはさらに能力が高く、優れたネットワークフレームワークと見なされています。多くのプロトコルをサポートしています。

TornadoとTwistedは、ノンブロッキングの非同期Web /ネットワークアプリケーション開発をサポートするフレームワークです。

トルネードはいつ使用する必要がありますか?いつダメですか?それを使用するとき、何を考慮する必要がありますか?

本質的に、非同期/非ブロッキングI/Oは、I/O集約型であり、計算集約型ではない場合に優れた動作をします。ほとんどのWeb /ネットワーキングアプリケーションは、このモデルに適しています。アプリケーションで特定の計算集約的なタスクを実行する必要がある場合、それをより適切に処理できる他のサービスに委任する必要があります。 Tornado/TwistedはWebサーバーの役割を果たし、Web要求に応答します。

Tornadoを使用して非効率的なサイトを作成するにはどうすればよいですか?

  1. 計算集約的なタスクを行う
  2. ブロック操作を導入する

しかし、それは特効薬ではなく、Djangoベースのサイトや他のサイトをTornadoで盲目的に実行しただけでは、パフォーマンスは向上しません。

パフォーマンスは通常、完全なWebアプリケーションアーキテクチャの特性です。アプリケーションが適切に設計されていない場合、ほとんどのWebフレームワークでパフォーマンスを低下させる可能性があります。キャッシング、負荷分散などについて考えてください。

Tornado and Twistedは、妥当なパフォーマンスを提供し、非常にパフォーマンスの高いWebアプリケーションの構築に適しています。ねじれた竜巻と竜巻の両方の証言をチェックして、それらの能力を確認できます。

45
pyfunc

古い質問に答えてすみませんが、この質問に出くわして、なぜこれ以上答えがないのか疑問に思いました。 Bart Jの質問に答えるには:

TornadoアプリケーションでRSSフィードを解析したいと思います。かなり計算負荷が高いと考えますか?

まあそれはあなたがやっている解析の種類とハードウェアに依存します:)長い時間は長い時間ですので、あなたのアプリが応答するのに0.5秒以上かかるなら、それは遅く見えるでしょう-あなたのアプリをプロファイルしてください。

高速システムの鍵は優れたアーキテクチャであり、使用しているフレームワーク(Twisted、Tornado、Apache + PHP)などの詳細ではありません。 Tornadoには非同期処理スタイルがあり、それが実際に私の意見では多くのことになります。 Node.js、Twisted、およびYawsは、軽量のアプローチと非同期処理スタイルのために非常にうまく拡張できる他の非同期Webサーバーの例です。

そう:

トルネードはいつ使用する必要がありますか?

いつダメですか?

Tornadoは、多数の接続の処理に適しています。着信クライアントに応答し、リクエストハンドラをディスパッチでき、結果コールバックがイベントキューにプッシュされるまでそのクライアントを考慮しないためです。そのため、多くのリクエストを処理するときに適切に拡張したい場合は、その特定の品質のためにTornadoを使用する必要があります。非同期処理により、機能の分離と非共有データアクセスが容易になります。 [〜#〜] rest [〜#〜] またはその他の Service Oriented Architecture sのようなステートレス設計では、これは非常にうまくいきます。また、固有のオーバーヘッドを持つスレッドまたはプロセスの生成に対処する必要がなく、ロック/ IPCのトラブルの一部を節約できます。

一方、バックエンドやデータストアがリクエストの処理に長い時間を要する場合、Tornadoは大きな違いをもたらしません。特に並行設計とWebサービスを行うのに役立ちます。コンカレントアーキテクチャにより、設計のスケーリングが容易になり、カップリングが低く抑えられます。少なくとも竜巻との私の経験です。

6
Morten Jensen