在时间密集型应用程序中正确使用node.js和Socket.IO的其他技术?

作为一个假设的例子,假设我想创build一个显示人们twitternetworking的应用程序。 我会提供一个允许客户端查询一个用户名的API。 该用户的顶级x推特将被发送到客户端。 然后,每个由初始人提到的人都会被扫描。 他们的顶部x推特将被发送到客户端。 这个过程将recursion地继续,宽度优先,直到达到预定的深度。 客户端将实时接收数据,显示扫描的用户数量,剩余扫描的已知用户数量以及不断增长的推特数据列表等统计数据。 没有一个处理是复杂的(正则expression式是less量的文本),但是许多networking请求将从一个初始请求中产生。

我真的很想用socket.io实现node.js的实时function,但是我觉得这是对这些技术的滥用 – 它们并不意味着在繁重的服务器端升级。 有没有一个更适合我正在尝试完成的工具集,或者为此目的使用这些工具的特定方法? Milewise正在做类似的事情,但是我认为我的应用程序会消耗比他们更多的networking资源。

谢谢。

您现在可以在networking上获得的最好的networking传输是WebSockets ,它提供了服务器和客户端之间持续的双向实时连接。 尽pipe不是每个浏览器都支持它们,但是socket.io为您提供了一些后备解决scheme ,但是与WebSockets相比,这可能会降低networking性能,如本文所述 :

在与WebSocketbuild立连接的过程中,客户端和服务器之间交换每帧2个字节的数据,而在进行连续轮询时,与8千字节的http头相比。

将千字节的数据减less到2个字节…并将延迟从150ms减less到50ms远远不够。 事实上,这两个因素足以让Google对Google WebSocket非常感兴趣。

除了networking传输,其他的东西也可能是重要的,例如你如何在服务器端获取,格式化和处理数据。 在node.js中,大量的CPU绑定计算可能会阻塞其他asynchronous操作的处理,因此应该将这些操作分派给独立的线程或进程以防止阻塞。