node.js 的作业队列
Jobs queue for node.js
背景
在一个开源项目上工作,我们有很多后端处理任务,有些繁重,有些轻量级,速度非常快。
我们决定使用作业队列来处理不同的作业,因为使用队列我们可以扩大消费者的规模,从而一次执行更多的作业,并保证即使 worker 崩溃也能实际执行作业。
要求
可靠性很重要。我们希望能够确保每个作业都已完成,即使执行它的工作人员崩溃、队列崩溃或系统崩溃。
我们还希望能够在超载队列上扩展工作模块。
From RabbitMQ's tutorial, 我已经看到它有可靠的模式(对于工作,以及通道,所以如果有任何崩溃,工作不会丢失)并且支持完全按照我想要的缩放,但是它不使用 Redis(我不知道它是赞成还是反对)。
我也研究过 Kue,但是它 API 相当麻烦,而且我无法立即判断它是否适合我。
我还听说过 Disque(来自 Redis 的作者)、Bull、Kafka 等,并对可用技术的数量感到困惑。
是否有人熟悉不同的队列技术,并且可以根据要求说出最适合该项目的技术?
不是 Kafka - 它的目的不是一般的作业/工作队列。它是一个分布式偶数日志和事件队列,用于其他目的(事件源等)。
否则,选择一个并运行。 Kue 或 Disque 或 RabbitMQ 或 ZeroMQ 或 Gearman 或其他什么。他们都会为你工作。他们都有权衡,但你上面描述的并没有告诉我任何选项都是不可能的。
就个人而言,我更喜欢 RabbitMQ。我喜欢集中式代理模型,并且在消息队列系统方面工作了多年,我喜欢 RabbitMQ 将许多优秀分布式系统的模式和实践融入其中的方式。我喜欢手动确认消息已被处理、将其从队列中删除或进程崩溃并将消息返回到队列的功能。在我看来,RabbitMQ 有很多值得喜欢的地方。
不过其他选项都可以。随便选一个就可以了。
(FWIW,我在 http://rabbitmq4devs.com 提供了 RabbitMQ for Node Developers 培训包)
背景
在一个开源项目上工作,我们有很多后端处理任务,有些繁重,有些轻量级,速度非常快。
我们决定使用作业队列来处理不同的作业,因为使用队列我们可以扩大消费者的规模,从而一次执行更多的作业,并保证即使 worker 崩溃也能实际执行作业。
要求
可靠性很重要。我们希望能够确保每个作业都已完成,即使执行它的工作人员崩溃、队列崩溃或系统崩溃。
我们还希望能够在超载队列上扩展工作模块。
From RabbitMQ's tutorial, 我已经看到它有可靠的模式(对于工作,以及通道,所以如果有任何崩溃,工作不会丢失)并且支持完全按照我想要的缩放,但是它不使用 Redis(我不知道它是赞成还是反对)。
我也研究过 Kue,但是它 API 相当麻烦,而且我无法立即判断它是否适合我。
我还听说过 Disque(来自 Redis 的作者)、Bull、Kafka 等,并对可用技术的数量感到困惑。
是否有人熟悉不同的队列技术,并且可以根据要求说出最适合该项目的技术?
不是 Kafka - 它的目的不是一般的作业/工作队列。它是一个分布式偶数日志和事件队列,用于其他目的(事件源等)。
否则,选择一个并运行。 Kue 或 Disque 或 RabbitMQ 或 ZeroMQ 或 Gearman 或其他什么。他们都会为你工作。他们都有权衡,但你上面描述的并没有告诉我任何选项都是不可能的。
就个人而言,我更喜欢 RabbitMQ。我喜欢集中式代理模型,并且在消息队列系统方面工作了多年,我喜欢 RabbitMQ 将许多优秀分布式系统的模式和实践融入其中的方式。我喜欢手动确认消息已被处理、将其从队列中删除或进程崩溃并将消息返回到队列的功能。在我看来,RabbitMQ 有很多值得喜欢的地方。
不过其他选项都可以。随便选一个就可以了。
(FWIW,我在 http://rabbitmq4devs.com 提供了 RabbitMQ for Node Developers 培训包)