Netty入门 - Netty的基础概念

82 阅读2分钟

Netty 知识体系

image.png

什么是Netty?

Netty 是一款异步的、基于事件驱动的网络应用程序框架,用以快速开发高性能、高可靠性的网络 IO 程序。

Netty 是基于 NIO,在 JDK 原生的 NIO有以下问题。

  1. 使用 Java NIO 需要了解很多概念,而且 API 非常繁琐。
  2. 使用 Java NIO 编程复杂,一不小心就会 Bug 横飞。
  3. 开发工作量和难度也很大,例如我们要处理断开重连、网络闪断、半包读写、网络拥塞、异常处理,等等异常情况,处理起来难度比较大。需要非常熟悉 Java 多线程和网络相关知识点,才能编写一个高质量的 Java NIO 程序。
  4. JDK NIOBug:例如臭名昭著的 Epoll Bug,它会导致 Selector 空轮询,最终导致 CPU 100%。

Netty的优点:

  1. 容易上手:Netty 是对 Java NIO 进行了封装,API 使用简单,开发门槛相对较低。
  2. 功能强大:预置多种编解码功能,支持多种主流协议,底层 IO 模型随意切换等等。
  3. 高性能:精心设计的 Reactor 线程模型支持高并发,优秀的内存模型,减少了资源的消耗。
  4. 设计优雅:灵活且可扩展的事件模型,可以清晰地分离关注点;高度可定制化的线程模型;粘包/粘包、异常检测等机制将我们从繁重的细节中解脱,只需关注业务逻B辑。
  5. 社区活跃:Netty 是目前最为活跃的开源项目之一,版本迭代周期短,Bug 修复速度快。
  6. 安全:完整的 SSL/TLSStartTLS 支持。
  7. 质量有保障:经过大规模的商业应用考验,质量得到了充分的验证,健壮性无比强大,放心使用吧。