- 1、本文档共32页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Netty架构剖析和行业应用
李林锋 neu_lilinfeng@
新浪微博 Nettying
微信 Nettying
Netty介绍
Netty架构剖析
Mina VS Netty
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线程的保护
某个消息的异常不应该导致整条链路不可
用;
某条链路不可用不应该导致其它链路不可
用;
JDK epoll 空轮询BUG的检测和修复
Netty架构剖析-可靠性
内存保护
缓冲区的内存泄漏保护:内存检测和释放
缓冲区内存溢出保护:对缓冲区进行上限保
护
Netty架构剖析-可靠性
流量整形
流量整形(Traffic Shaping)是一种主动调整
流量输出速率的措施。一个典型应用是基于下游
网络结点的TP指标来控制本地流量的输出。
Netty提供全局级和链路级流量整形功能。
Netty架构剖析-安全性
文档评论(0)