什么时候以及如何使用龙卷风?什么时候没用?


84

好的,Tornado是非阻塞的,而且运行速度非常快,它可以轻松地处理许多常规请求。

但是我想这不是灵丹妙药,如果我们仅仅使用Tornado盲目地运行基于Django的站点或其他任何站点,它都不会提高性能。

我找不到对此的全面解释,所以我在这里问它:

  • 什么时候应该使用龙卷风?
  • 什么时候没用?
  • 使用时,应考虑什么?
  • 我们如何使用龙卷风打造低效的网站?
  • 有一个服务器和一个网络框架。我们什么时候应该使用框架,什么时候可以用其他框架替换它?

Answers:


45

有一个服务器和一个网络框架。我们什么时候应该使用框架,什么时候可以用其他框架替换它?

这种区别有点模糊。如果仅提供静态页面,则可以使用lighthttpd等快速服务器之一。否则,大多数服务器会提供各种复杂的框架来开发Web应用程序。Tornado是一个很好的Web框架。Twisted功能更强大,被认为是一个很好的网络框架。它支持许多协议。

Tornado和Twisted是提供支持非阻塞异步Web /网络应用程序开发的框架。

什么时候应该使用龙卷风?什么时候没用?使用时,应考虑什么?

就其本质而言,异步/非阻塞I / O在I / O密集而不是计算密集的情况下非常有效。大多数Web /网络应用程序都非常适合此模型。如果您的应用程序需要完成某些计算密集型任务,则必须将其委派给其他可以更好地处理它的服务。尽管Tornado / Twisted可以完成Web服务器的工作,但可以响应Web请求。

如何使用龙卷风打造低效的网站?

  1. 做任何需要大量计算的任务
  2. 介绍阻止操作

但是我想这不是灵丹妙药,如果我们仅仅使用Tornado盲目地运行基于Django的站点或其他任何站点,它都不会提高性能。

性能通常是完整的Web应用程序体系结构的特征。如果应用程序的设计不正确,则可以降低大多数Web框架的性能。考虑缓存,负载平衡等。

Tornado和Twisted提供了合理的性能,非常适合构建高性能的Web应用程序。您可以查看扭曲和龙卷风的鉴定书,以了解它们的功能。


1
谢谢你的回答。只是想阐明一些要点:我可以在不更改应用程序代码的情况下使用Flask或Django bihind Tornado并获得其所有好处(如果我不做任何征途任务)?
弗拉基米尔·西多连科

如果是,与使用flup进行跑步相比有什么区别?谢谢。
弗拉基米尔·西多连科

我想在Tornado应用程序中解析RSS feed。您会认为这在计算上相当密集吗?
Susheel Javadi

6

很抱歉回答一个老问题,但是我遇到了这个问题,想知道为什么它没有更多答案。回答Bart J的问题:

我想在Tornado应用程序中解析RSS feed。您会认为这在计算上相当密集吗?

好吧,这取决于您正在执行的解析类型以及所使用的硬件:)长时间是很长的时间,因此,如果您的应用需要花费半秒钟以上的时间才能响应,那么它似乎会很缓慢-对您的应用进行配置。

快速系统的关键是出色的体系结构,而不仅仅是细节,例如您所使用的框架(Twisted,Tornado,Apache + PHP)。龙卷风具有异步处理风格,在我看来,这确实归结为很多。Node.js,Twisted和Yaws是其他异步Web服务器的示例,由于其轻量级的方法和异步处理风格,它们可以很好地扩展。

所以:

什么时候应该使用龙卷风?

什么时候没用?

Tornado非常适合处理大量连接,因为它可以响应传入的客户端,调度请求处理程序,并且在将结果回调推送到事件队列之前不要考虑该客户端。因此,对于那种特定的质量,当您想在处理大量请求时进行适当缩放时,应使用“龙卷风”。异步处理有助于功能解耦和无共享数据访问。在无状态设计(例如REST或其他面向服务的体系结构)中,这种变化非常好。您也不必花费太多的内在开销来处理生成线程或进程,并且可以节省一些锁定/ IPC问题。

另一方面,如果您的后端和/或数据存储需要很长时间来处理请求,那么“龙卷风”不会有太大的不同。它有助于进行并发设计,尤其是Web服务。并发体系结构使您更容易扩展设计并保持较低的耦合。至少这是我在龙卷风中的经历。


如果您的服务中确实有少量计算密集型操作(例如> 1秒)怎么办?还有可能以非阻塞方式进行这种处理吗?
tigeronk2

@ tigeronk2是的,但是您必须在另一个线程/进程中运行计算。
Morten Jensen

或潜在地将密集流程作为另一项服务运行,以与管理另一流程相比以较小的开销实现可伸缩性和分离。查看面向服务的体系结构链接。
泰斯

从定义上讲,解析RSS几乎不是繁重的工作,除非您做得非常错误。
三人房
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.