我们希望创建一个能够处理大量并发用户的实时Web应用程序。它的实时方面是将新消息推送到客户端,FriendFeed的方式,以及接受来自客户端的新消息,如聊天系统。
例如,我们拥有的一些选项是:使用CodeIgniter在nginx服务器后面运行Comet plugin应用程序,使用Twisted或Tornado等Python框架,使用Orbited来维护与服务器的持久连接等。
哪种设置最适合实时应用,并且易于实现?
附录:我想要回答的一个相关问题是 - 在Twisted / TwistedWeb或Tornado中编写完整的实时Web应用程序更容易吗?
编辑:Ballpark数字:我们计划从能够管理10,000个并发连接开始,但是应该能够通过切换技术/添加服务器来扩展到1,000,000。我们只会推送短信,包括长短信。我们希望它的实时方面是真正实时的,并且< 5秒延迟。
答案 0 :(得分:3)
经过大量研究,我们决定选择Node。它应该相当容易实现,并且应该可以很好地扩展,如果我们开始拥有数百万的并发用户,那么我们将研究更具可扩展性和复杂性的解决方案。
答案 1 :(得分:2)
我建议你看看Planet Framework(免责声明,我是其中一位开发人员)。
它提供了一个完整的堆栈解决方案,包括客户端和服务器端模板,跨浏览器推送功能和数据库分片。基于gevent,它提供了普通的阻塞语义(与node.js相对),并结合了Python的简单性。
我们目前仅限邀请,但我们所有的文档都是公开的。我建议您在网站上请求邀请,因为我们一直在批准新用户。
答案 2 :(得分:1)
您是否看过Zope甚至Plone(这个是CMS)吗?以处理NASA和more等大型交通网站而闻名,但它在Object-Oriented Database下运行 (这是这种表现的主要原因),我不知道你是否想要这样做。
Zope和Plone都是用Python编写的。
答案 3 :(得分:1)
您还没有提供足够的信息来做出正确的决定。大量并发用户互相推送新消息是不够的。只有文字?还是视频?只有短文本,还有长文本?现在只写,还是上传? 10.000并发用户或10.000.000?所有这些都是从一开始还是你有时间提升/切换技术/建立数据中心?实时性如何足够好? 1秒延迟还是几分钟? 您想要允许多少个邮件订阅?
在这些问题的高端你是独立的,只是编写自定义代码是唯一明智的方法。放宽一些约束可以使用现有的框架