Cluster比Async快且容易

banq 15-05-26
         

Node.js的异步事件编程是其核心,但是我们必须注意不能堵塞住Node.js的event loop事件主循环,使用回调虽然可以解决这个问题,但是又会掉入回调陷阱,现在有两个方案可以完美解决,使用Async异步和Cluster模块,那么哪个方法更好呢?

来自Cluster is Faster and Easier Than Async文章推荐:通过Cluster使用更多的Event loop事件主循环,会好于在一个Event loop事件主循环内部使用Async异步防止堵塞的方法。



通过使用操作系统OS的多任务实现多个Event loop,这样就不必在一个Event loop中使用异步回调了。

该文比较了Cluster和Async的优缺点。

异步I/O和集群执行是互补的,可以任意混合。所有扩展超过一台服务器以上的Node.js程序都能使用Cluster执行。在结合Cluster运行时,所有现有的模块和异步I/O将继续正常工作。这个特性为传统遗留系统提供了一个直接的添加额外的性能的方法途径。

在Node.js中基于事件的异步回调不可避免,但是"将每件事都异步"既没有必要,也不能最好地利用机器资源,Node的event loop是轻量的,libuv是有效的,但是操作系统多任务可以做到一样快,而且能够利用到多核特点,开发人员应该考虑通过加入Cluster可以降低复杂性,带来性能的提升。

性能基准测试Github下载