Netty源码剖析与实战-第一周

初识 NettyNettyNettyNettyNetty:背景、现状与趋势 :背景、现状与趋势 

一、揭开Netty面纱

Netty由TrustinLee (韩国,Line公司)2004年开发

•    本质:网络应用程序框架
•    实现:异步、 事件驱动
•    特性:高性能、 可维护、 快速开发
•    用途:开发服务器和客户端

Netty源码剖析与实战-第一周

 

二、为什么不用JDK库

Netty源码剖析与实战-第一周

1、Netty做得更多:

•    支持常用应用层协议;
•    解决传输问题:粘包、 半包现象;
•    支持流量整形;
•    完善的断连、Idle等异常处理等。

 

2、Netty做得更好

Netty做得更好之一:规避JDK NIO bug:

Netty做得更好之二:API更友好更强大

Netty做得更好之三:隔离变化,屏蔽细节

Netty源码剖析与实战-第一周

Netty源码剖析与实战-第一周

Netty源码剖析与实战-第一周

Netty解决之道

Netty源码剖析与实战-第一周

Netty源码剖析与实战-第一周

Netty源码剖析与实战-第一周

三、为什么独选Netty

1、对比同业产品

•    Apache Mina
•    Sun Grizzly
•    Apple Swift NIO 、 ACE等
•    Cindy等
•    Tomcat 、 Jetty

为什么不选ApacheMina 

同一作者,推荐Netty

Netty源码剖析与实战-第一周

为什么不选sun的Grizzly

文档少、用户少、更新慢

Netty源码剖析与实战-第一周

为什么不选AppleSwfitNIO、ACE等

其他语言、不考虑

 

为什么不选Cindy等

生命周期长

 

为什么不选Tomcat、Jetty

还没被独立

 

四、Netty的前程往事

一、时间链上

Netty最初归属于Jboss,后来独立

二、从版本演变上看

Netty源码剖析与实战-第一周

三、其他

1、废弃5.0的原因

Netty源码剖析与实战-第一周

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

Netty源码剖析与实战-第一周

• Stars: 20000+ (top 25 repository on java)

Netty源码剖析与实战-第一周

•    维护者
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使用者

一些典型项目

Netty源码剖析与实战-第一周

 

三、未来趋势

Netty源码剖析与实战-第一周

 

四、原生Socket阻塞IO demo

本人日常编写的demo、等系列结束后会分享链接