目标:我想并行生成多种类型的数据(充分利用我的多核CPU),而不是每个进程都有自己的堆内存。从而提供更大的进程内存和增加执行速度。
我计划使用node fibers来处理回调,这也是meteor js所使用的。但我不确定这是否能实现我的目标,因为在由Chris Mather制作的meteor fibers视频中,最终所有内容都是单线程的,并且node fibers以某种方式管理同一单线程事件循环以提供其功能。
所以,
这是否意味着,如果我使用Node Fibers,我将不会并行运行我的任务,因此无法利用我的CPU核心?
Node webworker-threads 是否能帮助我实现所需的功能。正如模块主页上所述,WebWorker线程将在单独/并行的CPU进程中运行,从而真正提供多线程?
最后一个问题是,这是否意味着Node.js不适合这样的CPU密集型任务?
注:我不想使用被呈现为线程的异步代码结构库,但实际上只是在同一异步代码上添加语法糖,因为任务大部分是CPU密集型的。我已经尽可能地使用了异步功能。
// 更新1(基于群集的答案)
抱歉,我忘记提到的是,我遇到的群集问题是:
复杂的负载均衡使我拥有的工作量以一种确保特定的一组并行任务在某些其他任务之前执行的方式执行。
不确定集群是否真正实现了我想要的,参考webworker-threads npm首页上的这些行
"不能阻塞事件循环"问题是Node事件模型固有的问题。无论您运行多少个Node进程作为Node集群,它都无法解决CPU绑定任务的问题。
.....任何关于如何解决这个问题的建议都会有帮助。