【发布时间】:2025-11-24 18:30:01
【问题描述】:
我有一个内存中的 javascript 对象,我会在节点启动时对其进行初始化。我正在使用集群模块在多个核心上运行此节点应用程序。当我收到一个 http 请求时,它被一个工作线程接收,改变了 javascript 对象的值。我需要确保所有工作线程都反映了这个更改的值?我该怎么做?
【问题讨论】:
标签: javascript node.js load-balancing multicore
我有一个内存中的 javascript 对象,我会在节点启动时对其进行初始化。我正在使用集群模块在多个核心上运行此节点应用程序。当我收到一个 http 请求时,它被一个工作线程接收,改变了 javascript 对象的值。我需要确保所有工作线程都反映了这个更改的值?我该怎么做?
【问题讨论】:
标签: javascript node.js load-balancing multicore
子进程不能共享变量,因为每个工作进程都是使用child_process.spawn 创建的全功能进程。
使用快速、内存中的键值对数据库(如 Redis 和 node-redis)来执行此操作。
这样,当您的应用启动时,您可以序列化您的 JS 对象并将其分配给 Redis 键。然后,工作人员将对同一个键执行所有读取更新操作。我个人推荐这种方式。
【讨论】: