【问题标题】:Socket.IO - are the open connections a concern?Socket.IO - 开放连接是否值得关注?
【发布时间】:2012-06-11 14:02:20
【问题描述】:

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

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

【问题讨论】:

    标签: node.js backbone.js socket.io derbyjs


    【解决方案1】:

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

    【讨论】:

    • 一般来说,我认为这些是比较好的经验法则,但它们非常受业务驱动。并非所有软件都是在业务环境中编写的。此外,说“不要问那个问题,因为 X 和 Y”只比说“不要问那个问题”好一点。
    【解决方案2】:

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

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

    使用 Backbone + ExpressJS 会释放资源,因为没有 打开连接?

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-03-28
      • 2013-02-16
      • 1970-01-01
      • 1970-01-01
      • 2016-07-08
      • 1970-01-01
      • 2012-11-09
      相关资源
      最近更新 更多