1、BIO 服务端一个线程会负责一个连接,进行请求的处理和响应,比较明显,当客户端比较多的时候,服务端的线程可能就不够了,这时候对应的请求就没法及时处理了
客户端个数:服务端处理线程个数=1:1
IO类型:阻塞同步
API使用难度:简单
调试难度:简单
可靠性:比较差
吞吐量:低
2、伪异步IO 服务端会维护一个线程池来处理请求端的请求,也比较明显,当客户端的请求比较多的时候,线程池的线程也是不够的,此时也会出现请求处理阻塞的情况
客户端个数:服务端处理线程个数=m:n
IO类型:阻塞同步
API使用难度:简单
调试难度:简单
可靠性:比较差
吞吐量:中
3、NIO 这个是当前比较牛逼的技术了,服务端通过缓存区、通道、多路复用等技术,允许客户端的请求成千上万,读写都首先通过缓存区来承接,然后通过通道来传输信息,通过多路复用器轮询通道,看看是否存在读或者写时间,然后再进行处理,大大提升了IO处理的性能和稳定性
客户端个数:服务端处理线程个数=m:1
IO类型:非阻塞同步
API使用难度:非常复杂,所以,给了Netty机会
调试难度:复杂
可靠性:比较高
吞吐量:高
4、AIO 异步IO,简化了NIO的通信模型
客户端个数:服务端处理线程个数=m:0
IO类型:非阻塞异步
API使用难度:复杂
调试难度:复杂
可靠性:比较高
吞吐量:高