Netty是什么?

       Netty是由JBOSS提供的一个java开源框架。Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。

NIO的客户、服务器端编程框架,

什么是NIO

          NIO即New IO,这个库是在JDK1.4中才引入的。NIO和IO有相同的作用和目的,但实现方式不同,NIO主要用到的是块,所以NIO的效率要比IO高很多。在Java API中提供了两套NIO,一套是针对标准输入输出NIO,另一套就是网络编程NIO。

         Java IO和NIO之间第一个最大的区别是,IO是面向流的,NIO是面向缓冲区的.

         NIO的核心类库多路复用器selector。基于多路复用技术。

I/O多路复用技术

       在I/O编程中,当需要同时处理多个客户端接入请求时,可以利用多线程或者I/O多路复用技术进行处理。

 优点: 与传统的多线程/多进程相比,I/O优点是   

            由于I/O多路复用是在单一进程的上下文中的,因此每个逻辑流程都能访问该进程的全部地址空间,系统不必创建进程/线            程,也不必维护这些进程/线程,从而大大减小了系统的开销

缺点:编程复杂度高。

     Netty服务端创建步骤

          1.创建ServerBootstrap实例()

           2.设置并绑定Reacor线程池()

           3.设置并绑定服务端Channel()

           4.TCP链路简历时创建ChannelPipeline()

           5.添加并设置ChannelHandler

          6.绑定监听端口并启动服务端()

           7.selector轮询()

           8.网络事件通知()

          9.执行Netty系统和业务HandlerChannel()

 Netty客户端创建步骤

          1.用户线程创建bootstrap实例,通过aip设置创建客户端相关的参数,异步发起客户端连接。

           2.创建处理客户端连接、I/O读写的Reactor线程组NioEventLoopGroup。

           3.通过bootstrap的channelFactory和用户指定的Channel类型创建用户客户端连接的NioSocketChannel,它的功能类似于JDK NIO类库提供的SocketChannel;

            4.创建默认的Channel Handler Pipeline,用于调度和执行网络事件。

           5.异步发起TCP连接,判断列举是都成功。如果成功,直接将NioSocketChannel注册到多路复用器上,监听读操作位,用于数据报读取和消息发送;如果没有立即连接成功,则注册连接监听位到多路复用器,等待连接结果;

           6.注册对应的网络监听状态位到多路复用器;

           7.由多路复用器在I/O现场中轮询各channel,处理连接结果;

           8.如果连接成功,设置future结果,发送连接成功实践,触发channelPipeline执行;

          9.由ChannelPipeline调度执行系统和用户的ChannelHandler,执行业务逻辑。