首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >nodejs的工作队列?

nodejs的工作队列?
EN

Stack Overflow用户
提问于 2013-06-03 19:11:19
回答 3查看 27.6K关注 0票数 12

我正在使用节点的集群API和mongoose开始为节点编写工作队列。

我注意到很多libs已经这样做了,但是使用redis和叉。与使用集群API相比,是否有充分的理由进行分叉?

编辑,现在我也发现了这个:https://github.com/xk/node-threads-a-gogo --太多选项了!

我宁愿不添加红色的混合,因为我已经使用芒果。而且,我的需求非常松散,我希望持久化,但是对于第一个版本,我可以不使用它。

问题的第二部分:当今最稳定/使用的nodejs工作队列库是什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-01-21 16:20:24

想跟进这件事。我的解决方案最终是一个滚动--您自己的集群进程--我的集群工作人员中有一些是专职的工作人员(即他们只有代码可以处理作业)。

我使用议程进行作业调度。

Cron类型作业由群集主程序调度。其余的工作是根据需要在非工人集群中创建的。(核实电子邮件等)

在此之前,我使用库伊,但放弃了它,因为我的应用程序的其余部分使用mongodb,而且我不喜欢只为作业调度使用redis。

票数 7
EN

Stack Overflow用户

发布于 2013-06-12 15:01:47

你试过https://github.com/rvagg/node-worker-farm了吗?它的重量非常轻,不需要单独的服务器。

票数 7
EN

Stack Overflow用户

发布于 2013-06-12 22:02:17

我个人喜欢集束大师。

https://github.com/isaacs/cluster-master

我喜欢集群主程序的原因是,除了添加逻辑以分叉进程之外,它所做的事情非常少,并使您能够管理正在运行的进程的数量,并提供一点日志记录/恢复功能来启动!我发现过度膨胀的过程管理库往往是不稳定的,有时甚至会放慢速度。

如果下列情况属实,此库将对您有好处:

  • 您的模块主要是异步的。
  • 你不会有大量不同类型的事件触发
  • 触发的事件有少量的工作要做,但是您有很多类似的事件触发(比如web服务器)。

上面列出的原因,是线程-a-gogo可能对您有好处的原因,相反的原因。如果您的代码中有一些地方需要在事件循环中完成大量的工作,那么就像线程a-gogo那样专门为这项工作启动一个“线程”是很棒的,因为您并不是提前确定要生成多少工作人员,而是在需要时生成它们来完成工作。注意:这也可能是不好的,如果有很多他们可能产生,如果你开始启动太多的过程,事情实际上可能陷入困境,但我离题了。

总之,如果您的模块已经在很大程度上是异步的,那么您真正需要的是一个工作池。若要将进程不侦听事件时的停机时间最小化,并最大限度地使用处理器数量,请执行以下操作。除非您有一个非常繁忙的同步调用,否则单个节点事件循环在利用处理器的单个核心时都会遇到困难。在这种情况下,您最好使用集群-主.我推荐的是做一些基准测试,看看你的程序在“最坏的情况”下可以使用多少单个核心。假设这是一个核心的33%。如果您有一个四核机器,那么您就告诉集群主启动您的12名工作人员。

希望这能帮上忙!

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16904093

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档