一些背景知识:我目前正在使用Azure服务器上运行的网站。它本质上是一个奇怪的MEAN堆栈,因为MongoDB部分被DocumentDB,Azure的本机NoSql DB取代。
网站的输出需要大量的常数数字运算,随着网站的增长,JavaScript被证明太慢了。所以,
如果我使用 node-gyp 将 C ++ 编译为 Javascript ,代码最终是否以Javascript格式运行,并减损使用C ++的速度优势?
Java是一种可行的替代计算机吗?这是在计算速度,内存使用和必须与Javascript通信方面。
其他一些信息:
P.S。请不要建议使用C#而不是Java。我知道它很好地融入了Azure,但我没有使用它,现在还没有时间学习。
编辑:提出更好的问题。
答案 0 :(得分:1)
NodeJS使用事件驱动的单进程/线程模型。它不适合CPU密集度计算。如果你有一个数字计算器在一个事件请求中花费了大量的cpu时间,那么Node的事件循环将被阻止。
因此,如果您需要进行CPU密集度计算,我认为您可以使用Node API' child_process.spawn'将子进程作为worker来分叉。您可以参考https://nodejs.org/api/child_process.html。
NodeJS有一些简单的库比API" child_process"更好。
如果您只需要后端工作,我建议您使用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可能是最好的语言选择。
如果您需要一些实时性能要求,则需要添加更多实例以根据我的经验扩展节点服务。
最诚挚的问候。