トルネードはいつどのように使用しますか?いつ役に立たないのですか?


84

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

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

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

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

回答:


45

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

この区別は少しぼやけています。静的ページのみを提供している場合は、lighttpdなどの高速サーバーの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アプリケーションの構築に適しています。ツイストとトルネードの両方の紹介文をチェックして、それらが何ができるかを確認できます。


1
答えてくれてありがとう。いくつかのポイントを明確にしたいだけです。アプリケーションのコードを変更せずに、FlaskまたはDjango bihind Tornadoを使用して、そのすべての利点を得ることができますか(キャンパスタスクを行わない場合)?
ウラジミールシドレンコ2010年

はいの場合-flupでsayを実行する場合との違いは何ですか?ありがとうございました。
ウラジミールシドレンコ2010年

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

6

古い質問に答えて申し訳ありませんが、私はこれに出くわし、なぜそれ以上の答えがないのか疑問に思いました。バートJの質問に答えるには:

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

それは、実行している解析の種類とハードウェアによって異なります:)長い時間は長い時間なので、アプリの応答に0.5秒以上かかると、動作が遅くなるように見えます。アプリのプロファイルを作成してください。

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

そう:

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

いつ役に立たないのですか?

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

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


計算量の多い(たとえば> 1秒)サービス内の操作がほとんどない場合はどうなりますか?そのような処理をノンブロッキングで行うことはまだ可能ですか?
tigeronk2 2012

@ tigeronk2はい。ただし、別のスレッド/プロセスで計算を実行する必要があります。
モーテンジェンセン

または、集中的なプロセスを別のサービスとして実行して、別のプロセスの管理と比較して小さなオーバーヘッドでスケーラビリティと分離を実現することもできます。サービス指向アーキテクチャのリンクを見てください。
タイス2018年

RSSの解析は、非常に間違って行わない限り、ほとんど定義上、重い処理ではありません。
トリプリー2018
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.