【问题标题】:Nodejs promise queue vs cluster modeNodejs 承诺队列与集群模式
【发布时间】:2019-05-15 13:08:15
【问题描述】:

我有一个 Node.js 脚本,它从服务器获取任务并对数据执行一些操作。
它在内部运行一个 while(true) 循环,在该循环中它从服务器获取任务,等待其完成并将结果推送回服务器。

我想扩展它,可以同时执行许多任务。 于是我发现了两个选择:

  1. 使用promise queue。例如。获取任务,放入队列
  2. 只准时处理一项任务,但运行许多脚本实例(在集群模式下?)

我想知道哪个更好,如果使用第二个选项会比第一个消耗更多的内存吗?

【问题讨论】:

  • 在 nodejs 实现中有一个while(true) 循环真的让我很震惊。你是否使用库来处理你的请求?
  • 是的,这只是一个 http 请求,所以我使用 axios。我考虑将while(true) 更改为其他内容,可能是“EventEmitter”
  • 哦,好吧,它是一个客户端,我以为你在实现一个服务器。好的,但setInterval() 似乎更适合这个问题
  • 如果您将运行脚本的几个实例,您将如何管理应该处理来自服务器的请求的实例?您需要知道idle 是什么实例,并向该实例发送请求。我认为运行一个实例更有意义。
  • 我认为不是这样,因为客户端根据请求从服务器获取任务,所以如果它空闲,它只是请求任务

标签: node.js promise


【解决方案1】:

所以,我使用 RabbitMQ 作为消息队列。它的客户端库amqplib 消除了while(true) 循环的使用,您可以通过产生更多进程来大大扩展它。也可以通过将prefetch count设置为大于1的值同时处理多个任务。

【讨论】:

    猜你喜欢
    • 2018-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-28
    • 2014-12-29
    • 1970-01-01
    • 2019-11-22
    相关资源
    最近更新 更多