如何将快速语言与Express.js后端集成?

时间:2015-09-04 02:05:58

标签: javascript c++ node.js azure express

一些背景知识:我目前正在使用Azure服务器上运行的网站。它本质上是一个奇怪的MEAN堆栈,因为MongoDB部分被DocumentDB,Azure的本机NoSql DB取代。

网站的输出需要大量的常数数字运算,随着网站的增长,JavaScript被证明太慢了。所以,

  1. 如果我使用 node-gyp C ++ 编译为 Javascript ,代码最终是否以Javascript格式运行,并减损使用C ++的速度优势?

  2. Java是一种可行的替代计算机吗?这是在计算速度,内存使用和必须与Javascript通信方面。

  3. 其他一些信息:

    • 该网站不断从Chrome插件中提取信息,并将其输入数字计算器。
    • 正在评估的值包含浮点数,整数,字符串和布尔值,它们来自DB和运行值,以及写入数据库。

    P.S。请不要建议使用C#而不是Java。我知道它很好地融入了Azure,但我没有使用它,现在还没有时间学习。

    编辑:提出更好的问题。

1 个答案:

答案 0 :(得分:1)

NodeJS使用事件驱动的单进程/线程模型。它不适合CPU密集度计算。如果你有一个数字计算器在一个事件请求中花费了大量的cpu时间,那么Node的事件循环将被阻止。

因此,如果您需要进行CPU密集度计算,我认为您可以使用Node API' child_process.spawn'将子进程作为worker来分叉。您可以参考https://nodejs.org/api/child_process.html

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

  1. node-compute-cluster:跨多个进程分发计算https://github.com/lloyd/node-compute-cluster
  2. neuron:最简单的事件驱动作业管理器,FIFO队列和基于任务的缓存" https://github.com/flatiron/neuron
  3. 如果您只需要后端工作,我建议您使用WebJob& Azure上的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(Azure上的Java WebJob)作为计算主力,并使用Azure上的ServiceBus与NodeJS进行通信。

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

    如果您需要一些实时性能要求,则需要添加更多实例以根据我的经验扩展节点服务。

    最诚挚的问候。