我知道node.js中对IO操作都是非阻塞的方式进行的。但有的是后服务需要处理一些逻辑,比如使用Buffer数据数据,这个时候怎么实现非阻塞呢,我们之后node是单线程的,或者怎么实现多线程呢。谢谢大牛们指导。
回复 (13)
F
引用 mingenhuang你好,既然nodejs查询数据库是异步的,查完后就调用回调函数,为何会造成了阻塞?
@mingenhuang 我觉得大量的排队会失去响应
F
拆分成 流控制进程 和 计算进程 ?
J
cluster撒。
L
可以用C++写,nodejs异步分配任务。尽量不要用nodejs进行CPU密集操作
X
可以使用 node-threads-a-gogo 在node中使用线程
L
引用 luinlee可以用C++写,nodejs异步分配任务。尽量不要用nodejs进行CPU密集操作
我不知到我的操作算不算cpu密集型的,我的操作只是使用Buffer构造一些数据下发给客户端, 这样算cpu密集吗?
T
用CLuster或者用Nigix做负载均衡器
L
引用 tank00用CLuster或者用Nigix做负载均衡器
个人比较倾向nigix+cluster的方式,比较简单
L
引用 luinlee可以用C++写,nodejs异步分配任务。尽量不要用nodejs进行CPU密集操作
@linmomo02 不好说,你可以测试下性能。更重要的是看这个操作会阻塞多久,阻塞的操作对node性能影响很大,不是cluster或nginx的负载均衡可以解决的。
I
我最近也在思考这个问题,比如我想使用nodejs来访问数据库,然后将查询出来的数据发往浏览器。但是我们知道nodejs查询数据库是异步的,她并不会立即返回,所以这样就造成了阻塞。我本来想写一个线程池来处理这个问题,但是苦于不知道如何用代码实现,求大神指导。谢啦
M
引用 icecream我最近也在思考这个问题,比如我想使用nodejs来访问数据库,然后将查询出来的数据发往浏览器。但是我们知道nodejs查询数据库是异步的,她并不会立即返回,所以这样就造成了阻塞。我本来想写一个...
你好,既然nodejs查询数据库是异步的,查完后就调用回调函数,为何会造成了阻塞?
T
引用 tank00用CLuster或者用Nigix做负载均衡器
@linmomo02 cluster限于全部用node做server的,nigix没有这个限制。你的问题我觉得不是这个。如果要读写大文件的话可以试试mongodb gridfs
J
可以调用或请求用其他适合多线程操作的语言实现的服务
参与回复
登录后即可参与回复。登录