【问题标题】:PM2 clustering, WebSockets, Nodejs(express) how to implement shared data(variable)PM2集群、WebSockets、Nodejs(express)如何实现共享数据(变量)
【发布时间】:2017-10-13 05:20:00
【问题描述】:

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

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

非常感谢。

【问题讨论】:

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

标签: node.js mongodb websocket pm2


【解决方案1】:

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

  1. 您的数据库应该是您的首要考虑因素。无论您是否要使用 PM2,如果您要进行 CRUD,尤其是 UPDATE 总是会占用资源。即使你使用 MySQL。如果您要更新数据库中的数据,而不仅仅是内存空间中的数据,则更新数据会占用资源。 (Redis 或 MemCached)。

因此,您需要准确地考虑正在进行的更新、更新的频率和具体方式。

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

  1. 现在,一旦你决定了你的数据库,就转向 master-worker。首先看看数据库提供了什么以及如何安全有效地实施它。 (mongodb 在这方面有很好的文档)。

  2. 现在你来看看集群。我喜欢 PM2,但也必须正确设置。似乎有这样的想法,要实现一个集群,您只需要将 PM2 放入 混合,瞧,你有一个有效的集群。没有东西会离事实很远。您的 PM2 文件(无论您想使用什么格式)都必须设置和微调)。在您的情况下,抓住所有核心可能是最好的,也可能不是。同样,这必须处理您的数据和 CRUD 操作。

  3. 你终于在比赛中投入了“坚持”。这是许多因素的函数 - 但本质上它可以追溯到您设置数据的方式,主 - 工作者,当然还有您的分片(如果有的话)以及您的服务器物理位置以及它们是否正在使用重复或不是。

简单地说,您将所有可能的术语都放入了您的问题中,这些术语不能简单地通过将 PM2 放入混合物中来解决,而我一直使用 PM2。 PM2 不是灵丹妙药。它是武器库中的一种工具。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-10
    • 2021-07-20
    • 2017-12-01
    相关资源
    最近更新 更多