我如何将一个更快的语言与Express.js后端集成?

一些背景:我目前正在一个运行在Azure服务器上的网站上工作。 这本质上是一个奇怪的MEAN堆栈,因为MongoDB部分被Azure的原生NoSql数据库DocumentDB取代。

网站的输出需要大量的常量数据处理,随着网站的增长,JavaScript被certificate是太慢了。 所以,

  1. 如果我使用node-gypC ++编译为Javascript ,那么代码最终是否以Javascript运行,并且会降低使用C ++的速度优势?

  2. Java是一个可行的select作为计算主力吗? 这是计算速度,内存使用情况,并与Javascript沟通。

一些额外的信息:

  • 该网站不断从铬插件提取信息,并将其送入数字计算器。
  • 正在评估的值包括浮点数,整数,string和布尔值,并且来自DB和运行值以及写入数据库。

PS请不要build议C#而不是Java。 我知道它已经被很好地整合到了Azure中,但我没有使用它,现在也没有时间去学习。

编辑:问一个更好的问题。

NodeJS使用事件驱动的单进程/线程模型。 不适合CPU密集度计算。 当一个数字计算器在一个事件请求中花费大量的CPU时间时,Node的事件循环将被阻塞。

所以,如果你需要做CPU密集度计算,我认为你可以使用Node API'child_process.spawn'来分派一个subprocess作为worker。 你可以参考https://nodejs.org/api/child_process.html

NodeJS有一些简单的库比API“child_process”更好。

  1. node-compute-cluster:跨多个进程分配计算https://github.com/lloyd/node-compute-cluster
  2. 神经元:最简单的事件驱动作业pipe理器,FIFO队列和“基于任务的caching” https://github.com/flatiron/neuron

如果您只需要后端作业,则build议在Azure上使用WebJob和ServiceBus。 请参阅https://azure.microsoft.com/en-us/documentation/articles/web-sites-create-web-jobs/和https://azure.microsoft.com/en-us/documentation/articles/ service-bus-nodejs-how-to-use-queues / 。

当然,您可以使用Java(Java WebJob on Azure)作为计算主力,并使用Azure上的ServiceBus与NodeJS进行通信。

如果你需要大量的数字计算,我认为Python与NumPy可能是最好的语言select。

如果您需要某些实时性能要求,则需要添加更多实例来按照我的体验来扩展节点服务。

最好的祝福。