Netty 编程入门
一、Netty 简介
介绍
Netty 是一个 Java NIO 的高性能网络编程应用框架,是目前 Java 领域最主流的网络编程框架。
为什么做 web 服务端开发的程序员对网络编程没啥感知?
提到网络编程库,对于做业务开发的同学可能没啥感知,比如我一个服务端开发 —— Java CRUD BOY 完全不知道网络编程要干啥。大部分人都会接触的网络编程是 Java BIO,就是 Socket 这块儿,还有的同学可能看过 Java1.4推出的 NIO,Channel、Buffer、Selector这些。网络编程都在用在哪儿呢?只要涉及网络传输的网络应用都使用了网络编程。但在平常的 web 服务开发时,我们使用了Tomcat、JBoss、Jetty等支持 servlet 规范的 web 服务器,HTTP 协议的编解码、网络连接的建立、数据的网络收发都由底层的 web 容器完成,我们只需要专注于业务代码编写。 Netty 是一款面向网络传输层协议(Socket) 的网络编程框架,也可以用来开发 Web 服务器。Netty 不仅支持 HTTP 协议,还支持 SSH、TLS/SSL 等多种应用层的协议,它支持的协议更广泛,还可以自定义通信协议。
特性
对于一款网络编程框架,下面是几个我们绕不开的几个关注点:
- I/O 模型
- 线程模型
- 事件处理机制
- 对数据协议、序列化的支持
- API 的易用性
Netty 在上述的方面表现突出,具有以下特征:
- 对
Java NIO的高级封装,API 易用 - 高性能、低延时
- 对序列化和网络协议的支持
社区活跃度
Netty 如此成功离不开社区的精心运营,迭代周期短且文档比较齐全,如果你遇到任何问题通过 issue 或者邮件都可以得到非常及时的答复。目前,Netty 官方提供 3.x、4.x 的稳定版本,之前一直处于测试阶段的 5.x 版本已被作者放弃维护。
趋势
Netty 是目前最流行的一款高性能 Java 网络编程框架,它被广泛使用在中间件、直播、社交、游戏等领域。截止至 2020 年 7 月,Netty 在 github 上获取2.4w+ star,一共被 4w+ 的项目所使用。目前,许多知名的开源软件也都将 Netty 用作网络通信的底层框架,Netty 经过很多出名产品在线上的大规模验证,其健壮性和稳定性都被业界认可,其中典型的产品有:
- 服务治理:Apache Dubbo、gRPC。
- 大数据:Hbase、Spark、Flink、Storm。
- 搜索引擎:Elasticsearch。
- 消息队列:RocketMQ、ActiveMQ。
