我如何将一个更快的语言与Express.js后端集成?
一些背景:我目前正在一个运行在Azure服务器上的网站上工作。 这本质上是一个奇怪的MEAN堆栈,因为MongoDB部分被Azure的原生NoSql数据库DocumentDB取代。
网站的输出需要大量的常量数据处理,随着网站的增长,JavaScript被certificate是太慢了。 所以,
-
如果我使用node-gyp将C ++编译为Javascript ,那么代码最终是否以Javascript运行,并且会降低使用C ++的速度优势?
-
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”更好。
- node-compute-cluster:跨多个进程分配计算https://github.com/lloyd/node-compute-cluster
- 神经元:最简单的事件驱动作业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。
如果您需要某些实时性能要求,则需要添加更多实例来按照我的体验来扩展节点服务。
最好的祝福。
- 错误:错误:密码authentication失败的用户“electron_release_server_user”
- 如何解决Azure中的500.1002错误?
- Cordova Azure – 错误请求 – types错误:无法读取未定义的属性'listRegistrationsByTag'
- Azure移动服务 – 获取更多用户信息
- 移动服务Azure存储访问策略读取和写入
- 成功将base64映像保存到Azure Blob存储,但blob映像始终损坏/小的白色框
- Azure上的Node.js + MongoLab,如何防止网站闲置?
- 有没有人成功地使用Azure AD对Node.js Web应用程序的用户进行身份validation?
- 您无权查看Azure Ionic App的此目录或页面