什么是reactor以及其三种版本

写在前面

本文来看下什么是reactor以及其三种版本。

1:什么是reactor以及其三种版本

为了更好的理解什么是reactor,我们结合现实生活中的例子来看下。
翠花是个貌美如花的姑娘,人称赛东施,她的梦想是嫁给王子,可是天不随人愿,最终她嫁给了王大勺,看名字可能你已经猜出来了,王大勺他是一个厨子。王大勺有一个小饭馆,规模不大,翠花不干活,就是指挥王大勺干活,因为人少,所以,以下的工作都是王大勺的:

迎宾,做菜,上菜,收拾碗筷桌子等

因为翠花指挥得当,王大勺的生意蒸蒸日上,如是乎,换了更大的门脸,但是渐渐的随着客人的增多,王大勺一个人已经显得力不从心了,忙不过来了,很累很累了,但是,翠花的做法不是自己下手,而是又招了几个人来做和王大勺一样的活,还是:

迎宾,做菜,上菜,收拾碗筷桌子等

终于,我们的王大勺可以喘口气了,但是,生意越来越好,新的问题出现了,什么问题呢?所有人都在忙着做菜,导致客人来了也没有人去迎宾,白白流失了客源,这个时候我们聪明的翠花同学也发现这个问题了,她的做法是什么呢?翠花又重新招了几个俊男靓女专门负责接待的工作,因为接待的工作太重要了,你做饭慢一点点其实关系不大的,但是如果因为没有迎宾导致客源流失就损失太大了,所以不得不说,咱们这位有着王子妃梦想的翠花还是蛮有商业头脑的呢!

如果对应到我们例子里的话,线程对应的就是王大勺,reactor就可以对应到翠花了。所以,reactor是什么呢?可以看作是线程工作的指挥官,规定了哪些线程应该做哪些工作,所以,reactor其实就是一种定义线程如何工作的工作模式了。

结合例子,再来看下rector的三种版本,首先王大勺一个人干活,就可以对应到reactor的第一个版本,所有的事情都是一个线程来干,如下图:
在这里插入图片描述
也就是单线程版本,同样这个线程也会很累的。
其次,翠花招了很多人一起干活,就对应了reactor的第二个版本:
在这里插入图片描述
也就是多线程版本,但不同于例子,大家都干所有的活,reactor的多线程版本只是定义了使用线程池来执行解码,业务处理,编码的工作,这个要注意。
最后,翠花招了几个俊男靓女专门负责接待的工作,就对应了rector的第三个版本:
在这里插入图片描述
在多线程版本上进一步升级,一个线程专门负责接收连接,接受连接的工作类似于迎宾,也是最重要的,毕竟如果因为线程忙于其他事情而导致客户端连接超时的话,则程序可能就会出现比较大的问题,相反的,收发消息稍微慢一点点其实是关系不大的。

工作中如果需要的话,无脑选择第三种版本即可,因为他能保证最重要的事情一定会去做,其他的事情也会去做,只不过可能晚一点点而已(也不一定哈)

写在后面

参考文章列表

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/437903.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

hystrix微服务部署

目录 一.启动nacos和redis 1.查看是否有nacos和redis 二.开始项目 1.hystrix1工程(修改一下工程的注册名字) 2.运行登录nacos网站查看运行效果(默认密码nacos,nacos) 3.开启第二个项目 hystrix2工程 4.关闭第二个项目 hyst…

SpringBoot学习笔记(2)

1.静态文件访问 使用IDEA创建Spring Boot项目,会默认创建出classpath:/static/目录,静态资源一般放在这个目录下即可。 如果默认的静态资源过滤策略不能满足开发需求,也可以自定义静态资源过滤策略。 1.1直接访问 在application.properties中…

Coze:如何使用主页对话框?

你好,我是三桥君 我们今天要介绍的功能模块是“主页对话框”。 目录 访问官网 登录首页 基本功能 主页对话框 第一个功能:如何与自己收藏的机器人进行对话? 第二个功能:如何请求主页对话框的机器人帮助创建一个新的机器人&#x…

【北京迅为】《STM32MP157开发板嵌入式开发指南》- 第十八章 Linux编写第一个自己的命令

iTOP-STM32MP157开发板采用ST推出的双核cortex-A7单核cortex-M4异构处理器,既可用Linux、又可以用于STM32单片机开发。开发板采用核心板底板结构,主频650M、1G内存、8G存储,核心板采用工业级板对板连接器,高可靠,牢固耐…

【算法系列-数组】螺旋矩阵(模拟)

【算法系列-数组】螺旋矩阵(模拟) 文章目录 【算法系列-数组】螺旋矩阵(模拟)1. 螺旋矩阵II(LeetCode 59)1.1 思路分析🎯1.2 解题过程🎬1.3 代码示例🌰 2. 螺旋矩阵(LeetCode 54)2.1 思路分析🎯2.2 解题过程🎬2.3 代码…

如何使用ssm实现基于web的网站的设计与实现+vue

TOC ssm756基于web的网站的设计与实现vue 绪论 1.1 研究背景 当前社会各行业领域竞争压力非常大,随着当前时代的信息化,科学化发展,让社会各行业领域都争相使用新的信息技术,对行业内的各种相关数据进行科学化,规范…

