美文网首页
Reactor Core

Reactor Core

作者: 高山之水 | 来源:发表于2017-11-28 11:58 被阅读0次

    本文从 介绍下 Reactor (反应堆)
    首先简单介绍Reactor 是什么东西、
    其次解决什么问题、
    领域应用、
    原理、
    优点和缺点、

    1、简介


    image.png

    2、解决问题


    image.png

    3、领域应用
    举个比较熟悉的例子 dubbo
    dubbo底层使用了netty线程模型 netty 中使用了reactor模式

    那么什么是reactor模式?


    image.png

    Reactor三种模型


    image.png

    Netty线程模型


    image.png

    Netty结构


    image.png

    dubbo中使用的netty


    image.png

    4、Reactor 原理介绍

    4.1 Reactor模式结构

    image.png image.png

    4.2Reactor模式模块之间的交互

    image.png image.png image.png image.png

    5、 Reactor优点

    Reactor An Object Behavioral Pattern for Demultiplexing and Dispatching Handles for Synchronous Events
    解耦、提升复用性、模块化、可移植性、事件驱动、细力度的并发控制等。
    相比 传统的实现、即线程的切换、同步、数据的移动会引起性能问题。也就是说从性能的角度上,它最大的提升就是减少了性能的使用,即不需要每个Client对应一个线程

    关于 减少使用线程使用 对性能提升的影响 可看这篇论文

    SEDA: Staged Event-Driven Architecture - An Architecture for Well-Conditioned, Scalable Internet Service

    对随着线程的增长带来性能降低做了一个统计:

    image.png

    在这个统计中,每个线程从磁盘中读8KB数据,每个线程读同一个文件,因而数据本身是缓存在操作系统内部的,即减少IO的影响;所有线程是事先分配的,不会有线程启动的影响;所有任务在测试内部产生,因而不会有网络的影响。该统计数据运行环境:Linux 2.2.14,2GB内存,4-way 500MHz Pentium III。从图中可以看出,随着线程的增长,吞吐量在线程数为8个左右的时候开始线性下降,并且到64个以后而迅速下降,其相应事件也在线程达到256个后指数上升。即1+1<2,因为线程切换、同步、数据移动会有性能损失,线程数增加到一定数量时,这种性能影响效果会更加明显。

    6.Reactor模式的缺点

    image.png

    相关文章

      网友评论

          本文标题:Reactor Core

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