gpt4 book ai didi

javascript - 在不同进程之间共享 Node.js 环境?

转载 作者:行者123 更新时间:2023-11-30 05:55:27 25 4
gpt4 key购买 nike

与 ruby​​gem Spork 相同, 你能 fork 一个 Node 进程,让它基本上是当前环境的完整克隆吗?

“完全克隆”是指此克隆/子环境/进程可以重用现有的 require.cache,因此子进程不必承受(有时是痛苦的)性能损失再次重新要求相同的模块。例如,require('lib-a') 加载需要 2 秒。当您在子进程中调用 require('lib-a') 时,您如何做到这一点,它是即时的(也就是使用 require.cache 或类似的东西)?

一个用例是加快 Node express/connect HTTP 服务器的启动时间。在更复杂的应用程序中,您可能会预先require 大量模块,有时需要一两秒钟来require 所有模块(不是寻找有关如何懒惰的信息-加载模块,我也在进行优化,但它有其局限性)。

相关的Spork代码是这样的:

https://github.com/sporkrb/spork/blob/master/lib/spork/forker.rb

我不确定它对 Marshal.dump(yield, @child_io)Marshal.load(@child_io) 这样的代码到底做了什么,但它看起来就像它以某种方式将整个环境复制到子进程中。通过这样做,Spork 使您可以运行 1 个“主”Rails 服务器,并“ fork ”它来运行测试,因此您不必等待(有时需要 10 秒)让 Rails 服务器启动。你怎么能在 Node 中做到这一点?可能吗?

更新

这是否被视为 unix socket pair ?这将有助于搜索。

最佳答案

Node 进程旨在长期存在,因此我认为启动时间从来都不是特别重要的。这是 Node 哲学的核心。话虽这么说,你可能想看看 cluster module .它允许您启动子进程。它主要是为多核场景下的负载均衡而设计的,但可能对你有一些帮助。

关于javascript - 在不同进程之间共享 Node.js 环境?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12151043/

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