一.首先我们先说明为什么不选择java原生NIO
1.NIO类库和API复杂,使用麻烦。
2.需要具备其它的额外技能做铺垫,例如 熟悉Java多线程和网络编程。
3.可靠性能力补齐,工作量和难度都很大,例如 客户端面临断重连,网络闪断,半包读写,失败缓存,网络拥堵,异常码流等问题。
4.JDK NIO的 BUG ,例如臭名昭著的 epoll bug,会导致Selector空轮询,最终导致CPU100%。
二.为甚选择Netty
1.API使用简单,开发门槛低。
2.功能强大,预置了多种编解码功能,支持多种主流协议。
3.定制能力强,可以通过ChannelHandler 对通信框架进行灵活的扩展。
4.性能高,与其它业界主流NIO框架比,Netty综合性能最优。
5.社区活跃,版本迭代周期短,发现bug可以及时解决。