2016-09-12 22 views
0

我正在使用express和socket.io的应用程序。如何在使用集群时设置全局对象?

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

我认为我可以用全局对象解决的问题最多,我可以从任何集群访问。

所以,问题是两个:

  1. 有办法,我可以创建一个全局对象,我可以从任何群集访问值是多少?
  2. 有办法可以修改全局对象的任何值并在另一个集群中获取此值吗?

谢谢!

回答

1

所以可以有两种方法

  1. 外部存储:在集群模式下,多个进程像集群和我不建议共用一个全局对象和管理会议,以保持这些对象在进程间同步。我建议使用REDIS或任何类似的数据库(推荐使用REDIS,因为它很快并且适用于此用例)
  2. 全局对象:是的,您可以创建/修改对象,因为它将成为每个过程中对象的副本,而您将不得不保持同步的对象。您可以使用process.send()作为process,worker.send()作为master进程中的工作者。我看到另一种选择是使用库相同:memored npm moduleStrongLoops strong store cluster

我宁愿保持所有过程独立,并使用一个共同的外部存储,但同样你应该根据你的使用情况决定。

+0

谢谢。我认为第一种方式更好。你能给我提供任何存储库吗?我需要查看关于如何在我的项目中实现的示例代码。 – slorenzo

+0

这是npm redis文档:[link](https://github.com/NodeRedis/node_redis)。我发现这个博客很有用:[链接](https://codeforgeek.com/2015/07/using-redis-to-handle-session-in-node-js)。在REDIS上也有多个npm模块。 – Mattony