【问题标题】:Scale SocketIO (NowJS)缩放 SocketIO (NowJS)
【发布时间】:2011-12-11 19:12:36
【问题描述】:

我目前正在使用 Linode 来部署我的应用程序。我有 2 台服务器,1 台数据库服务器,前面有 1 个负载均衡器。

我使用 Redis 作为数据库和 NowJS 来实现聊天室。使用 Pub/Sub 一切正常。现在,我想使用集群来利用多核服务器。但是,在应用集群时,我遇到了奇怪的情况。有时,应用程序工作,有时它不工作,大约 25% 工作,75% 不工作(我运行了 4 个进程)。因此,我可以假设集群导致 nowJS 无法正常工作。现在,我必须做出决定

1.切换到 SocketIO 并使用 RedisStore(我仍然可以将 pub/sub 与 RedisStore 一起用于 SocketIO 吗?或者完全切换到 RedisStore)

2.忘记集群,如果需要添加更多服务器(由于没有使用多核,是否浪费资源)

P/s:对不起,我的英语不好,我不是本地人。

【问题讨论】:

  • 我收到了来自 NowJS 程序员的一封电子邮件,它说“虽然我们确实有一个分布式版本的 NowJS 已经完成并正在使用中,但我们有一个新的、更大的版本,称为“Now”即将推出明年年初。您很快就会在 www.flotype.com 网站上听到更多信息,并在 1 月份推出大型发布会。看看吧。
  • 那太好了,因为使用 nowjs 比直接处理 socket.io 更容易。

标签: node.js socket.io nowjs-sockets


【解决方案1】:

我不确定你所说的 25% 和 75% 是什么,但如果你指的是 cpu / 内存,你应该知道 Node 在没有事情可做时非常高效,这样可以解释情况。

此外,使用多核的唯一方法是生成更多进程(因此使用集群)。

您正在使用 RedisStore(因此 Socket.IO 可以将连接数据保存在内存中而不是单个进程 => 以在一个进程之外扩展)和用于 pub/sub 的 Redis 非常棒,您可以将它们与 Socket 独立使用.IO 也是(NowJS 是 Socket.IO 之上的另一层抽象)。

因此,您应该使用多个进程,然后尝试水平扩展(升级您的机器),并且只有在尝试垂直扩展(添加更多机器)之后。

【讨论】:

  • 我的意思是在尝试使用该应用程序时,它失败了 3 次,并且只工作了一次。
  • “失败”到底是什么意思?客户端无法连接 NowJS(实际上是 Socket.IO)?
  • 是的,使用集群时NowJS对象无法初始化。
  • 也许你可以通过直接使用 Socket.IO 来更好地完成你的任务,这样你就可以完全控制你想要的东西。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-12
  • 2012-03-19
  • 1970-01-01
  • 1970-01-01
  • 2011-10-31
相关资源
最近更新 更多