不同进程之间共享Node.js环境
Sharing Node.js environment between different processes?
按照与rubygem Spork相同的思路,您是否可以分叉一个节点进程,并使其基本上成为当前环境的完整克隆?
我所说的"完全克隆"是指这个克隆的/子环境/进程可以重用现有的require.cache
,这样子进程就不必再次需要相同的模块(有时是痛苦的)性能。例如,require('lib-a')
需要2秒才能加载。当你在子进程中调用require('lib-a')
时,它是即时的(也就是使用require.cache
或类似的东西),你是如何做到这一点的?
这方面的一个用例是加快节点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服务器,并"分叉"它来运行测试,这样您就不必等待(有时是10秒)Rails服务器启动。如何在节点中做到这一点?有可能吗?
更新
这被认为是unix套接字对吗?这将有助于搜索。
节点进程是长寿命的,所以我不认为启动时间是特别重要的。这是节点哲学的核心。话虽如此,您可能需要查看集群模块。它允许您启动童工流程。它主要是为多核场景中的负载平衡而设计的,但可能会对您有所帮助。
- Node.js v6.2.0类扩展不是函数错误
- 如何使用 node.js 比较两个 json 数组
- Node.js's Buffer.writeFloatBE in Javascript
- node.js:setInterval()正在跳过调用
- 如何处理node.js节点mongodb中的连接和查询队列
- Node.js正在更改应用程序以使用集群模块
- 如何使用Node.js最有效地解析网页
- 在openshift node js应用程序中获取请求
- 正在删除node.js中已验证的网站
- 与运行长作业(javascript,node.js)的第三方API同步的最佳实践
- 在索引.html和应用.js [node.js] 之间共享变量
- Node.js中的JavaScript原型对象效率
- node.js请求数据事件未在CORS ajax调用中触发
- 使用node.js制作网站
- 使用node.js服务器中的evernote api获取note内容
- 有没有任何方法可以使用node-js从不同的机器打开浏览器
- 使用CI和CodeDeploy对node.js应用程序进行连续部署
- 在Node.js中上传和检索图像
- 什么's本地node.js服务器和python简单http服务器之间的区别
- 如何使用 Node JS 获取 JSON 嵌套数组值