问题 如何将Java与nodejs集成以处理CPU繁重的任务?


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


7844
2017-08-02 13:34


起源

最简单的方法是测试它,看看各种技术如何满足您的要求。还要记住,基础设施并不像10年前那么昂贵。如今,创建新的服务器实例以支持负载是微不足道的。 - Mahesh Guruswamy
为什么选择其他技术,何时可以将cpu密集的JS代码外包给另一个线程?查看threads-a-gogo github.com/xk/node-threads-a-gogo 和其他nodejs线程工具:) - randunel
非常感谢,我们一直在寻找nodejs线程工具。我肯定会尝试。 :) - Gevorg Soghomonyan
您还可以查看本机c ++扩展。许多用例在Java中运行得比Node好,C ++运行得比Java好。 syskall.com/how-to-write-your-own-native-nodejs-extension/... - ChrisCM


答案:


您可以使用Java将NodeJS与Java集成 节点的Java


13
2017-09-17 13:59



非常感谢,我也会尝试。 - Gevorg Soghomonyan


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


2
2017-07-27 22:00



感谢你的回答。 3年前问过这个问题。目前的结论:像兔子mq或kafka(作为分布式解决方案)这样的消息代理实际上可以帮助避免进行这些类型的集成。此外,计算繁重的任务可以委托给apache spark等专用模块。总的来说,在这个阶段,lambda架构是我相信的问题的答案。 - Gevorg Soghomonyan


答案是 lambda体系结构

NodeJ本身很不错 - 以轻量级方式处理快速查询,而不对数据进行任何额外的计算。

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

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

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


0
2017-08-26 09:37