1.概述
1.1.原生NIO存在的问题
1>.NIO的类库和API繁杂,使用麻烦
: 需要熟练掌握Selector、ServerSocketChannel、SocketChannel、ByteBuffer等;
2>.需要具备其他的额外技能
: 要熟悉Java多线程编程,因为NIO编程涉及到Reactor模式,你必须对多线程和网络编程非常熟悉,才能编写出高质量的NIO程序;
3>.开发工作量和难度都非常大
: 例如客户端面临断连重连、网络闪断、半包读写、失败缓存、网络拥塞和异常流的处理等等;
4>.JDK NIO的Bug
: 例如臭名昭著的Epoll Bug,它会导致Selector 空轮询,最终导致CPU100%.直到JDK1.7版本该问题仍旧存在,没有被根本解决;
1.2.Netty官网说明
官网:https://netty.io/
Netty is an asynchronous event-driven network application framework
for rapid development of maintainable high performance protocol servers & clients;
Netty是一个异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端;
1>.Netty架构图: