Node.js库,用于执行长时间运行的后台任务

我有一个带有express.js网络服务器的体系结构,该服务器通过REST API接受新任务。

此外,我必须具有另一个进程来创建和监督其他服务器(分布式系统)上的许多其他任务。此过程应在后台运行,并运行很长时间(几个月,几年)。

现在的问题是:

1) 我是否应该创建一个任务队列(例如bull.js / Redis或Celery / Redis)的单个Node.js应用程序,而该队列基本上从一开始就启动了这个长期运行的任务。

2) 我是否应该有两个进程,一个用于REST API,另一个进程用于调度和管理分布式系统中的任务?

我非常倾向于解决方案2)。

绘制:

Node.js库,用于执行长时间运行的后台任务

fangshijie66 回答:Node.js库,用于执行长时间运行的后台任务

我现在正面临着同样的问题。我们知道nodejs在单线程中运行。但是我们可以为并行程序创建工作程序,或者处理一些我们不想影响主服务器的函数。幸运的是,nodejs支持多线程。

看看这个例子:

alert("Hello world")

https://nodejs.org/api/worker_threads.html

搜索一些有关nodejs中多线程的文章。但请记住,状态不能与线程共享。您可以使用诸如kafka,rabbitmq(我推荐),redis之类的消息代理来处理此类需求。

kafka在生产中很难配置。 rabbitmq很好,因为您也可以在本地存储中存储消息,队列和..。但是我个人找不到用于平衡这些线程的任何合适的解决方案。也许这不是您的答案,但我希望您能从这里得到一些线索。

本文链接:https://www.f2er.com/3103541.html

大家都在问