Netty的介绍笔记

262 阅读3分钟

引言

这是我参与11月更文挑战的第7天,活动详情查看:2021最后一次更文挑战

大家都知道,Netty是一个比较优秀的开源框架,它被我们很多的框架都推荐使用,那本篇文章就带大家了解一下Netty是什么?

Netty的概念

Netty是一个用来开发服务器和客户端的,设计上是异步的,基于事件驱动架构的一个网络程序应用框架,架构如下所示:

image.png

Netty的核心层是有一个Byte Buffer、一个Api和可扩展的事件模型,然后传输层包括一些协议,可以看出Netty的层次结构清晰,然后可扩展性很强。

Netty的优点

Netty能帮我们做更多事情

Netty支持常用的应用层协议,如果我们是想开发一个HTTP服务器的话,如果使用Java类库的NIO,就要做很多工作,但是如果使用Netty就方便很多。

在使用Java NIO进行数据传输的过程中,不可避免会出现粘包和拆包现象,但使用Netty完全不用担心。

更重要的是Netty还支持流量整形和异常处理,比如数据的流量控制,这都是Netty相比java NIO做的更多的地方。

Netty能帮我们做的更好

Netty会规避java NIO的bug,比如常见的epoll bug,该bug会造成cpu空转,cpu使用率达到百分之百,Netty在这里进行了判断。

IP_Tos(IP 包的优先级和Qos参数)使用参数出现的未知的错误,Netty在这里觉得搞不定,就不支持了,直接return false。

更重要的是Netty的API更友好和强大,Netty的ByteBuffer支持动态扩容,另外Netty还支持了Fast ThreadLocal,这样在高并发场景下性能会更好。

Netty隔离变化和实现细节,简单易上手,最重要的是Netty是04年开发,已经维护了17年之久,解决了几千个bug,这都是Netty的优势。

Netty的发展与趋势

Netty的社区现状

Netty的Star数据在一定程度上反映了Netty的热门程度。 image.png

Netty的贡献者有537位,其中包括Netty的作者和一个德国人 image.png

Netty还在更新,最近的更新时间是近一周。 image.png

Netty的应用现状

和Netty相关的项目是非常之多,Netty官方也给出了一个列表:

  • 数据库: Apache Cassandra 是一个面向列的分布式数据库。

  • 消息: Apache Pulsar 是一个开源的分布式发布子消息系统。

  • 大数据: Apache Spark 是一个快速通用的集群计算框架,通常用于“大数据”应用程序。

  • 检索: Elastic Search是一个基于Lucene的分布式RESTful搜索引擎。

  • 框架: gRPCgRPC是一个高性能、开源的通用RPC框架。

  • 工具: http-client 是一个高性能、面向吞吐量的HTTP客户端库。

  • 框架: Apache Dubbo™ 是一个高性能的、基于java的开源RPC框架,由阿里巴巴集团开发,然后孵化成Apache顶级项目

  • 组件库: Nacos一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台,由阿里巴巴集团开发。

更多跳转链接:github.com/netty/netty…

Netty的趋势

  1. 对更多协议的支持
  2. 紧跟JDK功能的开发
  3. 更多网络模式的变化
  4. 更多好用的功能
  5. 应用更广泛