浅谈Netty
Posted 程序媛学习之路
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了浅谈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优点是
缺点:编程复杂度高。
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,执行业务逻辑。
以上是关于浅谈Netty的主要内容,如果未能解决你的问题,请参考以下文章