我在使用集群时如何设置全局对象?

时间:2016-09-12 18:55:11

标签: node.js express socket.io cluster-computing

我正在app中使用express和socket.io。

当我开始在这个应用程序中开发时,关于群集的信息并不多。 我正在尝试集群,但我遇到了一些问题。

我认为我可以使用全局对象解决的大多数问题都可以从任何群集访问。

所以,问题是两个:

  1. 我可以创建一个可以访问任何群集中的值的全局对象吗?
  2. 我可以修改全局对象的任何值并在另一个群集中获取此值吗?
  3. 谢谢!

1 个答案:

答案 0 :(得分:1)

所以可以有两种方法

  1. 外部存储:在群集模式下,多个进程的行为类似于群集,我不建议共享全局对象并管理会话以使这些对象在进程之间保持同步。我建议使用REDIS或任何类似的数据库(快速推荐REDIS并配合此用例)
  2. 全局对象:是的,您可以创建/修改对象,因为它将是每个进程中对象的副本,您必须保持对象同步。您可以将process.send()用于进程,将worker.send()用于来自主进程的worker。我看到的另一个选项是使用相同的库:memored npm moduleStrongLoops strong store cluster
  3. 我希望保持所有流程独立并使用通用外部存储,但您应该再根据您的用例做出决定。