请问node在处理密集计算的时候都有哪些方案呢
发布于 9 年前 作者 RocketsZn 4573 次浏览 最后一次编辑是 8 年前 来自 问答

如题,既然业务逻辑都以单线程进行处理,那如果其中包括耗时的复杂计算,该如果处理?有哪些比较成熟的方法?

10 回复

rpc 的方式让其他编译型语言处理,node 只负责搬运

@alsotang 也就是说node负责接受请求、执行io、发送回复,其他逻辑由擅长计算的语言处理吗?

@alsotang 多谢!BTW,如果钻牛角尖的话,nodejs可否实现多线程或者多进程来解决计算问题?

@RocketsZn 哈哈,不算钻牛角尖。不推荐这么做。

多线程反正是肯定不行的。多进程当然可以。不过既然都多进程了,肯定也是 rpc 通信,那么你还是愿意选择 node 的话,也可以啊。

不管你选的是什么,web server 这边已经不感知了。选不选 node 只取决于你的架构判断,而不受 node 本身什么的限制。

… 有锤子就不用小米的吗? 自豪地采用 CNodeJS ionic

@fengmk2 同时是锤粉和米粉的,咋办?

@RocketsZn 看你的计算量,如果不大,用c写了给javascript调用,访问量不是太大,响应时间以接受就这么搞,c和js速度差距10倍还是有的,当然主要看你是什么应用。如果这样不行,就得用其他进程或机器了,就是版主的方法。至于多线程要看你的技能点,原来折腾过的可以考虑,libuv提供线程池等基础设施的,参考fs代码写就行了。

我个人是比较赞同版主的方法,直接,通用,易于扩展。直接调用和多线程一方面代码不是太好看,如果将来计算量再增加,扩展的话就等于重做,那还不如一步到位。

如同alsotang所说,业务逻辑交给node,便于快速开发。其他内容交给其他语言,或者直接交给cpp,用node gyp编译一下~

来自炫酷的 CNodeMD 越来越喜欢material design😁

回到顶部