gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 12:37:50 24 4
gpt4 key购买 nike

我需要在不同的 Node 进程或集群之间共享一些对象或完整的模块,我搜索了很多博客都没有得到满意的答案。

如果那是不可能的,那么有什么想法可以解决这个问题吗?

最佳答案

根据配置,我可以想到三种方式。

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

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

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

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

Scuttlebutt is intended to be subclassed into a variety of data-models. Two implementations are provided as examples scuttlebutt/model and scuttlebutt/events...

还有一个不错的white paper解决了使用复制共享对象数据背后的科学问题。

我希望这能为您提供一些可行的替代方案。

关于javascript - 在不同实例之间共享nodejs中的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25519325/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com