PM2集群,WebSockets,Nodejs(表达)如何实现共享数据(变量)

时间:2017-05-14 09:18:32

标签: node.js mongodb websocket pm2

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

有没有办法让pm2群集之间的共享数据更快地使用并且更加一致。我经常需要访问Clients变量并快速更新它以在所有集群之间获得持久数据。

非常感谢。

1 个答案:

答案 0 :(得分:1)

你已经在你的问题中加入了大量的因素,你必须将它们分开才能正确理解所涉及的过程。

  1. 您的数据库应该是您的首要考虑因素。无论你是否打算使用PM2,如果你要进行CRUD,特别是UPDATE总会占用资源。即使你使用MySQL。如果要更新数据库中的数据而不仅仅是在内存空间中,则更新数据会占用资源。 (Redis或MemCached)。
  2. 因此,您需要准确考虑正在进行的更新,以及您经常采用的更新方式。

    您还需要为数据库和已分配的内存计划空间。例如,Mongodb因抢夺记忆而臭名昭着。

    1. 现在,一旦您决定将数据库转为主工作人员。首先看一下DB提供的内容以及如何安全有效地实现它。 (mongodb有很好的文档)。

    2. 现在你来到集群。我喜欢PM2,但也必须正确设置。似乎有这个想法,实现一个你只需要抛出PM2的集群 混合和瞧你有一个有效的集群。没有东西会离事实很远。您的PM2文件(您要使用的任何格式)必须设置并进行微调。在您的情况下,抓取所有核心可能是也可能不是最好的。这又需要处理您的数据和CRUD操作。

    3. 最后你把“持久性”投入了比赛。这是很多因素的作用 - 但实际上它可以追溯到你设置数据的方式,主人 - 当然你的分片(如果有的话)以及你的服务器在物理上的位置,以及他们是否正在使用重复或不。

    4. 简单地说,你把所有可能的术语都扔进了你的问题,这个问题不能简单地通过将PM2投入混合来解决,而且我一直使用PM2。 PM2不是一个神奇的子弹。它是武器库中的一个工具。