zoukankan      html  css  js  c++  java
  • Netty是什么?它能干什么?

    Netty

    异步事件驱动的网络应用程序框架。

    特点

    • 高并发
      • 通过Reactor模型基于NIO开发的网络通信框架 
    • 传输快
      • 零拷贝
        • Netty的接受和发送bytebuffer使用堆外直接内存进行socket读写,传统堆内存进行socket读写,JVM将堆内存buffer拷贝到内存,然后写入socket。相比之下,消息在发送多了一次缓冲区的内存拷贝。 
        • Netty提供buffer,聚合多个bytebuffer。传统通过内存拷贝将多个小buffer合并大的buffer。
        • Netty文件传输使用transferto,直接将文件缓冲区的数据发送到目标channel。传统通过循环write导致内存拷贝。  
    • 使用简单
      • 封装NIO,提供调用接口
    • 功能强大
      • 预置多种编解码功能
      • 支持多种主流协议
      • 通过channelhandler对通信框架扩展
    • 性能高
      • IO线程模型
      • 内存零拷贝
      • 内存池设计
      • 串行化处理读写
      • 高性能序列化协议 
    • 稳定
      • 修复所有NIO bug
        • epoll bug,导致selector空轮询,最终导致CPU100% 

    应用场景

    • RPC框架实现的基础通信组件,用于各进程节点间的内部通信
    • 定制私有协议栈,Netty提供TCP/UDP和HTTP协议栈
    • 跨界点通信

    发送消息方式

    • 直接写入channel,消息从channelpipeline的尾部移动
    • 写入channelhandler绑定的channelhandlercontext,消息从channelpipeline的下一个channelhandler移动

     事件驱动模型

    • 轮询
    • 事件驱动方式。boss线程和work线程,boss线程把事件放入事件队列,work线程消费事件队列中的事件,调用对应的handler处理事件。

    Reactor线程模型

    单Reactor单线程

    单Reactor多线程

    一个线程负责监听服务端,接受客户端TCP连接请求;一个线程同时处理多条链路,一个链路只对应一个线程

    主从Reactor多线程

    服务器Netty工作架构

    每个端口对应一个boss线程

  • 相关阅读:
    看了前辈缠中说禅及其反响,忍不住想说些东西
    利弗莫尔的操盘精华篇
    缠中说禅:教你炒股票108课(转载)
    评温斯坦的炒股书(非常重要,常看看)
    本散女2
    使用PHP-GTK编写一个windows桌面应用程序
    php.exe php-cgi.exe php-win.exe的区别
    php调试利器之phpdbg
    yaf框架安装配置
    phalcon框架安装
  • 原文地址:https://www.cnblogs.com/ivy-xu/p/12656290.html
Copyright © 2011-2022 走看看