Netty入门
Netty是什么?
Netty 由 Trustin Lee(韩国,Line 公司)2004 年开发
本质:网络应用程序框架
实现:异步、事件驱动
特性:高性能、可维护、快速开发
用途:开发服务器和客户端
Netty的性能很高,按照Facebook公司开发小组的测试表明,Netty最高能达到接近百万的吞吐。
Netty发展历程
- 2004年6月Netty2发布(声称Java社区中第一个基于事件驱动的应用网络框架)
- 2008年10月Netty3发布
- 2013年7月Netty4 发布
- 2013年12月发布5.0.0.Alpha1
- 2015年11月废弃5.0.0
现状与趋势
30000+项目在使用(统计方法:依赖项中声明io.netty:netty-all)
- 数据库:Cassandra
- 大数据处理:Spark、Hadoop
- Message Queue: RocketMQ
- 检索: Elasticsearch
- 框架:gRPC、Apache Dubbo
- 分布式协调器:ZooKeeper
- 工具类: async-http-client
同时也可以看到Netty中大部分的问题都已经解决了。
第一个Netty程序
maven中引入一个比较稳定的4.1.25.Final的版本
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-all</artifactId>
<version>4.1.28.Final</version>
</dependency>
代码如下:
重要的类、方法解析
EventLoop
EventLoop暂时可以看成一个线程、EventLoopGroup自然就可以看成线程组。
网络编程里,“服务器”和“客户端”实际上表示了不同的网络行为;换句话说,是监听传入的连接还是建立到一个或者多个进程的连接。因此,有两种类型的引导:一种用于客户端(简单地称为Bootstrap),而另一种(ServerBootstrap)用于服务器。无论你的应用程序使用哪种协议或者处理哪种类型的数据,唯一决定它使用哪种引导类的是它是作为一个客户端还是作为一个服务器。