7

我目前正在使用DerbyJS,因为它可以促进干净、干燥的客户端/服务器代码。附带的好处(大多数人使用该框架的主要原因)是它使用 Socket.IO 来创建实时应用程序。在这种情况下,我不需要实时,但这是一个很好的补充。

我的问题是 - 我是否会通过使用 Socket.IO 以及它维护的所有开放连接来牺牲可扩展性/性能?由于没有打开的连接,使用 Backbone + ExpressJS 会释放资源吗?

4

2 回答 2

10

保持一堆打开的连接显然在服务器开销方面有一些成本,但我不会担心这样的问题,除非你有明显的扩展问题。一旦你有一个明显的扩展问题,你应该有足够的收入来购买更多的服务器资源。服务器非常便宜,您的时间非常昂贵。不要担心优化小东西。

于 2012-06-09T20:31:43.330 回答
5

我是否会通过使用 Socket.IO 以及它维护的所有开放连接来牺牲可扩展性/性能?

如果您想在有新信息时立即更新您的页面(动态页面)。然后使用非阻塞 io保持连接打开是最有效的方法。幸运的是 node.js 确实使用了非阻塞 io。这就是 node.js 如此受欢迎的原因之一(另外,您可以使用最流行的编程语言 JavaScript 进行编码)。如果您真的不需要它(将来也是如此),因为您的网站相当静态(不像您说的那样是实时的),那么关闭连接将为您节省资源。

由于没有打开的连接,使用 Backbone + ExpressJS 会释放资源吗?

我会看看使用骨干网/快递组合与 derbyjs 开发网站的成本(开发时间)。

然后再次像Nate提到的 Socket.io 可以轻松处理许多(1000+)并发连接。如果使用 derbyJS 更容易开发,那么我会使用它。当您跨过那条路时,您总是可以决定添加更多服务器或重新设计(可能雇用额外的程序员)您的网站以使用快速/主干组合。首先尝试以最少的努力(开发时间)让用户发现您的网站有价值。

PS:我认为你应该尽量保持你的系统尽可能模块化,以便用最少的时间替换 Derby.js。

于 2012-06-23T00:35:34.387 回答