zoukankan      html  css  js  c++  java
  • 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. 实现消息推送系统。
  • 相关阅读:
    Node学习之(第二章:http模块)
    Node.js学习(第二章:node核心模块--fs)
    Node.js学习(第一章:Node.js安装和模块化理解)
    Node.js学习(第一章:Node.js简介)
    js控制手机震动
    js发送windows提示信息
    js操作一般文件和csv文件
    js操作indexedDB增删改查示例
    js获取用户实时地理位置
    js处理数值和日期本地化
  • 原文地址:https://www.cnblogs.com/bl123/p/15577713.html
Copyright © 2011-2022 走看看