我已经开始尝试使用Node.js
HTTP服务器,并且真的很想编写服务器端Javascript,但是有些事情使我无法开始在Web应用程序中使用Node.js。
我了解整个异步I / O概念,但我对程序代码占用大量CPU资源的极端情况(如图像处理或对大型数据集进行排序)感到有些担忧。
据我了解,对于简单的网页请求(例如查看用户列表或查看博客帖子),服务器将非常快。但是,如果我想编写非常占用CPU的代码(例如在管理后端),以生成图形或调整成千上万张图像的大小,则请求将非常缓慢(几秒钟)。由于此代码不是异步的,因此在那几秒钟内到达服务器的每个请求都将被阻止,直到我的慢请求完成为止。
一种建议是使用Web
Workers执行CPU密集型任务。但是,恐怕网络工作者会很难编写干净的代码,因为它可以通过包含一个单独的JS文件来工作。如果CPU密集型代码位于对象的方法中怎么办?为每个占用大量CPU资源的方法编写JS文件实在是太糟了。
另一个建议是产生一个子进程,但这会使代码的可维护性降低。
有什么建议可以克服这个(公认的)障碍?如何在确保CPU繁重任务异步执行的同时,使用Node.js编写干净的面向对象的代码?
您需要的是一个任务队列!将长时间运行的任务移出Web服务器是一件好事。将每个任务保存在“单独的”
js文件中可促进模块化和代码重用。它迫使您考虑如何以某种方式构造您的程序,从长远来看,它将使调试和维护变得更加容易。任务队列的另一个好处是可以用不同的语言编写工作人员。只需弹出一个任务,执行工作,然后将响应写回即可。
像这样的东西https://github.com/resque/resque
这是github上的一篇文章,介绍了他们为什么建立它http://github.com/blog/542-introducing-
resque
问题内容: 我在某处读到setInterval占用大量CPU的信息。我创建了一个使用setInterval的脚本,并监视了CPU使用率,但没有发现任何变化。我想知道是否有什么我想念的。 代码要做的是每100毫秒检查一次URL中的哈希值(#后面的内容)是否更改,如果更改了,请使用AJAX加载页面。如果未更改,则什么都不会发生。会不会有CPU问题。 问题答案: 我认为不会从本质上引起您严重的性能问题。
问题内容: 我需要一些易于实现的单个cpu和内存密集型计算,可以用Java为测试线程调度程序编写这些计算。 它们应该花费一些时间,但是更重要的是消耗资源。 有任何想法吗? 问题答案: CPU密集型任务的一些简单示例: 搜索质数(涉及许多BigInteger部门) 计算大阶乘,例如2000!((涉及许多BigInteger乘法) 许多Math.tan()计算(这很有趣,因为Math.tan是本机的,
问题内容: 我一直在想办法在python脚本中使用它,以使其在不同的间隔执行作业。伪代码如下所示: 总而言之,程序将hibernate直到需要执行下一个作业。它运行该作业,找到要运行的下一个作业,然后hibernate直到需要运行下一个作业(继续到无穷大)。我打算在Linux机器上运行它- 使用cron作业是可能的。有人对此有意见吗? 问题答案: 不,它不占用CPU。 该文件说: 暂停执行指定的秒
问题内容: 按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 您将什么视为CPU密集型任务。就……而言,例如是一种算法/代码(与其说是像视频编辑之类的用例,不如说是用例)。原因似乎是不使用NodeJS的主要原因,我真正喜
我正在使用pkcs7加密解密在当前的项目。我想从PHP改为Node.js。node.js中有pkcs7加密/解密吗? 在PHP中, 解密 node.js中有类似这样的功能吗?
我当前在解密服务器上的RSA加密数据时遇到了问题,服务器使用Node.js并使用node-rsa库进行加密/解密。 在我的Android客户端上没有任何问题地接收到公钥,但是当尝试解密数据时,我得到了以下异常: 这就是我在客户端上生成公钥的方式 以下是客户端的加密: