cpu密集型服务,node.js如何实现多线程
发布于 13 年前 作者 linmomo02 25200 次浏览 最后一次编辑是 8 年前

我知道node.js中对IO操作都是非阻塞的方式进行的。但有的是后服务需要处理一些逻辑,比如使用Buffer数据数据,这个时候怎么实现非阻塞呢,我们之后node是单线程的,或者怎么实现多线程呢。谢谢大牛们指导。

13 回复

拆分成 流控制进程 和 计算进程 ?

可以用C++写,nodejs异步分配任务。尽量不要用nodejs进行CPU密集操作

可以使用 node-threads-a-gogo 在node中使用线程

我不知到我的操作算不算cpu密集型的,我的操作只是使用Buffer构造一些数据下发给客户端, 这样算cpu密集吗?

用CLuster或者用Nigix做负载均衡器

个人比较倾向nigix+cluster的方式,比较简单

@linmomo02 不好说,你可以测试下性能。更重要的是看这个操作会阻塞多久,阻塞的操作对node性能影响很大,不是cluster或nginx的负载均衡可以解决的。

@linmomo02 cluster限于全部用node做server的,nigix没有这个限制。你的问题我觉得不是这个。如果要读写大文件的话可以试试mongodb gridfs

可以调用或请求用其他适合多线程操作的语言实现的服务

我最近也在思考这个问题,比如我想使用nodejs来访问数据库,然后将查询出来的数据发往浏览器。但是我们知道nodejs查询数据库是异步的,她并不会立即返回,所以这样就造成了阻塞。我本来想写一个线程池来处理这个问题,但是苦于不知道如何用代码实现,求大神指导。谢啦

你好,既然nodejs查询数据库是异步的,查完后就调用回调函数,为何会造成了阻塞?

@mingenhuang 我觉得大量的排队会失去响应

回到顶部