前几天对某个团队分享tomcat的时候,有人提到tomcat早前也有aio的概念,我以为是基于java7的NIO2,但对方说是早期版本就有的。我只对7比较熟悉,之前的版本不太了解,没有确认。今天google了一下估计是理解错误,把tomcat里的Advanced IO误以为Async IO
。
Adavanced IO是指APR或NIO模式下可以提供一些扩展,主要是通过Comet
以及sendfile
实现异步IO的效果。Comet
是个过渡技术,相比websocket
或spdy
有些过时。sendfile
对于较大的静态文件比较有用,但不支持AJP协议。在APR和NIO下实现方式也不同,APR模式下是有一个专门的线程负责,通过jni调用tcnative里的sendfile本地实现;而NIO模式下则是通过FileChannel.transferTo
来实现。