ben*_*ree 13 node.js socket.io
关于这个主题有几个问题,但没有一个问题可以解决.
我正在使用带有redis-store的Socket.IO,而我正在为流量增加做准备.我的托管公司说,"你需要使用Engine.IO而不是Socket.IO,因为它的效率更高",所以我很想弄明白这意味着什么.
像这样的问题似乎有相互矛盾的答案:
所以我看待它的方式:
但随后Engine.IO称其"负载平衡器友好",但对redis一无所知.它必须有某种外店,对吧?但如果它有多个传输和商店,那么Socket.IO有什么意义呢?
然后,我看到Socket.IO 可能被抛弃和高调的公司正在向博智.
如何扩展Engine.IO?我自己要写店吗?
ben*_*ree 10
只是想分享我上周学到的东西,但希望其他人出现并明确回答这个问题,这样我就可以给他们一张支票.
1)永远不要使用Socket.IO(截至0.9.16)
我的主人告诉我使用Engine.IO(或其他任何东西)是正确的.Socket.IO有很多重大问题,最糟糕的是它会意外地DDoS你的服务器.我亲身体验过这个客户端相对较少,它完全禁用了我的服务器,直到我可以重写Socket.IO.我缩放到25+无人机以吸收这一击,这无所谓.单个客户端每秒可以发送1000个请求.
2)其他发动机没有Redis商店
Socket.IO允许您通过放入Redis商店来跨节点进行广播.据我所知,Engine.IO,Primus和SockJS不提供此功能.因此,当这些引擎声称"负载均衡器"友好时,并不意味着您可以跨节点进行广播.我开始认为这实际上是一件好事.使用redis编写pub/sub相对容易,并且将它分离出来一直很好.
我最终使用Primus和Engine.IO,然后使用redis pub/sub在节点之间共享事件.我花了大约5个小时来删除Socket.IO,连接Primus,写下pub/sub,然后上线.到目前为止,这是一次更好的体验.
更新:
结束Engine.IO也进入重新连接循环(每秒几次),所以我最终使用了SockJS.它给了我最好的连接性和稳定性,Primus现在处理重新连接(SockJS没有做到).
Kur*_*tyn -1
好吧,正如你自己提到的,我应该看看 Primus。扩展是使用 HAProxy 实现的。作为底层通信,您仍然可以使用 Socket.io,也可以使用 engine.io。通过使用 Primus,您可以尝试不同的库。http://pusher.com/docs/server_libraries上有一篇关于扩展 Redis 的有趣文章。
| 归档时间: |
|
| 查看次数: |
6150 次 |
| 最近记录: |