Netty是一个异步事件驱动的网络应用框架,为快速开发可维护的高性能协议服务器和客户端。
Netty是一种非阻塞的客户端面服务端的框架,可以进行快速和轻松的基于协议服务端和客户端的开发,它极大的简化和流线化(流式)网络编程,如TCP和UDP Socket服务器。
快速与轻松并不意味着最终的应用程序会受到可维护性或性能问题的影响 netty是根据许多协议(如FTP、SMTP、HTTP以及各种二进制和基于文本的遗留协议)的实现所获得的经验精心设计的。因此,Netty成功地找到了一种在不妥协的情况下实现轻松开发、性能、稳定和灵活性的方法。

特性

设计

  • 针对各种传输类型实现了统一的API,无论是阻塞还是非阻塞的socket
  • 它是基于一种灵活的可扩展的事件模型,明确地分离关注点(把大的内容切成若干个小的部分,使得我们关注小部分的就行了)
  • 高度可定制的线程模型-单线程或多线程池 比如SEDA (Staged Event Driven Architecture) (主要理念就是把一个请求分成若干个阶段,每个阶段可以根据自己的情况使用一个或多个线程来进行处理)
  • 真正的无连接数据报套接字支持(自3.1起)

易用性

  • 良好的Javadoc文档,用户指南和示例。。 (。。。这个有点尴尬。。)
  • 没有额外的依赖。,JDK 5(Netty 3.x)或6(Netty 4.x)就足够,现在大部分都是JDK8以上的 注意: 一些组件比如基于HTTP/2 可能需要更多的依赖。

性能

  • 更好的吞吐量,更低的延迟
  • 资源消耗更少
  • 最小化不必要的内存拷贝(Zero-copy 零拷贝)

其实每个开源的软件或框架都说声称自己文档非常的丰富,使用起来如何如何简单,性能如何如何的好,netty的文档真的不敢恭维。对于初学都真的很不友好,学习的曲线是非常的陡峭的。

请输入图片描述

从上图Netty可以分为三大块

最下方: 核心
  • 可扩展的事件模型
  • 统一的通信API
  • Zero-Copy-Capable Rich Byte Buffer 零拷贝的byteBuffer
左上角: 传输层服务
  • Socket和数据报
  • HTTP隧道
  • In-VM管道
右上角: 协议的支持
  • HTTP 和 WbSocket
  • SSL 安全套接字
  • Google Protobuf 谷歌推出的一种远程RPC协议
  • zlib/gzip压缩
  • 大文件传输
  • RTSP (Real Time Streaming Protocol 实时的流协议) 流媒体, 音频视频等这些
  • 遗留文本-二进制协议以及单元测试

总体上就是这样,从宏观去看这个Netty.
[Meting]
[Music server="netease" id="773148029" type="playlist"/]
[/Meting]

最后修改:2019 年 09 月 01 日 08 : 30 AM
如果觉得我的文章对你有用,请随意赞赏