预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共32页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

Netty架构剖析和行业应用 李林锋neu_lilinfeng@sina.com 新浪微博Nettying 微信Nettying Netty介绍 Netty架构剖析 MinaVSNetty Netty行业应用 Netty介绍 Netty是一个异步、事件驱动的网络应用框架。 基于Netty,可以快速的开发和部署高性能、 高可用的网络服务端和客户端应用。 Netty架构剖析-性能模型 通信性能三要素 传输 协议 线程 Netty架构剖析-性能模型 IO模型:异步非阻塞I/O 数据协议:可定制的编解码框架 线程模型:Reactor线程模型 Netty架构剖析-性能模型 JDK1.4开始提供非阻塞I/O(NIO) JDK1.5_update10版本使用epoll替代了传统的 select/poll Netty架构剖析-性能模型 零拷贝 Netty的接收和发送ByteBuffer采用DIRECT BUFFERS Netty提供了组合Buffer对象,可以聚合多个 ByteBuffer对象,用户可以像操作一个 Buffer那样方便的对组合Buffer进行操作 Netty的文件传输采用了transferTo方法 Netty架构剖析-性能模型 内存池 执行300万次,采用内存 池性能比朝生夕灭的 ByteBuf高23倍左右 Netty架构剖析-单线程模型 Reactor单线程模型,指的是所有的IO操作都在 同一个NIO线程上面完成 Netty架构剖析-多线程模型 专门一个NIO线程-Acceptor线程用于监听服务端, 接收客户端的TCP连接请求; 网络IO操作-读、写等由一个NIO线程池负责 Netty架构剖析-线程模型 无锁化的串行设计:为了尽可能提升性能,Netty 采用了串行无锁化设计,在IO线程内部进行串行 操作,避免多线程竞争导致的性能下降。 Netty架构剖析-协议 影响序列化性能的关键因素总结如下: 1.序列化后的码流大小(网络带宽的占用); 2.列化&反序列化的性能(CPU资源占用)。 Netty架构剖析-协议 可定制的序列化框架 ProtoBuf Java序列化 Xml 用户自定义序列化框架 Netty架构剖析-可靠性 心跳检测 读空闲;写空闲;读写空闲 Netty架构剖析-可靠性 Reactor线程的保护 某个消息的异常不应该导致整条链路不可 用; 某条链路不可用不应该导致其它链路不可 用; JDKepoll空轮询BUG的检测和修复 Netty架构剖析-可靠性 内存保护 缓冲区的内存泄漏保护:内存检测和释放 缓冲区内存溢出保护:对缓冲区进行上限保 护 Netty架构剖析-可靠性 流量整形 流量整形(TrafficShaping)是一种主动调整 流量输出速率的措施。一个典型应用是基于下游 网络结点的TP指标来控制本地流量的输出。 Netty提供全局级和链路级流量整形功能。 Netty架构剖析-安全性 Netty安全性 SSL认证:SSL单向认证、SSL双向认证 IP黑白名单校验 接入认证 Netty逻辑架构 MinaVSNetty 相同点: 基于Reactor模式的NIO框架 基于链式的Handler编排机制 对JDK的NIO类库进行了封装,屏蔽底层细节 MinaVSNetty 不同点: ByteBuffer的封装和功能不同 I/O线程模型不同 内置的编解码能力不同 内置的应用层协议不同 当前活跃度不同 功能的丰富度不同 未来的前景不同 行业应用-互联网应用 互联网架构演进:由垂直架构向分布式服务框架 演进 Netty互联网应用-Dubbo Dubbo的RPC远程服务调用默认使用 Netty+Dubbo协议实现: DubboRCP框架默认推荐使用Dubbo协议进行 通信和数据传输,相比于老的Hessian协议 性能更高 支持异步I/O通信 Netty互联网应用-Dubbo Netty互联网应用-Twitter Netty在Twitter得到了大量的应用: Finagle是Twitter协议无关的RPC框架,用于实 现大部分内部服务,如搜索,它的传输层建立在 Netty之上 TFE(Twitter前端)是专有的填鸭式反向代理, 它使用Netty为大部分面向公众的HTTP和SPDY流量 提供服务 Cloudhopper每月使用Netty向遍布世界各地数 以百计的运营商发送数十亿条短信息 Netty互联网应用-FaceBook Nifty是faceboo