浅谈Netty

Netty是什么?

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

        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,执行业务逻辑。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值