Netty简介

1.简述 

  Netty是一个高性能、异步事件驱动的NIO框架,它提供了对TCP、UDP和文件传输的支持,作为一个异步NIO框架,Netty的所有IO操作都是异步非阻塞的,通过Future-Listener机制,用户可以方便的主动获取或者通过通知机制获得IO操作结果。

  Netty在互联网领域、大数据分布式计算领域、游戏行业、通信行业等获得了广泛的应用,一些业界著名的开源组件也基于Netty的NIO框架构建。

2.Netty的优缺点

  Netty的优点

  1. API使用简单,开发门槛低。
  2. 功能强大,预置了多种编解码功能,支持多种主流协议。
  3. 定制能力强,可以通过ChannelHandler对通信框架进行灵活地扩展。
  4. 性能高,通过与其他业界主流的NIO框架对比,Netty的综合性能最优。
  5. 成熟、稳定,Netty修复了已经发现的所有JDK NIO BUG,业务开发人员不需要再为NIO的BUG而烦恼。
  6. 社区活跃,版本迭代周期短,发现的BUG可以被及时修复,同时,更多的新功能会加入。
  7. 经历了大规模的商业应用考验,质量得到验证。

  Netty的缺点

  1. 大版本不兼容,3.x/4.x同时维护,5.x放弃维护,主要原因是Netty抛弃了Jboss单独发展了。

3.为什么选择Netty

  Netty的特点

  1. 高性能、异步事件驱动的NIO框架,提供了对TCP、UDP和文件传输的支持。
  2. 使用更高效的socket底层,对epoll空轮询引起的cpu占用飙升在内部进行了处理,避免了直接使用NIO的陷阱,简化了NIO的处理方式。
  3. 采用多种decoder/encoder 支持,对TCP粘包/分包进行自动化处理。
  4. 可使用接受/处理线程池,提高连接效率,对重连、心跳检测的简单支持。
  5. 可配置IO线程数、TCP参数, TCP接收和发送缓冲区使用直接内存代替堆内存,通过内存池的方式循环利用ByteBuf。
  6. 通过引用计数器及时申请释放不再引用的对象,降低了GC频率。
  7. 使用单线程串行化的方式,高效的Reactor线程模型。
  8. 大量使用了volitale、使用了CAS和原子类、线程安全类的使用、读写锁的使用。

  Netty的设计

  1. 适用于各种传输类型的统一API - 阻塞和非阻塞套接字。
  2. 基于灵活且可扩展的事件模型,可以清晰地分离关注点。
  3. 高度可定制的线程模型 - 单线程,一个或多个线程池,如SEDA。
  4. 真正的无连接数据报套接字支持(自3.1起)。

  Netty的性能

  1. 更高的吞吐量,更低的延迟。
  2. 减少资源消耗。
  3. 最小化不必要的内存复制。

  Netty的安全

  1. 完整的SSL / TLS和StartTLS支持。

4.Netty的应用场景

  Netty的应用场景

  1. 作为RPC框架的网络通讯工具,如Dubbo。
  2. 实现即时通讯系统。
  3. 实现消息推送系统。

posted on 2021-11-19 16:27  码农记录  阅读(229)  评论(0编辑  收藏  举报

导航