原生 NIO 存在的问题

  1. NIO 的类库和 API 繁杂, 使用麻烦: 需要熟练掌握 Selector, ServerSocketChannel, SocketChannel, ByteBuffer 等.
  2. 需要具备其它的额外技能: 要熟悉 Java 多线程编程, 因为 NIO 涉及到 Reactor(反应器) 模式.
  3. 开发工作量和难度非常大: 例如客户端面临断线重连, 网络闪断, 半包读写, 失败缓存, 网络阻塞和异常流的处理.

Netty

Netty 是一个 异步 事件驱动 网络应用框架. 用来快速开发高性能的服务端或客户端.

下图是来自 Netty 官网的一张图.
1.Netty 概述

这张图说明了 Netty 都支持哪些协议以及传输服务.

  • 零拷贝和可扩展的事件模型是 Netty 的核心.
  • 支持 WebSocket SSL 谷歌协议缓冲区以及大文件传输协议.
  • 还有一些传输服务.

优点

  1. 其实主要就是简化了 NIO 的开发过程.
  2. 统一的阻塞和非阻塞 Socket API.
  3. 高度定制的线程模型.
  4. 零拷贝(高性能, 吞吐量更高).

相关文章: