NIO通信框架Netty(课堂PPT)_第1页
NIO通信框架Netty(课堂PPT)_第2页
NIO通信框架Netty(课堂PPT)_第3页
NIO通信框架Netty(课堂PPT)_第4页
NIO通信框架Netty(课堂PPT)_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、NIONIO通信框架通信框架-Netty-Netty李林锋李林锋 neu_ neu_ 新浪微博新浪微博 Nettying Nettying大纲传统同步阻塞通信面临的问题传统同步阻塞通信面临的问题Netty提供的解决方案提供的解决方案Netty逻辑架构介绍逻辑架构介绍Netty主要功能特性介绍主要功能特性介绍Netty的行业应用的行业应用3传统同步阻塞通信面临的问题传统同步阻塞通信面临的问题性能问题:一连接一线程模型导致服务端的并发接入数和系统吞吐量受到极大限制;可靠性问题:由于IO操作采用同步阻塞模式,当网络拥塞或者通信对端处理缓慢会导致IO线程被挂住,阻塞时间无法预测;可维护性问题:IO线程

2、数无法有效控制、资源无法有效共享(多线程并发问题),系统可维护性差4JAVA 原生原生NIO类库的复杂性(服务端)类库的复杂性(服务端)5JAVA 原生原生NIO类库的复杂性(客户端)类库的复杂性(客户端)6Netty的解决方案异步、非阻塞、基于事件驱动的NIO框架;支持多种传输层通信协议,包括TCP、UDP等;提供对多种应用层协议的支持,包括TCP私有协议、HTTP协议、WebSocket协议、文件传输等;默认提供多种编解码能力,包括Java序列化、Google的ProtoBuf、二进制编解码、Jboss marshalling、文本字符串、base64、简单XML等;经典的ChannelF

3、uture-listener机制,所有的异步IO操作都可以设置listener进行监听和获取操作结果;基于ChannelPipeline-ChannelHandler的责任链模式,可以方便的自定义业务拦截器用于业务逻辑定制;安全性:支持SSL、HTTPS;可靠性:流量整形、读写超时控制机制、缓冲区最大容量限制、资源的优雅释放等;简洁的API和启动辅助类,简化开发难度,减少代码量7Netty逻辑架构8Netty逻辑架构第一层:Reactor 通信调度层,它由一系列辅助类组成,包括 Reactor 线程NioEventLoop 以及其父类、NioSocketChannel/NioServerSoc

4、ketChannel 以及其父类、ByteBuffer 以及由其衍生出来的各种 Buffer、Unsafe 以及其衍生出的各种内部子类等;第二层:职责链 ChannelPipeLine,它负责调度事件在职责链中的传播,支持动态的编排职责链,职责链可以选择性的拦截自己关心的事件,对于其它IO操作和事件忽略,Handler同时支持inbound和outbound事件;第三层:业务逻辑编排层,业务逻辑编排层通常有两类:一类是纯粹的业务逻辑编排,还有一类是应用层协议插件,用于协议相关的编解码和链路管理,例如 CMPP 协议插件。9Netty功能特性1(NIO服务端)28行代码完成NIO服务端的开发10

5、Netty功能特性1(NIO服务端)15行代码完成服务端业务逻辑定制11Netty功能特性2(NIO客户端)26行代码完成NIO客户端开发12Netty功能特性2(NIO客户端)28行代码完成NIO客户端开发13Netty功能特性3-序列化(ProtoBuf)14Netty功能特性3-序列化(marshalling)15Netty功能特性3-序列化(Java)与原生的JAVA序列化机制兼容16Netty功能特性4-半包解码器Netty提供4种半包解码器,可以解决几乎所有协议的半包解码问题:固定消息长度解码器:FixedLengthFrameDecoder;文本换行解码器:LineBasedFr

6、ameDecoder;分隔符解码器:DelimiterBasedFrameDecoder;1. 基于消息长度的通用解码器:LengthFieldBasedFrameDecoder17Netty功能特性5-编码器POJO对象到ByteBuf的编码器:MessageToByteEncoderPOJO对象到POJO对象编码器: MessageToMessageEncoder消息长度编码器:LengthFieldPrepender18Netty功能特性6-多协议(HTTP)异步非阻塞HTTP协议栈19Netty功能特性7-多协议(WebSocket)WebSocket协议栈基于HTTP协议栈+WebS

7、ocket编解码 实现20Netty功能特性8-多协议(UDP)与TCP协议风格一致的API,降低用户开发难度21Netty功能特性9-多协议(File传输)异步文件传输22Netty功能特性10-安全性23Netty功能特性11-可靠性(流量整形)基于Channel的流量整形:ChannelTrafficShapingHandler基于全局的流量整形: GlobalTrafficShapingHandler可定制的流量整形抽象类: AbstractTrafficShapingHandler24Netty功能特性12-可靠性(超时控制)异步连接超时机制:ChannelConfig的setCon

8、nectTimeoutMillis(int connectTimeoutMillis);25Netty功能特性13-可靠性(心跳检测)基于链路空闲的读超时:ReadTimeoutHandler;基于链路空闲的写超时:WriteTimeoutHandler;链路空闲状态触发器:IdleStateHandler;26Netty功能特性14-可定位性(日志)提供LoggingHandler,它支持如下功能: 将二进制byte数组转换成16进制码流打印; 将二进制byte数组转换成字符打印; 通过拦截的方式按照指定格式打印数据报27Netty功能特性15-内存管理策略以ByteBuf为例,Netty提

9、供四种ByteBuf:基于内存池可重复利用的非堆内存:PooledDirectByteBuf;基于内存池可重复利用的堆内存: PooledHeapByteBuf;朝生夕灭的非堆内存:UnpooledDirectByteBuf;朝生夕灭的堆内存:UnpooledHeapByteBuf。 为了更高效的管理内存,做到自动/及时的释放不再引用的对象,Netty内置的资源对象实现ReferenceCounted接口,对内存的申请和释放做统一管理。28Netty功能特性16-异步的结果回调基于经典的Future-Listener机制实现29Netty行业应用-互联网分布式架构随着互联网的发展,网站应用规模

10、的不断扩大,常规的垂直应用架构已无法应对,利用分布式服务架构进行弹性伸缩是大势所趋Dubbo是阿里巴巴开源的分布式服务框架,目前已经应用于所有非淘宝系的阿里产品中,包括来往、聚划算、阿里巴巴集团网、阿里巴巴中文站等等Dubbo内部私有通信协议-dubbo协议默认使用Netty作为高性能异步通信框架,为分布式服务节点之间提供高性能的NIO客户端和服务端通信。30Netty行业应用-大数据领域Apache Avro 是 Hadoop的子系统之一,它的主要功能如下: 丰富的数据结构; 压缩、高效、二进制的序列化框架; 远程服务调用(RPC); 多语言、灵活的集成能力。Avro的RPC框架提供基于Netty的NettyServer和基于Jetty的HttpServer两种通信服务端。31Netty行业应用-游戏行业Netty适合游戏服务器的几个核心特性: 高并发:由于采用异步非阻塞模式,一个Netty游戏服务端可以同时处理成千上万的游戏玩家登陆和在线; 高性能:Netty的性能在各个NIO框架中最高,它的单节点吞吐量非常大,适合海量玩家同时在线游戏; 安全性:支持HTTPS、SSL等,可以在传输层进行安全控制; 定制性:可以方便的实现业务逻辑的定制、游戏

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论