我一直在寻找各种各样的解决方案,但当我把它放在一起时,它看起来非常混乱。
我正在尝试为我的应用程序实现pm2集群模式,该应用程序具有socket.io实现。现在,我理解了这样一个概念:为了使我的应用程序在集群模式下正常工作,需要有无状态状态。socket.io也不是无状态的。混乱的是,
1)我们的朋友Cam 他说 --只要实现了socket.io-redis --当我们在最大数量的CPU上生成CPU时,就可以正常工作了。
2) socket.io 他说和我引用的话,
注意:在使用Redis适配器时仍然需要sticky-session。“
1)根据我的研究,互联网应该不同意它会起作用。也许卡姆先生很幸运,因为他有websocket这样的运输方式,而且可能不需要和polling打交道。但同时,我认为它应该能工作,因为redis-adapter是我们用来使其无状态的。
信息:用websocket作为传输方法对我有用,但我无法用polling测试它。
对于2),我认为我们可以将Joni先生的建议与“集群”中的"pm2“一起运行,但可以在不同的端口上运行。然后,我们钟爱的nginx的upstream团队和ip_hash会给我们带来同样的效果。
此外,我想使我的应用程序具有弹性。不仅在集群级别上,而且在向上和向外扩展。如果我的应用程序包括socket.io实现和redis中的会话令牌管理,那么最佳实践是什么?
我是错过了什么还是我完全错了?哪一种是扩大规模的最佳方式?
发布于 2020-07-24 18:41:52
我拿到了解决方案!而且对我来说也很好!感谢@elad和投稿人。我做了大量的测试(两个多月了!)从来没出过什么问题。我不会不尊重作者,解释代码片段所做的事情,因为它已经被描述得够多了,一行行。
这花了我足够长的时间,因为回购上有一些悬而未决的问题,所以我必须确定。现在,我确信,只要了解不同的组成部分,这些问题是可行的。毕竟,这不是魔法!
看一看,如果你还有疑问/问题,请告诉我。
https://stackoverflow.com/questions/56151166
复制相似问题