使用集群时如何设置全局对象?
How to set a global object when I use cluster?
我正在使用 express 和 socket.io 在应用程序中工作。
当我开始开发这个应用程序时,关于集群的信息并不多。
我正在尝试实施集群,但我遇到了一些问题。
我认为我可以使用可以从任何集群访问的全局对象解决最多的问题。
所以,问题有两个:
- 有什么方法可以创建一个全局对象,我可以从任何集群访问值?
- 有什么方法可以修改全局对象的任何值并在另一个集群中获取该值?
谢谢!
所以可以有两种方法
- 外部存储:在集群模式下,多个进程就像集群一样运行,我不建议共享全局对象并管理会话以使这些对象在进程之间保持同步。我建议使用 REDIS 或任何类似的数据库(推荐 REDIS,因为它快速且适合此用例)
- 全局对象:是的,您可以 create/modify 对象,因为它将成为每个进程中对象的副本,并且您必须保持对象同步。您可以对进程使用 process.send(),对主进程的工作人员使用 worker.send()。我看到的另一种选择是使用相同的库:memored npm module or StrongLoops strong store cluster
我宁愿保持所有进程独立并使用通用的外部存储,但同样你应该根据你的用例做出决定。
我正在使用 express 和 socket.io 在应用程序中工作。
当我开始开发这个应用程序时,关于集群的信息并不多。 我正在尝试实施集群,但我遇到了一些问题。
我认为我可以使用可以从任何集群访问的全局对象解决最多的问题。
所以,问题有两个:
- 有什么方法可以创建一个全局对象,我可以从任何集群访问值?
- 有什么方法可以修改全局对象的任何值并在另一个集群中获取该值?
谢谢!
所以可以有两种方法
- 外部存储:在集群模式下,多个进程就像集群一样运行,我不建议共享全局对象并管理会话以使这些对象在进程之间保持同步。我建议使用 REDIS 或任何类似的数据库(推荐 REDIS,因为它快速且适合此用例)
- 全局对象:是的,您可以 create/modify 对象,因为它将成为每个进程中对象的副本,并且您必须保持对象同步。您可以对进程使用 process.send(),对主进程的工作人员使用 worker.send()。我看到的另一种选择是使用相同的库:memored npm module or StrongLoops strong store cluster
我宁愿保持所有进程独立并使用通用的外部存储,但同样你应该根据你的用例做出决定。