您会为高流量的 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 应用程序选择啥实时框架,为啥?的主要内容,如果未能解决你的问题,请参考以下文章
您会使用 Laszlo 为 Java Web 应用程序开发基于 Flash 的前端吗?