同步阻塞io(BIO)、伪异步io、非阻塞io(NIO)、异步io(AIO)的概念及区别?
BIO:同步阻塞式IO,服务器端与客户端通过三次握手后建立连接,连接成功,双方通过I/O进行同步阻塞式通信。
弊端:1,读和写操作是同步阻塞的,任何一端出现网络性能问题,都会影响另一方。2,一个链路建立一个线程,无法满足高并发,高性能需求。
伪异步IO:为了解决同步阻塞式IO一个链路建立一个线程的弊端,出现了伪异步IO,伪异步IO其实就是通过线程池/队列来处理多个客户端的接入,通过线程池可以灵活的调配线程资源,设置线程最大值,防止海量并发接入导致线程耗尽。
弊端:1,读和写操作是同步阻塞的,任何一端出现网络性能问题,都会影响另一方
非阻塞IO:nio类库是jdk1.4中引入的,它弥补了同步阻塞IO的不足,它在Java提供了高速的,面向块的I/O。同步阻塞IO是以流的方式处理数据,而NIO是以块的方式处理数据。面向流的I/O通常比较慢, 按块处理数据比按(流式的)字节处理数据要快得多。
AIO:异步非阻塞I/O,NIO2的异步套接字通道时真正的异步非阻塞I/O,它对应unix网络驱动中的事件驱动I/O,它不需要通过多路复用器对注册的通道进行轮询操作即可实现异步读写,简化了NIO编程模型。
Nio有哪些框架?
Netty,Mina,Grizzly
为什么选择netty?
Netty 是业界最流行的NIO框架之一,它的健壮性,性能,可定制性,可扩展性在同类框架中都是屈指一数的,并且它已经得到很多商用项目的验证。
Netty优点有哪些?
API使用简单,开发门槛低。
功能强大,预置多种编解码器,支持多种主流协议。
定制能力强,可以通过channelhandler对通信框架进行灵活的扩展。
性能好。
社区活跃,版本迭代周期短。
经历了大规模的商业项目的验证。在互联网,大数据,网络游戏,企业应用,电信软件等众多行业得到成功商用,证明了它完全可以满足不同行业的商业应用。