2011-12-11 42 views
2

我目前使用Linode来部署我的应用程序。我有2台服务器,1台数据库服务器,前面有1个Load Balancer。Scale SocketIO(NowJS)

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

1.开关来SocketIO和使用RedisStore(我还可以使用的pub/sub随着RedisStore为SocketIO?或者完全切换到RedisStore)

2.Forget有关集群和如果需要添加更多的服务器(它是一种资源的浪费,因为没有利用多内核)

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

+0

我收到来自NowJS程序员的电子邮件,它说:“虽然我们有NowJS分布式版本已经完成,在使用中,我们已经有了一个新的,更大的版本被称为‘现在’现身明年年初。你很快就会在www.flotype.com网站上听到更多的信息,并且在1月份会有更多的新闻发布。请检查一下。 – BRampersad

+0

这很好,因为使用nowjs比直接处理socket.io更容易。 –

回答

0

我不知道你说的约25%和75%,但如果你指的是CPU /内存,你应该知道,节点是当它不具备的东西做的非常有效的,这样就可以解释情况。

此外,使用多个核心的唯一方法是产卵多个过程(因此使用群集)。

您使用RedisStore的事实(因此Socket.IO可以将连接数据保存在内存中,而不是一个进程中),而Redis for pub/sub非常出色,您可以使用这些独立功能Socket.IO(NowJS是Socket.IO之上的另一个抽象层)。

所以,你应该使用多个进程,然后尝试横向扩展(升级你的机器),并尝试扩大垂直(增加更多的机器)之后。

+0

我的意思是当尝试使用的应用程序,它失败3次,只有一次有效。 –

+0

究竟你“失败”是什么意思?客户端无法连接NowJS(这是真的Socket.IO罩下)? – alessioalex

+0

是在NowJS对象不能被初始化当使用集群时 –