2013-01-13 127 views
0

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

回答

1

我意识到这是陈旧和回答,但它可能有利于其他人注意替代方案。处理这种情况的推荐方式是将此数据结构的功能放在单独的文件中,并在需要时使用它。这将基本上拉入“代码/函数”,并将数据本身存储(序列化/反序列化)到任何数据存储中。

+0

是的。这已经很长时间了,但你绝对正确!函数不是有状态的,所以根据需要注入它们就是要走的路! –

1

存在用于上的NodeJS设置适当的IPC(进程间通信)的多个选项:使用文档/键 - 值存储解决方案等Redis(键值)或MongoDB

决定哪些这些解决方案的一个最适合取决于你的需要简单和你的项目设置。对于我们的最后一个项目,我决定使用这两种方法:

  • IPC触发工作调度部分任务不同情况的NodeJS
  • Redis的集中会话级和API令牌管理

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

+0

但我需要能够共享包含函数的数据结构,并且不能使用JSON函数 –

+0

您可以使用MongoDB进行尝试,它似乎包含用于函数序列化的序列化开关:http://mongodb.github .com/node-mongodb-native/api-bson-generated/bson.html?highlight = serialize#BSON.serialize – schaermu

+0

IPC没有更好的方法吗? –