NodeJS群集问题

时间:2013-01-13 20:11:22

标签: node.js scalability

我正在寻找一种方法来在NodeJS中的所有集群实例之间共享相同的数据结构(包含函数,因此JSON不是一个选项)。我有一个名为“用户”的数据结构,它跟踪用户会话并包含他们有权访问的功能。我需要能够跨所有节点进程共享这个数据结构,或者我需要一个替代的设计模式。有谁知道这个问题的任何解决方案?感谢

2 个答案:

答案 0 :(得分:1)

在nodejs上设置适当的IPC(进程间通信)有多种选择:

  • 使用文档/键值存储解决方案,如Redis(键值)或MongoDB(NoSQL Document-Storage)
  • 使用cluster模块的集成IPC功能(请参阅send method

决定哪种解决方案最合适取决于您的要求和项目设置。对于我们的上一个项目,我决定使用这两种方法:

  • 用于触发作业和将部分任务分派到不同nodejs实例的IPC
  • 用于集中式会话和api令牌管理的Redis

如果您使用的是Express,我强烈建议您使用Redis中间件connect-redis。此会话中间件自动处理基于快速的应用程序的集中式会话管理(这也意味着您可以存储复杂的JS对象并可以从所有实例访问它们。)

答案 1 :(得分:1)

我意识到这已经过时并且已经回答了,但是注意另一种选择可能对其他人有益。处理情境的推荐方法是将此数据结构及其函数放在单独的文件中,并在需要时require。这基本上会引入“代码/函数”,并在任何数据存储中存储(序列化/反序列化)数据本身。