用java / scala代码连接node.js进程的最快方法

我有一个用java / scala实现的计算库。 而且我还有一点node.js代码服务于我的应用程序。 我需要find一个方法,如何将这两个世界连接起来,获得最大的性能,但也要考虑到简单性。 我正在考虑通过共享内存进行内部进程通信,但在node.js中找不到任何成熟的方法

这应该主要作为代理机制从node.js代码中调用一些java(理想的是任何)代码。 从node.js到java端,只会请求元数据传递,但是从java到node.js,有时它可能是重要的数据返回(比方说100-200 kb作为上边界,大约90-1000字节案件)然而,这个要求的数额可能是重大的。

考虑OpenMP可能是一个选项,但也找不到Node的任何openmp协议实现。 但是对于java也没有明确的项目。


看起来目前有几种select:

  1. 本地扩展+ Java不安全(目前通过reflection提取,应该在JDK 9中打开),并且在基于C / C ++的环境中使用共享内存(需要调查和开发,放松节点 – > c – > Java可能高于共享内存的好处)
  2. 使用套接字(在Linux上相当快,不知道有关Windows,跨平台)
  3. FastCGI(仍然使用套接字转换,所以会比1选项慢)
  4. ZeroMQ / Nanomessage作为传输层(再次插槽里面,但简化了开发)
  5. @大卫的回答。 但是不能说任何具体的事情。 需要调查。

那么,如果套接字对你来说太慢,为什么不把它保持在进程中呢?

你可以尝试:

  1. 在Nodyn上运行未经修改的Node.js脚本,该脚本依次在JVM上的DynJS 运行; -要么-
  2. 如果您对Node.js堆栈没有特别的了解,但是像JVM上的极其无等待吞吐量的想法,则将其全部编码到vert.x中 。

注意 :Nodyn / DynJS的替代scheme将是 Avatar.js项目,该项目使用Nashorn ,而Nashorn则随附最近的JVM,并使用最新和最好的字节码操作符。 但在2015年年底,Avatar.js项目感觉被抛弃了。 : – \