当前位置: 七九推 > IT编程>软件设计>设计模式 > Reactor模式理解

Reactor模式理解

2022年06月23日 设计模式 我要评论
Reactor模式也可以叫反应器模式或者应答者模式reactor模式简介让我们先了解一下阻塞I/O与非阻塞I/OI/O 是非常缓慢的I/O绝对是计算机操作中最慢的。访问RAM的事件为ns级别,而访问磁

Reactor模式

也可以叫反应器模式或者应答者模式

reactor模式简介

让我们先了解一下阻塞I/O与非阻塞I/O

I/O 是非常缓慢的

I/O绝对是计算机操作中最慢的。访问RAM的事件为ns级别,而访问磁盘或网络上的数据是ms级别的。

阻塞I/O与非阻塞I/O

阻塞I/O的意思是,一个I/O相关的请求发送过来,相对应的函数调用,将阻塞的线程执行,直到操作完成
非阻塞I/O的意思是,一个I/O请求,系统收到后立即返回,然后系统会主动有一个轮询,当I/O请求完毕时,开始执行I/O相关的函数调用。
接下来我用一个经典的例子来描述这两种I/O的区别

以一个餐饮为例,每一个人来就餐就是一个事件,他会先看一下菜单,然后点餐。就像一个网站会有很多的请求,要求服务器做一些事情。处理这些就餐事件的就需要我们的服务人员了。

在多线程处理的方式会是这样的:

一个人来就餐,一个服务员去服务,然后客人会看菜单,点菜。 服务员将菜单给后厨。

二个人来就餐,二个服务员去服务……

五个人来就餐,五个服务员去服务……

这个就是多线程的处理方式,一个事件到来,就会有一个线程服务。很显然这种方式在人少的情况下会有很好的用户体验,每个客人都感觉自己是VIP,专人服务的。如果餐厅一直这样同一时间最多来5个客人,这家餐厅是可以很好的服务下去的。

来了一个好消息,因为这家店的服务好,吃饭的人多了起来。同一时间会来10个客人,老板很开心,但是只有5个服务员,这样就不能一对一服务了,有些客人就要没有人管了。老板就又请了5个服务员,现在好了,又能每个人都受VIP待遇了。

越来越多的人对这家餐厅满意,客源又多了,同时来吃饭的人到了20人,老板高兴不起来了,再请服务员吧,占地方不说,还要开工钱,再请人就攒不到钱了。怎么办呢?老板想了想,10个服务员对付20个客人也是能对付过来的,服务员勤快点就好了,伺候完一个客人马上伺候另外一个,还是来得及的。综合考虑了一下,老板决定就使用10个服务人员的线程池啦~~~

但是这样有一个比较严重的缺点就是,如果正在接受服务员服务的客人点菜很慢,其他的客人可能就要等好长时间了。有些火爆脾气的客人可能就等不了走人了。

而非阻塞I/O会选择这样做:

老板后来发现,客人点菜比较慢,大部服务员都在等着客人点菜,其实干的活不是太多。老板能当老板当然有点不一样的地方,终于发现了一个新的方法,那就是:当客人点菜的时候,服务员就可以去招呼其他客人了,等客人点好了菜,直接招呼一声“服务员”,马上就有个服务员过去服务。嘿嘿,然后在老板有了这个新的方法之后,就进行了一次裁员,只留了一个服务员!这就是用单个线程来做多线程的事。

事件多路分解器

大多数现代操作系统提供了一种本机机制,该机制通过一种有效的方式处理并发和非阻塞资源.这种机制称为同步事件多路分解器事件通知借口

使用Reactor模式时会发生什么

  1. 应用程序向事件多路分解器提交请求来生成新的I/O操作。应用程序还指定一个处理程序,当操作完成时将调用该处理程序。向事件多路分解器提交新请求是一种非阻塞调用,它立即将控制权返回给应用程序
  2. 当一组I/O操作完成时,事件多路分解器将新的事件推入Event Queue(事件队列)
  3. 此时,Event Loop 遍历Event Queue(事件队列).
  4. 对于每个事件,调用关联的处理程序。
  5. 处理程序是应用程序代码的一部分,当它执行完成时将把控制权返还给Event Loop.但是,在处理程序执行过程中可能会请求新的异步操作,从而导致新的操作被插入事件多路分解器
  6. Event Queue(事件队列) 中所有项目被处理完时,循环将再次阻塞事件多路分解器 ,当有新事件可用时,事件多路分解器 将出发另一个周期.
(0)
打赏 微信扫一扫 微信扫一扫

相关文章:

  • 23种设计模式概述

    23种设计模式概述

    设计模式共有23种,创建型模式5种,结构型模式7种,行为型模式11种,本章只做概念性说明。 ࿰... [阅读全文]
  • 设计模式 - 策略模式

    设计模式 - 策略模式

    前言:  先不管模式, 把他和他的名字都忘了, 来看看问题 和 设计思路. 为啥要这么做.场景:  有一家店铺, 里面有一个售货员, 售货员当然是要卖东西的啦,... [阅读全文]
  • 大话设计模式笔记(三)の六大原则

    大话设计模式笔记(三)の六大原则

    单一职责原则英文:single responsibility principle,简称srp。定义就一个类而言,应该仅有一个引起它变化的原因。描述如果一个类承担... [阅读全文]
  • 设计模式之工厂模式(三)

    上一次我们已经通过代码,简单的认识了工厂方法模式,具体的思路请移步到,进行查看。这次,让我们通过设计模式的思想,来好好认识下工厂方法模式。创建者和产品所有工厂模式都用来封装对象的创…

    2022年06月23日 软件设计
  • 创建型模式之工厂模式(2.2)

    创建型模式之工厂模式(2.2)

    什么是工厂模式?工厂模式是创建型模式的一种,工厂是用来生产的,而在java里,是用来生产对象实例的。和单例模式相似,工厂模式同样聚焦于在考虑整个软件构建的情况下... [阅读全文]
  • 设计模式--Proxy模式

    设计模式--Proxy模式

    这篇主要介绍代理模式相关内容,主要是一些基本概念普及。代理模式1、什么是代理模式?代理模式(proxy),为其他对象提供一种代理以控制对这个对象的访问。[dp]... [阅读全文]

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2022  七九推 保留所有权利. 粤ICP备17035492号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com