首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ArangoDB FOXX节点扩展

ArangoDB FOXX节点扩展
EN

Stack Overflow用户
提问于 2016-03-21 17:59:55
回答 1查看 349关注 0票数 2

我正试着把一个应用程序从sails转移到FOXX。我原以为我可以在FOXX中使用node.js模块,但我遇到了一个问题。我需要在服务器上创建一个“工作”目录来执行对SCM存储库的操作。我安装了“删除”和"mkdirp“模块。mkdirp模块调用fs.lstatSync,该模块在FOXX下报告缺失。安装fs的本地节点副本并不能解决问题。

如果这是一个问题,那么我的一些其他任务,如生成外部命令行程序可能是不可能的。在这种情况下,我可能需要重新考虑将所有任务转移到FOXX,但这意味着复制sails和FOXX中的许多功能,这可能是部署的噩梦。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-22 15:08:45

虽然Foxx非常灵活,但它“只是”运行在ArangoDB的JavaScript环境中。这个环境不完全兼容Node (以及NPM上的一些模块),特别是在异步代码或文件系统以及网络I/O方面。

具体来说,fs模块与Node的内置fs模块不同。

幸运的是,removemkdirp模块提供的两个功能已经内置在ArangoDB的fs模块中:

  • fs.makeDirectoryRecursive等价于mkdirp
  • fs.removeDirectoryRecursive等价于remove

可以从ArangoDB内部生成外部进程,但相关功能是内部API的一部分,不打算用于Foxx服务(除其他限制外,目前无法获得输出,只有退出状态)。

根据您想要实现的目标和性能要求,将I/O密集型代码分离到外部Node微服务中可能确实是一个更好的主意。Foxx最适合作为底层数据库的应用程序逻辑包装器,所有Foxx代码都与其他ArangoDB JavaScript代码一起有效运行,因此长时间运行的请求会影响ArangoDB处理其他需要访问JavaScript层的请求的能力。

在您的特定情况下(您提到了与SCM软件的交互),我建议创建一个小型的独立节点服务,以处理SCM相关的逻辑,并在必要时(甚至在两个服务之间)进行sails通信。虽然这意味着最初增加了一些开销,但它也将比在ArangoDB中用于非数据库相关任务的CPU周期具有更大的可伸缩性。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36138410

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档