极端天气道路目标检测数据集 3400张 带标注 VOC YOLO 6类

分类名: (图片张数,标注个数) car: (3210, 13654) truck: (1168,1629) per son: (1517,4359) bicyc le: (334, 589) bus: (381, 439) motorcycle: (164, 214) 总数: (3404, 20884) 总类(nc): 6类 极端天气道路目标检测…

09_OpenCV彩色图片直方图

import cv2 import numpy as np import matplotlib.pyplot as plt %matplotlib inlineimg cv2.imread(computer.jpeg, 1) img cv2.cvtColor(img, cv2.COLOR_BGR2RGB) plt.imshow(img) plt.show()plot绘制直方图 plt.hist(img.ravel(), 256) #ravel() 二维降一维 256灰度级…

pycharm汉化插件无法使用也无法卸载的解决方法

pycharm汉化插件无法使用也无法卸载的解决方法 本文目录: 一、故障描述 二、故障解决 零、时光宝盒 学习没有可能一帆风顺,我们都是在不断遇到的各种突发问题,不断努力解决的过程中成长。 前几天,我发现家里的网络晚上12点左右开…

初识算法 · 双指针(3)

目录 前言: 和为s的两数之和 题目解析: ​编辑 算法原理: 算法编写: 三数之和 题目解析 算法原理 算法编写 前言: 本文通过介绍和为S的两数之和,以及三数之和,对双指针算法进行深一步…

欧科云链OKLink相约TOKEN2049:更全面、多元与安全

过去几日,OKLink 与全球 Web3 从业者与爱好者们相约狮城。在多场激动人心的活动上分享了我们的产品进展、有关于链上数据的专家观点以及打磨产品的经验。同时也听到了很多来自行业的宝贵声音。跟随我们的脚步,捕捉这充实一周的精彩瞬间: 1、…

netty之基础aio,bio,nio

前言 在Java中,提供了一些关于使用IO的API,可以供开发者来读写外部数据和文件,我们称这些API为Java IO。IO是Java中比较重要知识点,且比较难学习的知识点。并且随着Java的发展为提供更好的数据传输性能,目前有三种IO共…

5G NR SSB简介

文章目录 SSB介绍SSB波束扫描 SSB介绍 5G NR 引入了SSB 这个概念,同步信号和PBCH块(Synchronization Signal and PBCH block, 简称SSB) 它由主同步信号(Primary Synchronization Signals, 简称PSS)、辅同步信号(Secondary Synchronization Signals, 简称SSS)、PBCH…

【分页】Spring Boot 列表分页 + javaScript前台展示

后端: 准备好查询实体与分页实体 1、分页工具实体 package com.ruoyi.dms.config;import com.alibaba.nacos.api.model.v2.Result; import lombok.Data;import java.io.Serializable; import java.util.List;/*** author 宁兴星* description: 列表返回结果集*/ …

【10】纯血鸿蒙HarmonyOS NEXT星河版开发0基础学习笔记-泛型基础全解(泛型函数、泛型接口、泛型类)及参数、接口补充

序言: 本文详细讲解了关于ArkTs语言中的泛型,其中包含泛型函数、泛型接口、泛型约束、泛型类及其中参数的使用方法,补充了一部分接口相关的知识,包括接口的继承和具体实现,也写到了一些边边角角的小知识,剩…

详细介绍:API 和 SPI 的区别

文章目录 Java SPI (Service Provider Interface) 和 API (Application Programming Interface) 的区别详解目录1. 定义和目的1.1 API (Application Programming Interface)1.2 SPI (Service Provider Interface) 2. 使用场景2.1 API 的应用场景2.2 SPI 的应用场景 3. 加载和调…

jmeter学习(1)线程组与发送请求

1、线程组 执行顺序 :setUp线程组 > 线程组 > tearDown线程组 2、 发送请求 可以发送http、java、dubbo 请求等 下面讲解发送http 1)Http请求默认值 作用范围是该线程组下的所有HTTP请求,如果http请求设置的与默认值冲突&#xff0…

PC端微信小程序如何调试?

向往常一样运行开微信小程序开发者工具 如果只弹出pc端小程序,没有出现调试的界面:点击胶囊按钮的三个…选择重新进入小程序 即可依次展开相应的功能调试,改完代码没反应再刷新看看,再没反应就再次重新点击编译并自动调试。

【学习笔记】手写 Tomcat 六

目录 一、线程池 1. 构建线程池的类 2. 创建任务 3. 执行任务 测试 二、URL编码 解决方案 测试 三、如何接收客户端发送的全部信息 解决方案 测试 四、作业 1. 了解工厂模式 2. 了解反射技术 一、线程池 昨天使用了数据库连接池,我们了解了连接池的优…

DSPy101

DSPy 介绍 DSPy(Declarative Self-improved Language Programs in Python) 是一个用于系统化和增强在流水线内使用语言模型的框架,它通过数据驱动和意图驱动的系统来优化大型语言模型(LLM)的使用。 DSPy 的核心是模块…