您会为高流量的 Web 应用程序选择啥实时框架,为啥?

Posted

技术标签:

【中文标题】您会为高流量的 Web 应用程序选择啥实时框架,为啥?【英文标题】:What real-time framework would you choose for a high-traffic web application and why?您会为高流量的 Web 应用程序选择什么实时框架,为什么? 【发布时间】:2010-11-15 07:47:36 【问题描述】:

我们希望创建一个能够处理大量并发用户的实时 Web 应用程序。它的实时方面是向客户端推送新消息,就像 FriendFeed 所做的那样,并且还接受来自客户端的新消息,就像聊天系统一样。

例如,我们有一些选项:使用Comet plugin 在 nginx 服务器后面运行 CodeIgniter 应用程序,使用 Python 框架,例如 Twisted 或 Tornado,使用 Orbited 来保持持久性与服务器的连接等。

哪种设置最适合实时应用程序并且易于实施?

附录:我希望回答的一个相关问题是 - 在 Twisted / TwistedWeb 或 Tornado 中哪个更容易编写完整的实时 Web 应用程序?

编辑:Ballpark 数字:我们计划从能够管理 10,000 个并发连接开始,但以后应该能够通过切换技术/添加服务器扩展到 1,000,000 个。我们只会推送短信,包括长短信。我们希望它的实时方面是真正的实时,延迟

【问题讨论】:

【参考方案1】:

经过大量研究,我们决定使用Node。它应该很容易实现,并且应该可以很好地扩展,如果我们开始拥有数百万并发用户,那么我们将研究更具扩展性和复杂性的解决方案。

【讨论】:

现在有点晚了 - 如果您不介意分享经验,我很想听听 Node、Chetan 的进展如何?【参考方案2】:

我建议你看看Planet Framework(免责声明,我是开发人员之一)。

它提供了一个完整的堆栈解决方案,包括客户端和服务器端模板、跨浏览器推送功能和数据库分片。它基于 gevent,提供了正常的阻塞语义(相对于 node.js),并结合了 Python 的简单性。

我们目前只接受邀请,但我们所有的文档都是公开的。我建议您在网站上请求邀请,因为我们正在不断地批准新用户。

【讨论】:

【参考方案3】:

你看过Zope 甚至Plone(虽然这个是CMS)?以处理 NASA 和 more 等大流量网站而闻名,但它在 Object-Oriented Database 下运行 (这是造成这种性能的主要原因),我不知道你是否想要。

Zope 和 Plone 都是用 Python 编写的。

【讨论】:

【参考方案4】:

您尚未提供足够的信息来做出正确的决定。大量并发用户相互推送新消息是不够的。只有文字?还是视频?只有短文本,还是长文本?现在才写,还是上传? 10.000 个并发用户还是 10.000.000 个?所有这些都是从一开始的,还是您有时间提升/转换技术/建立数据中心?实时性有多好? 1 秒延迟还是几分钟? 您希望允许多少消息订阅?

在这些问题的高端,您只能靠自己,编写自定义代码是唯一明智的方法。放宽一些约束使得使用现有框架成为可能

【讨论】:

谢谢,我在问题中添加了一些大概数字。希望这能让决定更明确。

以上是关于您会为高流量的 Web 应用程序选择啥实时框架,为啥?的主要内容,如果未能解决你的问题,请参考以下文章

python web开发用啥框架

您会使用 Laszlo 为 Java Web 应用程序开发基于 Flash 的前端吗?

Python能干啥,Python的应用领%

您会为 Windows Vista 推荐 32 位还是 64 位?

如果您可以使用任何 .NET DAL 技术,您会选择啥?

一条复杂SQL实现思路