Pusher、Pubnub和开源Socket.io / SignalR.net / Faye / jWebSocket比较

75
我目前正在评估 Pusher 和 PubNub,以实现双向实时通信,连接我的主要Web客户端和服务器。两者看起来都很不错,Pusher 的文档似乎更好,而 PubNub 的可扩展性和可靠性则是他们的强项。
然而,由于我需要控制预算,所以我担心 Pusher 和 PubNub 的成本可能会给我们带来问题,因此考虑使用其中一个开源替代方案 - 我主要看了 Socket.io、Faye 和 jWebSocket。
然而,我对自己运行服务有所顾虑:
- 是否有人真正将 Socket.io 或其他开源解决方案扩展到多个服务器上?PubNub 声称可以处理每秒 1M 条消息!我有点怀疑 Socket.io 可能无法在没有难以想象的数量的服务器的情况下做到这一点。 - 如果选择开源解决方案,我可能会在未来错失付费服务中的某些功能吗? - 如果我的服务器已经在 AWS 上,延迟是否真的会成为一个问题?尽管 PubNub 在多个位置上运行,但如果需要将消息从美国发送到日本,那么在日本拥有服务器也无助于减少延迟,因为它仍然需要单程传输。
感谢您的建议。

3
在http://www.quora.com/What-are-alternatives-to-pusher-com上有一个很好的备选列表。还有其他免费/付费/开放式的解决方案,例如: http://firebase.com/ http://goinstant.com/ https://fanout.io/ http://firehose.io/ - Patrick Hankinson
GoInstant服务已经停止。自2014年8月31日起生效。 - user12121234
1个回答

21

我使用Node.js来设置Faye,一开始测试表现非常好。但是,当我将其切换到实际的Node.js环境时,尽管我的应用程序负载只有约每秒10个请求左右,并且有大约3000个打开的连接 - 但CPU使用率却被固定在100%(我计算机上8个可用内核中的1个)。我对此有些失望,希望能获得更好的表现。

我曾考虑过使用redis或在不同端口上运行多个node实例,然后在应用程序端分担负载,但是考虑到PubNub的价格,将所有这些转交给他们似乎更容易。

在尝试了Pusher和PubNub两者后,我发现PubNub对我来说既更便宜,延迟也更低(我托管在新加坡,而Pusher对我来说大约为500ms,而从我的应用程序中的PubNub往返时间则为250ms)。然而如果你托管在美国,差异可能会小得多。

我还看了Ape-Server,但没有找到任何好的教程/文档来设置发布/订阅模型,因此跳过了它 - 但也许你比我聪明,会有更好的体验 :)


20
你是说“当我将其切换到live node.js”是什么意思?你的意思是将其移动到生产服务器上吗?这个服务器是共享主机方案吗?在AWS上吗?它的规格是什么?另外,每秒10个请求,是一个发布者和3000个订阅者吗?因此,在本质上,你每秒传递了30,000条消息?如果是这样,对于单核心来说,听起来非常不错,而且我会期望它被压满。请澄清你的测试方法。谢谢。 - slartibartfast
关于Ape,他们写道“易于安装”:http://www.ape-project.org/download/APE_Complete_Package.html :) - denis.peplin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接