如何将更快的语言与Express.js后端集成?
How can I integrate a faster language with an Express.js backend?
一些背景:我目前正在做一个在Azure服务器上运行的网站。它本质上是一个奇怪的MEAN堆栈,因为MongoDB部分被DocumentDB取代,Azure的原生NoSql数据库。
网站的输出需要大量的常量运算,随着网站的增长,JavaScript被证明太慢了。
-
如果我使用node-gyp将 c++ 编译成Javascript,代码是否最终作为Javascript运行,并减少使用c++的速度优势?
-
Java是一个可行的替代计算主力吗?这是在计算速度,内存使用和必须与Javascript通信方面。
一些附加信息:
- 该网站不断地从chrome插件中提取信息,并将其输入数字计算器。
- 被计算的值包括浮点数、整数、字符串和布尔值,这些值来自数据库和运行值,以及写入到DB。
注:请不要建议用c#代替Java。我知道它已经很好地集成到Azure中,但我不用它,现在也没有时间去学习。
编辑:问一个更好的问题。NodeJS使用事件驱动的单进程/线程模型。它不适合用于CPU密度计算。当你有一个数字运算器在一个事件请求中花费大量cpu时间时,Node的事件循环将被阻塞。
所以如果你需要做CPU密度计算,我认为你可以使用Node API的child_process。派生一个子进程作为worker来完成它。您可以参考https://nodejs.org/api/child_process.html.
有一些简单的库可以让NodeJS做得比API "child_process"更好。
- 节点-计算-集群:跨多个进程分配计算https://github.com/lloyd/node-compute-cluster
- 神经元:最简单的事件驱动作业管理器,FIFO队列和"基于任务的缓存"https://github.com/flatiron/neuron
如果你只需要一个后端作业,我建议使用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可能是最好的语言选择。
根据我的经验,如果你需要一些实时性能要求,你需要添加更多实例来扩展节点服务。
致以最亲切的问候。
- '会话'未定义-会话存储的Este JS/Express/Redis
- 节点JS express和控制台输出到命令行与浏览器
- Node.js/Express未输出console.log,highcharts.js给出未定义的错误
- 使用React.js+Express.js发送电子邮件
- 基本node.js express身份验证不起作用
- node.js express处理其他.get尝试
- 在 Node.js(Express)Facebook 画布应用程序中获取signed_request
- Node.js & Express 不能用简单的 Bootstrap 表单发布/错误
- 节点.js + Express - 在完成之前返回未定义的回调
- Node.JS Express服务器无法从Enide运行
- TypeError:undefined不是node.js/express.js中的函数
- node.js-express.js API删除http后处理程序
- 如何使用Ember Ajax从Node JS Express传入数据
- Node.js/express,javascript回调函数未执行
- 在Heroku Node.js/Express应用程序上禁用HTTPS
- Node.js Express应用程序:如果存在cookie,则从服务器端向元素添加CSS类
- Node.js+Express+socket.io-socket.io服务不正常
- Node.js express应用程序无法从dropzone.js回调进行重定向
- 如何在 A 节点.js/Express 服务器上接收一些文件并将文件发送到 B 节点.js/express 服务器
- Node.js / Express :通过 ajax 下载文件