我会比较这两种方法的Java和NodeJS的例子。当然,如果你愿意,你可以选择其他语言。非阻塞IO + fork/join VS标准多线程管理
我们有什么: 如您所知,非阻塞IO成为编写高负载系统的主流。如您所知,NodeJS是单线程非阻塞IO,具有clustering possibilities。这意味着,我们可以有多个单线程服务器,而不是一个多线程服务器。而Java同时具有:非阻塞IO库(Netty和基于它的框架,如Play框架)和传统多线程(不基于事件),它为程序员提供所有线程管理。
我的困惑:我听到很多抱怨传统的多线程,大约是多么困难调试这些程序和他们与非阻塞IO相比是相当缓慢的。另一方面,我听到很多关于非阻塞IO的恭维,比如Node,以及如何轻松地将它扩展到带有fork/join库的多线程程序。
所以,如果非阻塞IO是那么好 问题:当我们仍然可以从传统(基于事件没有)多线程获得优势与非阻塞IO相比?
P.S.有人曾经写过应用程序,你有很多单线程非阻塞IO服务器,只是分配它们之间的负载?
非阻塞I/O是“非常好”完全是一个谬误;谷歌周围,你会发现,“传统”的做事方式也是如此,如果不是更好。时下,分线是“便宜”的。 – fge 2014-10-31 10:39:05
@fge,但是在Node和Java上都有很多已经写好的网站。实践说什么?他们每个人的表现都有评论吗?你可以提供一些资源/文献吗? – 2014-10-31 11:47:17