Netty 做的更多

  • 支持常用应用层协议
  • 解决传输问题:粘包、分包现象;
  • 支持流量整形;
  • 完善的断连、Idle等异常处理等。

Netty 做的更好

  • 规避 JDK NIO Bug
    • 例1 经典的 epoll bug : 异常唤醒空转导致 CPU 100%

    【Netty基础】为什么不用 Java NIO?
    Netty 处理方式:检测问题发生,然后处理
    【Netty基础】为什么不用 Java NIO?

    • IP_POS参数(IP包的优先级和QoS选项)使用时抛出异常

    【Netty基础】为什么不用 Java NIO?
    Netty 处理方式:遇到问题绕路走
    【Netty基础】为什么不用 Java NIO?

  • API 更友好更强大
    • JDK 的 NIO 一些 API 不够友好,功能薄弱,比如 ByteBuffer → Netty’s ByteBuf
    • 除了 NIO 外,也提供了其他一些增强 ThreadLocal → Netty’s FastThreadLocal
  • 隔离变化,屏蔽细节
    • 隔离 JDK NIO 的实现变化;
    • 屏蔽 JDK NIO 的实现细节。

相关文章: