87

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

しかし、これは特効薬ではないと思います。Django ベースのサイトやその他のサイトをやみくもに Tornado で実行しても、パフォーマンスが向上することはありません。

これについての包括的な説明が見つからなかったので、ここで質問します。

  • トルネードはいつ使用する必要がありますか?
  • 役に立たない時は?
  • それを使用するとき、何を考慮に入れるべきですか?
  • Tornado を使用して非効率なサイトを作成するにはどうすればよいですか?
  • サーバーと Web フレームワークがあります。いつフレームワークを使用する必要があり、いつ他のフレームワークに置き換えることができますか?
4

2 に答える 2

50

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

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

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

トルネードはいつ使用する必要がありますか? 役に立たない時は?それを使用するとき、何を考慮に入れるべきですか?

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

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

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

しかし、これは特効薬ではないと思います。Django ベースのサイトやその他のサイトをやみくもに Tornado で実行しても、パフォーマンスが向上することはありません。

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

Tornado と Twisted は妥当なパフォーマンスを提供し、パフォーマンスの高い Web アプリケーションの構築に適しています。ツイストとトルネードの両方の証言をチェックして、それらが何ができるかを確認できます.

于 2010-11-18T10:27:07.457 に答える
6

古い質問に答えて申し訳ありませんが、この質問に出くわして、なぜもっと答えがないのか疑問に思いました. Bart J の質問に答えるには:

Tornado アプリケーションで RSS フィードを解析したいと考えています。それはかなり計算集約的だと思いますか?

それは、実行している解析の種類とハードウェアによって異なります:) 長い時間は長い時間です.

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

そう:

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

いつ無駄になるの?

Tornado は、着信クライアントに応答し、リクエスト ハンドラをディスパッチし、結果コールバックがイベント キューにプッシュされるまでそのクライアントについて考えないため、多くの接続を処理するのに適しています。したがって、その特定の品質のために、多くのリクエストを処理するときに適切にスケーリングしたい場合は、Tornado を使用する必要があります。非同期処理により、機能の分離とシェアードナッシング データ アクセスが容易になります。これは、 RESTやその他のサービス指向アーキテクチャなどのステートレス設計と非常にうまく調和します。また、固有のオーバーヘッドを伴うスレッドやプロセスの生成に対処する必要がなく、ロック/IPC の問題をいくらか回避できます。

逆に、バックエンドやデータ ストアでリクエストの処理に時間がかかる場合は、Tornado を使用しても大きな違いはありません。特に並行設計と Web サービスを行うのに役立ちます。並行アーキテクチャにより、設計のスケーリングが容易になり、カップリングを低く保つことができます。それは少なくともトルネードでの私の経験です。

于 2012-09-17T22:40:10.783 に答える