17

我正在尝试为 I/O 繁重和 CPU 繁重的任务选择正确的 Web 技术。NodeJs 非常适合处理大负载,它也可以横向扩展。但是,我被 cpu 沉重的部分困住了。是否可以将另一种技术(例如 Java)集成到节点中,以便我让它在其他线程中运行我的算法,然后在节点中再次使用结果。有没有现成的解决方案?任何其他建议都会非常好。

4

4 回答 4

22

您可以使用node-java将 NodeJS 与 Java 集成。

于 2013-09-17T13:59:27.807 回答
5

如上一个答案所述,您可以使用 node-java ,它是一个与 Java 对话的 npm 模块。您还可以使用J2V8,它将 Node.js 包装为 Java 库并在 Java 中提供 Node.js API。

于 2016-07-27T22:00:43.057 回答
2

答案是lambda 架构

NodeJs 本身就很好——以轻量级的方式处理快速查询,而不是对数据进行任何额外的计算。

CPU 繁重的任务可以很容易地委派给基于 JVM 的专用组件(嗯,最著名的是在 JVM 上)。这是通过使用消息代理和微服务很好地实现的。

基于事件的架构,nodejs 可以连接到像 Cassandra 或 Mongodb 这样的数据库和像 Apache Spark 这样的集群计算框架(但不一定,这取决于问题)来处理系统的 CPU 密集型部分。轻量级容器通过为每个组件提供良好的隔离运行时环境而锦上添花。

到目前为止,这是我对这个问题的结论。我认为上述建议消除了将节点包装在 java 或其他基于 JVM 的解决方案以处理 cpu 繁重任务的需要。

于 2016-08-26T09:37:59.467 回答
0

NodeJS 基于用 c++ 编写的 v8 javascript 引擎。

因此,可以用 C++ 为 NodeJS 编写完全原生的插件。查看其中一些资源:

于 2019-03-06T05:49:17.637 回答