gpt4 book ai didi

java - 将 node.js 进程与 java/scala 代码连接起来的最快方法

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:31:58 24 4
gpt4 key购买 nike

我有一个用 java/scala 实现的计算库。我也有一些 node.js 代码为我的应用程序服务。我需要找到一种方法,如何以最高性能连接这两个世界,同时还要考虑简单性。我正在考虑通过共享内存进行进程间通信,但在 node.js 中找不到任何成熟的方法来做到这一点

这应该主要用作从 node.js 代码调用一些 java(最好是任何)代码的代理机制。从 node.js 到 java 端,它只会请求元数据传递,但是从 java 到 node.js 有时可能会返回大量数据(假设 100-200 kb 作为上边界,90% 的数据中大约有 600-1000 字节)案例)但是,请求的数量可能很大。

认为 OpenMP 可能是一个选项,但也找不到任何适用于 Node.js 的 openmp 协议(protocol)实现。但是也没有明确的 java 项目。


目前看来有几种选择:

  1. native 扩展 + Java 不安全(目前通过反射提取,应在 JDK 9 中打开)并在基于 C/C++ 的环境中使用共享内存(需要调查和开发。Node -> c -> Java 的损失可能高于共享内存的好处)
  2. 使用套接字(在 linux 上相当快,不确定 Windows,跨平台)
  3. FastCGI(内部仍然使用套接字传输,因此会比 1 个选项慢)
  4. ZeroMQ/Nanomessage 作为传输层(同样是内部套接字,但简化了开发)
  5. @David 的回答。但是不能说任何具体的事情。需要调查。

最佳答案

好吧,如果套接字对您来说太慢了,为什么不让它在进程中呢?

你可以试试:

  1. Nodyn 上运行未经修改的 Node.js 脚本依次运行 DynJS 在 JVM 上-或-
  2. 如果您对 Node.js 堆栈不是特别感兴趣,但喜欢 JVM 上的极端无等待吞吐量的想法,请将其全部编码在 vert.x 中。 .

注意:Nodyn/DynJS 的替代方案本来 Avatar.js项目,它使用 Nashorn ,它又随最新的 JVM 一起提供,并使用最新最好的字节码运算符。然而在 2015 年底,Avatar.js 项目感觉被遗弃了。 :-\

关于java - 将 node.js 进程与 java/scala 代码连接起来的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33524697/

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