Netty 知识体系
什么是Netty?
Netty是一款异步的、基于事件驱动的网络应用程序框架,用以快速开发高性能、高可靠性的网络IO程序。
Netty 是基于 NIO,在 JDK 原生的 NIO有以下问题。
- 使用
Java NIO需要了解很多概念,而且API非常繁琐。 - 使用
Java NIO编程复杂,一不小心就会Bug横飞。 - 开发工作量和难度也很大,例如我们要处理断开重连、网络闪断、半包读写、网络拥塞、异常处理,等等异常情况,处理起来难度比较大。需要非常熟悉
Java多线程和网络相关知识点,才能编写一个高质量的Java NIO程序。 JDK NIO的Bug:例如臭名昭著的Epoll Bug,它会导致Selector空轮询,最终导致CPU100%。
Netty的优点:
- 容易上手:
Netty是对Java NIO进行了封装,API使用简单,开发门槛相对较低。 - 功能强大:预置多种编解码功能,支持多种主流协议,底层
IO模型随意切换等等。 - 高性能:精心设计的
Reactor线程模型支持高并发,优秀的内存模型,减少了资源的消耗。 - 设计优雅:灵活且可扩展的事件模型,可以清晰地分离关注点;高度可定制化的线程模型;粘包/粘包、异常检测等机制将我们从繁重的细节中解脱,只需关注业务逻B辑。
- 社区活跃:
Netty是目前最为活跃的开源项目之一,版本迭代周期短,Bug修复速度快。 - 安全:完整的
SSL/TLS和StartTLS支持。 - 质量有保障:经过大规模的商业应用考验,质量得到了充分的验证,健壮性无比强大,放心使用吧。