gpt4 book ai didi

twisted - 部署时扭曲和 Tornado 的区别?

转载 作者:行者123 更新时间:2023-12-02 13:57:59 27 4
gpt4 key购买 nike

我对Tornado的了解很少,在部署方面,最好将Nginx用作具有Tornado进程数量的负载平衡器。

扭曲呢?是一样的吗?

最佳答案

如果我正确地跟踪了您的问题,您似乎会问:“龙卷风是否应该成为Nginx的领先者,那么Twisted呢?”
如果那确实是问题的去向,那么它会得到一个“取决于”的答案,但也许以您可能不会想到的方式。从运行时的角度来看,扭曲,龙卷风和Nginx的作用远非同一件事。
所有这三个系统在其内核中使用相同的编程模式。 OO人称其为Reactor模式,这通常也称为异步I / O事件编程,而老式Unix人士将其称为select风格的事件循环。 (通过select / epoll / kqueue / WaitForMultipleObjects等完成)
为了建立答案,需要一些背景知识:

Twisted是一个基于Reactor的框架,旨在以最通用的形式编写基于python的异步I / O项目。因此,尽管它对于Web应用程序(通过Twisted Web子模块)非常有用,但对处理串行数据(通过SerialPort子模块)或实现完全不同的网络协议(如ssh)也同样有效。

Twisted在灵活性方面表现出色。如果您需要将许多IO类型粘合在一起,特别是如果要将IO连接到Web,那就太棒了。如remudada答案中所述,它还具有内置的(twistd)应用程序工具。
作为异步I / O框架,Twisted很少有每周工作。尽管作为一个Web框架(尽管它正在积极地发展),但与诸如Flask之类的插件丰富的框架相比,它确实感觉落后了,而且Tornado肯定比Twisted Web拥有许多Web便利。

Torando是python中基于Reactor的框架,创建该框架是为了以极快的速度服务网页/ webapp(基本上可以像python一样快地投放网页)。编写该程序的人的目标是编写系统的速度如此之快,以使生产代码本身可以是python。

在逻辑上,Tornado核心与Twisted的核心几乎匹配。这些项目的核心是如此相似,以至于在现代发行版中,您可以运行Twisted inside of Tornado或运行Tornado port inside of Twisted
Tornado一心一意地专注于快速提供网页/ webapp。在大多数应用程序中,它的速度比Twisted Web快20%,但灵活性远远不及支持其他异步I / O用途。它(像Twisted)仍然是基于python的,因此,如果给定的webapp进行过多的基于CPU的工作,其性能将迅速下降。

Nginx是一个基于Reactor的应用程序,旨在为用C语言编写的网页和连接重定向提供服务。虽然Twisted和Tornado使用Reactor模式使python快速运行,但Nginx将事情进行了下一步,并在C语言中使用了该逻辑。

当人们比较Python和C时,他们经常谈论Python慢​​1.2到100倍。但是,在Reactor模式(正确完成后,大部分时间都花在操作系统上)中,语言效率最低的地方是最小的-只要没有太多的逻辑发生在Reactor之外。
我没有足够的数据来支持这一点,但是我的期望是,您会发现最简单的“ Hello world”(IE服务静态测试)在Tornado上运行的速度不会比在Nginx上运行的速度慢50%以上(Twisted Web为20%)然后平均比龙卷风慢)。
同一事物的速度差异,那会给我们带来什么?
您询问“最好将Nginx用作具有Tornado进程数量的负载平衡器”,因此要回答,我需要问您一个问题。

您是否采用某种方式进行部署,而这对于采用多个内核至关重要?

为了获得超高的异步IO速度,Reactor模式有一个弱点:

每个反应堆只能利用一个过程核心。

您可能会猜到,这种弱点的另一面是,Reactor模式非常高效地使用该内核,如果您有负载,则应该能够使该内核使用率接近100%。
这回到您要询问的设计类型,但是此答案中所有背景的原因是,这些服务(Tornado或Twisted前面的Nginx)的分层仅应利用多核计算机来进行。
如果您在单核系统(最低等级的云服务器或Raspberry Pi等嵌入式平台)上运行,则不应在反应堆前端进行操作。这样做只会使整个系统变慢。
如果您运行的CPU服务比CPU核更多(重载),那么您的工作也会受到影响。
所以:

如果要在单核系统上进行部署:

运行龙卷风或扭曲的一个实例(如果静态页面,则单独运行Nginx)


如果您尝试充分利用多个内核

在应用程序端口上运行Nginx(或双绞),为其余每个处理器核心运行一个Tornado或Twisted实例。

关于twisted - 部署时扭曲和 Tornado 的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24471521/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com