我们一直希望在IO这一块能够以高性能的形式出现,所以迫切希望tomcat能够默认为NIO模式(实际默认为BIO);用NIO方式处理并发性能好的前提是每个请求耗时不能高,但是这样对现有的request response处理要有额外处理。如果不能达到这个要求,用 NIO反而会是整体性能下降(因为在整体的IO请求中如果很多响应都过慢整体上来说性能还是低的)。
一般的请求处理流程: 请求进来,查数据库,执行业务逻辑,渲染,然后返回;整体耗时很长。当然Tomcat是基于大部分情况这样考虑的,如果你的场景特殊tomcat还是提供了其他的IO模式:
1. BIO:默认的模式,性能非常低下,没有经过任何优化处理和支持.
2.NIO:利用Java的异步io护理技术,no blocking IO技术.
3.APR:安装起来最困难,但是从操作系统级别来解决异步的IO问题,大幅度的提高性能.
必须要安装apr和native,直接启动就支持apr。
另外Tomcat本身受到servlet 3.0的限制并不能提供像netty一样的异步非阻塞IO模式;先来理解一下基于
Reactor模式的NIO机制: