Netty源码剖析与实战-第一周
初识 NettyNettyNettyNettyNetty:背景、现状与趋势 :背景、现状与趋势
一、揭开Netty面纱
Netty由TrustinLee (韩国,Line公司)2004年开发
• 本质:网络应用程序框架
• 实现:异步、 事件驱动
• 特性:高性能、 可维护、 快速开发
• 用途:开发服务器和客户端
二、为什么不用JDK库
1、Netty做得更多:
• 支持常用应用层协议;
• 解决传输问题:粘包、 半包现象;
• 支持流量整形;
• 完善的断连、Idle等异常处理等。
2、Netty做得更好
Netty做得更好之一:规避JDK NIO bug:
Netty做得更好之二:API更友好更强大
Netty做得更好之三:隔离变化,屏蔽细节
Netty解决之道
三、为什么独选Netty
1、对比同业产品
• Apache Mina
• Sun Grizzly
• Apple Swift NIO 、 ACE等
• Cindy等
• Tomcat 、 Jetty
为什么不选ApacheMina
同一作者,推荐Netty
为什么不选sun的Grizzly
文档少、用户少、更新慢
为什么不选AppleSwfitNIO、ACE等
其他语言、不考虑
为什么不选Cindy等
生命周期长
为什么不选Tomcat、Jetty
还没被独立
四、Netty的前程往事
一、时间链上
Netty最初归属于Jboss,后来独立
二、从版本演变上看
三、其他
1、废弃5.0的原因
2、与Apache Mina的关系
同一作者开发, 都处千维护阶段(当前: MINA2.1.3: 2019/06; Netty 4.1.39.Final: 2019/08)
• 2004年6月Netty2发布
• 2005年5月Mina发布
Alex为Apache Directory开发网络框架, 但是觉得不好用, 看到Netty2后找到作者邀请合作开发,结合两种框架, 随后有了MINA。
五、Netty的现状与趋势
一、社区现状
• https://github.com/netty/netty
• Stars: 20000+ (top 25 repository on java)
• 维护者
22 members (core: Trustin Lee and Norman Maurer)
• 分支
4.1 master (16年5月创建,hours/daysago)支持Android
4.0 (1 3年7月创建,Latestcommitbe5b5a3on 13 Feb 2018)线程模型优化、包结构、命名
• 最新版本
Netty 4.1.39.Final (2019年8月)
Netty 4.0.56.Final (2018年2月)
Netty 3.10.6.Final (2016年6月)
二、应用现状
• 截止2019年9月,30000+项目在使用
• 统计方法:依赖项中声明io.netty: netty-a ll
• 未考虑的情况:非开源软件和Netty3.x使用者
一些典型项目
三、未来趋势
四、原生Socket阻塞IO demo
本人日常编写的demo、等系列结束后会分享链接