在不同实例之间共享nodejs中的对象

我需要在不同的节点进程或集群之间共享一些对象或完成模块,我search了很多博客,却没有得到满意的答案。

如果这是不可能做到那么任何想法如何开销呢?

根据configuration,我可以想到三种方法。

  1. 如果服务是节点集群,则使用像leveldb或redis这样的快速数据库。
  2. 如果服务在同一台机器上,但作为单独的进程运行,则redis或unix套接字可以正常工作。
  3. 如果服务分布在多台机器上,那么scuttlebutt提供了一个很好的解决scheme。

redis:使用像Redis这样的快速本地数据库在同一台机器上的进程之间共享对象涉及使用简单的put(key,data)和get(key),但是必须使用JSON序列化和反序列化。 没有正式的并发控制,所以你必须小心,任何对象更改都可用于所有客户端。 一种方法是使用pub / sub中内置的redis来进行更改时触发。 另一种方法是使用乐观locking。

unix套接字对于需要共享来自不同技术的对象的项目,在c ++应用程序和节点之间说,unix套接字提供了一个非常快速的解决scheme。 您仍然需要序列化/反序列化和控制并发性,但是它比数据库解决scheme更快,可以跨不同的技术工作。 有一个节点项目 ,帮助一些细节。

scuttlebutt可能是在不同机器上的进程之间共享数据的最佳方式。 从scuttlebutt网站 :

Scuttlebutt旨在被分类成各种数据模型。 提供了两个实现作为示例scuttlebutt / model和scuttlebutt / events …

还有一个很好的白皮书 ,讲述了使用复制来共享对象数据的科学。

我希望这给你一些可行的select。