根据这个包装https://github.com/OptimalBits/bull#documentation



我的问题是:

公牛会自动使用多核CPU,因为node.js在单线程上运行。
如果是的话,在Bull中使用多核确实可以运行后台任务,例如大规模的mongodb-updates(更新我的user-profile-avatar将在req/res循环中运行,而在很多引用文档的更新中,例如友谊中收集应该在后台运行),这可能需要几分钟或几小时的时间,因此,直到网络的所有用户都看到新的化身为止,花费几分钟甚至几小时的时间用户甚至都不会注意到。或者,它们是用阻塞代码表示的,阻塞代码是像CPU繁重的任务一样阻塞Event-Loop的代码,而不是像数据库查询那样阻塞I/O操作的代码。

我将不胜感激。

最佳答案

Bull只是node.js的库,它并没有改变node.js在单个线程上运行的事实。因此,您不能指望Bull解决您的单线程问题,但是Bull可以帮助您解决这一问题。

  • Bull可以生成子进程(每个作业的沙盒化进程)
  • 是的,在自己的应用程序/进程中运行繁重的任务很有意义。您可以为您的任务创建微服务,也可以仅在Bull生成的子进程中运行后台任务。

  • 我不理解您其余的问题(从谈论大量的mongodb查询开始)。

    旁注:您通常希望避免在MongoDB中引用。 MongoDB查询通常非常繁琐和/或缓慢。相反,您想要对数据进行非规范化,即使这可能导致重复存储的数据。

    关于node.js - node.js运行单线程时 “bull”是否利用多核,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47538191/

    10-11 06:28