2011-12-09 98 views
2

之前,当我使用Django时,我需要一个队列来在幕后做些沉重的事情。 (可能需要1秒或更多,点击数据库,请求等)。如果我使用node.js,我还需要队列服务吗?

如果我使用的是Node.js,我还需要一个队列吗?我可以异步执行node.js中的所有重要内容吗?

+1

重的东西是异步的。它不会阻塞任何东西。你不需要一个队列 – Raynos

回答

1

如果你正在举重,你可能需要一个队列。

关于node.js的性质,有一个事件队列,并且(大多数情况下)一次只有一件事情发生。

有关的node.js的好处是很多的库中的代码是异步的 - 例如,你的数据库驱动程序对数据库的请求,然后让别的发生在节点事件循环。因此,您可以在等待数据库返回给您时处理新的传入请求。

node.js的坏处是你的代码也必须担心阻塞事件队列。由于大型操作(即计算或同步数据库调用)意味着您的node.js应用程序未送达任何传入请求。

所以,如果你正在做一些“大”事情,你会想把它转储到一个事件队列中,这样你就不会阻塞主循环。

除了计算之类的东西之外,我甚至会说你想排队的事情,你不知道可能需要多长时间。例如,我最近的一个项目是Ruby on Rails中基于状态的工作流应用程序。当状态对象改变状态时,会调用任意数量的函数来推动工作流程。在node.js中,我将排队这些状态转换,因为我不知道随着应用程序开发和业务向应用程序添加新功能,许多函数将被添加到状态转换回调中。

我在white-paper I wrote on node.js中报道了这个阻塞的东西。它也涵盖了其他的东西,但异步部分有很多来自社区和最佳实践的链接,因为我明白这个东西

0

由于您在服务器应用程序外完成繁重的工作,因此不会阻塞服务器。

如果您拥有越来越多的并发连接,您可能稍后需要一个队列,以便您可以在进程之间分配工作。 Kue是一个很好的基于Node.js的队列。

相关问题