Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js PM2集群、WebSocket、Nodejs(express)如何实现共享数据(变量)_Node.js_Mongodb_Websocket_Pm2 - Fatal编程技术网

Node.js PM2集群、WebSocket、Nodejs(express)如何实现共享数据(变量)

Node.js PM2集群、WebSocket、Nodejs(express)如何实现共享数据(变量),node.js,mongodb,websocket,pm2,Node.js,Mongodb,Websocket,Pm2,我正在用NodeJS(Express)中的WebSocket(ws)库编写实时连接web服务器,在这里我可以将用户保存在一个变量客户端中,以便能够找到正确的ws用户来发送数据。clients变量是对象数组。最后,我将连接PM2群集,我需要在所有工作进程和主进程之间共享所有客户端,我曾考虑使用mongodb保存数据,但我正在进行大量数据修改,这可能会导致服务器的数据更新速度非常慢 有没有办法让pm2集群之间的数据共享更快、更一致。我需要经常访问Clients变量并快速更新它,以便在所有集群之间拥有

我正在用NodeJS(Express)中的WebSocket(ws)库编写实时连接web服务器,在这里我可以将用户保存在一个变量客户端中,以便能够找到正确的ws用户来发送数据。clients变量是对象数组。最后,我将连接PM2群集,我需要在所有工作进程和主进程之间共享所有客户端,我曾考虑使用mongodb保存数据,但我正在进行大量数据修改,这可能会导致服务器的数据更新速度非常慢

有没有办法让pm2集群之间的数据共享更快、更一致。我需要经常访问Clients变量并快速更新它,以便在所有集群之间拥有持久数据


非常感谢。

您在问题中加入了大量的因素,您确实需要将这些因素进行划分,以正确理解所涉及的过程

  • 你的DB应该是你的第一考虑。如果你要做CRUD,尤其是更新,你是否要使用PM2,这总是需要资源。即使你使用MySQL。如果要更新数据库中的数据而不仅仅是内存空间中的数据,则更新数据会占用资源。(Redis或MemCached) 因此,您需要准确地考虑正在进行的更新,更新的频率和方式

    您还需要为数据库和分配的内存量规划空间。例如,Mongodb因抢夺内存而臭名昭著

  • 现在,一旦你决定了你的DB,就转到master worker。首先看看DB提供了什么,以及如何安全高效地实现它。(mongodb在这方面有很好的文档)

  • 现在来看看集群。我喜欢PM2,但也必须正确设置。似乎有这样一种想法,要实现集群,您只需要将PM2投入其中 混合和瞧,你有一个集群可以工作。没有比这更离谱的了。您的PM2文件(无论您想使用何种格式)必须设置并微调)。抓住所有核心可能是最好的,也可能不是最好的。同样,这必须处理您的数据和CRUD操作

  • 最后你在比赛中加入了“坚持”。这是一个由许多因素组成的函数,但从本质上讲,它可以追溯到您设置数据、主工作人员的方式,当然也可以追溯到您的分片(如果有)的方式,以及您的服务器的物理位置,以及它们是否在使用复制


  • 简单地说,你把每一个可能的术语都放进了你的问题中,这不是简单地把PM2放进去就能解决的,我一直在使用PM2。PM2不是一颗神奇的子弹。这是武器库上的一个工具

    您对此有什么解决方案吗?是的,我在不同集群和服务器之间共享状态时遇到了这个问题,所以我开始编写一个库来为您管理它。您可以在这里查看: