美文网首页
netty的高性能之道

netty的高性能之道

作者: 剑道_7ffc | 来源:发表于2020-03-28 16:01 被阅读0次

    背景介绍

    Netty 惊人的性能数据

    使用Netty(NIO框架)相比于BIO性能提升8倍

    传统RPC调用性能差的三宗罪

    image.png

    网络传输方式问题:同步阻塞
    序列化方式问题:Bio使用的是java自身的序列化,而java自身的序列化存在序列化性能差,无法支持跨语言,序列化后的文件大等问题。
    线程模型问题:因为为每个连接创建一个线程,而一台机器的最大线程数是受限的,会导致线程过多时,执行效率的下降和超过最大线程数的机器宕机。

    高性能的三个主题

    传输:使用什么通道将数据传给对方,如BIO,NIO,AIO,IO模型的不同决定着性能的不同。
    协议:采用什么通信协议,如共有协议或自定义协议等
    线程:线程模型如BIO的连接和线程一对一的模型和Reactor线程模型


    image.png

    Netty 高性能之道

    异步非阻塞通信

    在处理多个客户端请求时,可以采用多线程或IO多路复用技术来处理,IO多路复用是把多个IO的阻塞复用到一个Select的阻塞,使单线程可以处理多个客户端请求。
    NIO通信模型如下


    image.png

    Netty 架构按照 Reactor 模式设计和实现,它的服务端通信序列图如下:


    image.png
    客户端通信序列图如下:
    image.png

    零拷贝

    内存池

    缓冲区重用机制

    高效的 Reactor 线程模型

    常用的 Reactor 线程模型有三种,分别如下:
    1 Reactor 单线程模型;


    image.png

    2 Reactor 多线程模型


    image.png
    3 主从 Reactor 多线程模型
    image.png

    无锁化的串行设计理念

    image.png

    高效的并发编程

    高性能的序列化框架

    Netty 默认提供了对 Google Protobuf 的支持,通过扩展 Netty 的编解码接口,用户可以实现其它的高性能序列化框架,

    灵活的 TCP 参数配置能力

    合理设置 TCP 参数在某些场景下对于性能的提升可以起到显著的效果。

    相关文章

      网友评论

          本文标题:netty的高性能之道

          本文链接:https://www.haomeiwen.com/subject/vvqsuhtx.html