首页 > 其他分享 >Reactor模式

Reactor模式

时间:2022-11-14 20:44:19浏览次数:61  
标签:侍应生 模式 接待员 线程 多线程 Reactor

Reactor模式基本设计思想,简单来讲就是I/O复用结合线程池

 

Reactor 模式,是指通过一个或多个输入同时传递给服务处理器的服务请求的事件驱动处理模式。

服务端程序处理传入多路请求,并将它们同步分派给请求对应的处理线程,Reactor 模式也叫 Dispatcher 模式。

即 I/O 多路复用统一监听事件,收到事件后分发(Dispatch 给某进程),是编写高性能网络服务器的必备技术之一。 Reactor 模式中有 2 个关键组成:

  • 1)Reactor:Reactor 在一个单独的线程中运行,负责监听和分发事件,分发给适当的处理程序来对 IO 事件做出反应。它就像公司的电话接线员,它接听来自客户的电话并将线路转移到适当的联系人;
  • 2)Handlers:处理程序执行 I/O 事件要完成的实际事件,类似于客户想要与之交谈的公司中的实际官员。Reactor 通过调度适当的处理程序来响应 I/O 事件,处理程序执行非阻塞操作。

根据 Reactor 的数量和处理资源池线程的数量不同,有 3 种典型的实现:

  • 1)单 Reactor 单线程;
  • 2)单 Reactor 多线程;
  • 3)主从 Reactor 多线程。

 

3 种模式可以用个比喻来理解:(餐厅常常雇佣接待员负责迎接顾客,当顾客入坐后,侍应生专门为这张桌子服务)

  • 1)单 Reactor 单线程,接待员和侍应生是同一个人,全程为顾客服务;
  • 2)单 Reactor 多线程,1 个接待员,多个侍应生,接待员只负责接待;
  • 3)主从 Reactor 多线程,多个接待员,多个侍应生。

Reactor 模式具有如下的优点:

  • 1)响应快,不必为单个同步时间所阻塞,虽然 Reactor 本身依然是同步的;
  • 2)编程相对简单,可以最大程度的避免复杂的多线程及同步问题,并且避免了多线程/进程的切换开销;
  • 3)可扩展性,可以方便的通过增加 Reactor 实例个数来充分利用 CPU 资源;
  • 4)可复用性,Reactor 模型本身与具体事件处理逻辑无关,具有很高的复用性。

标签:侍应生,模式,接待员,线程,多线程,Reactor
From: https://www.cnblogs.com/ztcly/p/16888538.html

相关文章

  • ActiveMQ经典的使用模式(利用多线程处理消费端)
    今天看视频,里面讲了一个经典的例子,是工作中很常用的,特此将这种模式记录下来.这个例子使用了ActiveMQ的选择器,也使用了之前学的自定义线程池.队列的使用,而且很好的利......
  • Spring框架中都用到了哪些设计模式 ?
    1.简单工厂模式简单工厂模式的本质就是一个工厂类根据传入的参数,动态的决定实例化哪个类。Spring中的BeanFactory就是简单工厂模式的体现,根据传入一个唯一的标识来获得......
  • 线程隔离(舱壁模式)
    线程隔离(舱壁模式)1.线程隔离的实现方式线程隔离有两种方式实现:线程池隔离信号量隔离(Sentinel默认采用)线程池隔离:给每个服务调用业务分配一个线程池,利用线程池本身......
  • 设计模式之【建造者模式】使用java建造者模式优雅创建对象
    文章目录​​什么是建造者模式​​​​一步一步认清建造者模式​​​​1、传统方式创建对象​​​​2、建造者模式创建对象​​​​建造者模式优缺点​​​​建造者模式适用......
  • 学习笔记-《游戏编程模式》
    《游戏编程模式》全书内容梗概总结这是一篇超过万字读书笔记,总结了《游戏编程模式》一书中所有章节与内容的知识梗概。 目录与说明《游戏编程模式》一书中总共介绍......
  • Java中DCL单例模式设计
    概述单例:某个类,对外永远只有一个对象。实现步骤:/***单例模式:懒汉式套路基础上加入并发控制(synchronized、volatile),保证多线程环境下,对外始终只有一个对象。*1、......
  • 转载 从瀑布到敏捷——漫画解读软件开发模式变迁史
      这张图片从上向下,五个房间,分别是瀑布模型(waterfall),敏捷开发(agile),看板(KANBAN),SCRUM和精益软件开发(lean)。软件过程:软件工程是为了获得高质量软件所需要完成的一系列......
  • 工厂方法模式
    概述《设计模式》中对工厂方法模式的意图描述如下:定义一个创建对象的接口,让子类来决定实例化哪一个类。FactoryMethod使得一个类的实例化延迟到子类一般工厂方法模......
  • 软件设计模式白话文系列(八)桥接模式
    软件设计模式白话文系列(八)桥接模式1、描述把一个事物的多个维度剥离出来,通过组合方式来达到灵活设计的目的,Java中,我们一般是通过对象引用来替换继承关系,从而将抽象和实......
  • 部署Kubernetes 1.25.4初始ipvs模式
    1、环境准备主机名IP地址系统版本k8s-master01k8s-master01.wang.org​kubeapi.wang.orgkubeapi192.168.100.201Ubuntu2004k8s-master02k8s-master02.wang.org192.168.1......