Node.js 在节点中运行后台任务需要什么?

Node.js 在节点中运行后台任务需要什么?,node.js,background-process,kue,Node.js,Background Process,Kue,如果我的理解是正确的,那么处理后台任务是释放cpu绑定任务的主线程的好方法 我不知道bull或kue之类的系统使用什么来运行主线程之外的任务 他们使用线程吗?它们是否需要整个节点进程分支?它们会产生子进程吗?Bull是基于它自己的进程中处理这些作业的数据处理和排队的。 它是一个轻量级、健壮且快速的作业处理队列。它使用redis进行持久化,因此,如果服务器因任何原因停机,队列不会丢失 可以看到作业的内部实现 Kue模块也是如此,它是一个由redis进程支持的优先级作业队列,为node.js构建。后

如果我的理解是正确的,那么处理后台任务是释放cpu绑定任务的主线程的好方法

我不知道bull或kue之类的系统使用什么来运行主线程之外的任务

他们使用线程吗?它们是否需要整个节点进程分支?它们会产生子进程吗?

Bull是基于它自己的进程中处理这些作业的数据处理和排队的。 它是一个轻量级、健壮且快速的作业处理队列。它使用redis进行持久化,因此,如果服务器因任何原因停机,队列不会丢失

可以看到作业的内部实现

Kue模块也是如此,它是一个由redis进程支持的优先级作业队列,为node.js构建。后台任务由Redis提供动力

这意味着这些模块依赖于Redis外部进程,该进程支持创建不同的后台作业

作业特定事件通过Redis pubsub在作业实例上激发:

  • 排队
    作业现在已排队
  • 升级
    作业从延迟状态升级为排队状态
  • 进度
    作业的进度范围为0-100
  • 尝试失败
    作业已失败,但仍有剩余的尝试
  • 失败
    作业已失败,并且没有剩余的尝试
  • complete
    作业已完成
  • 删除
    作业已删除

延迟的作业由Redis队列提供动力,Redis队列通知/触发模块中的回调

node.js不是这样工作的。Node.js在内部使用事件循环来处理请求(从而使其成为事件驱动的框架)

整个事件循环在单个线程中运行。当您执行长时间运行的命令(如I/O或网络操作)时,请求将进入循环队列,进程不会阻塞。当操作完成时,它会在代码中触发回调


这很有趣,我不知道bg任务可以从外部非节点过程中受益。redis流程的功能是什么?它是多进程的吗?螺纹?它是单线程的吗?Redis是一个开源(BSD许可)的内存数据结构存储,用作数据库、缓存和消息代理。Redis是单线程的,带有epoll/kqueue,在I/O并发性方面可以无限扩展--@安特里兹(Redis的创造者)@塔拉维萨,你似乎很了解奎。你介意花点时间看看我的电脑吗?谢谢你有图像的来源吗?