Netty简介

摘要:
性能高,通过与其他业界主流的NIO框架对比,Netty的综合性能最优。成熟、稳定,Netty修复了已经发现的所有JDKNIOBUG,业务开发人员不需要再为NIO的BUG而烦恼。  Netty的设计:适用于各种传输类型的统一API-阻塞和非阻塞套接字。  Netty的性能:更高的吞吐量,更低的延迟。  Netty的安全:完整的SSL/TLS和StartTLS支持。

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. 实现消息推送系统。

免责声明:文章转载自《Netty简介》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇XSS的高级利用部分总结 -蠕虫Android 最火框架XUtils之注解机制具体解释下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Disruptor与Netty实现百万级(十)

实体对象: import java.io.Serializable; public class TranslatorData implements Serializable { private static final long serialVersionUID = 8763561286199081881L; private St...

MINA、Netty、Twisted一起学(十一):SSL/TLS

什么是SSL/TLS 不使用SSL/TLS的网络通信,一般都是明文传输,网络传输内容在传输过程中很容易被窃听甚至篡改,非常不安全。SSL/TLS协议就是为了解决这些安全问题而设计的。SSL/TLS协议位于TCP/IP协议之上,各个应用层协议之下,使网络传输的内容通过加密算法加密,并且只有服务器和客户端可以加密解密,中间人即使抓到数据包也无法解密获取传输的内...

Netty 业务处理:ChannelHandler家族

ChannelHandler 接口 类型 描述 handlerAdded ChannelHandler添加到ChannelPipeline时被调用 handlerRemoved ChannelHandler从ChannelPipeline时被调用 exceptionCaught 处理过程中ChannelPipeline有错误 Cha...

Java NIO 学习笔记(七)----NIO/IO 的对比和总结

目录:Java NIO 学习笔记(一)----概述,Channel/BufferJava NIO 学习笔记(二)----聚集和分散,通道到通道Java NIO 学习笔记(三)----SelectorJava NIO 学习笔记(四)----文件通道和网络通道Java NIO 学习笔记(五)----路径、文件和管道 Path/Files/PipeJava NI...

通俗地讲,Netty 能做什么?

https://www.zhihu.com/question/24322387/answer/78947405 作者:郭无心链接:https://www.zhihu.com/question/24322387/answer/78947405来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 Netty是什么? 1)本质:J...

Netty Nio启动全流程

Netty Nio启动全流程 1. 各组件之间的关系 说明:EventLoopGroup类似线程池,EventLoop为单线程,每个EventLoop关联一个Nio Selector,用于注册Channel,形成一个EventLoop被多个channel公用。在EventLoop会执行通道Io选择操作,以及非Io任务。在Channel初始化后会创建pipe...