什么是reactor以及其三种版本

写在前面

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

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

为了更好的理解什么是reactor,我们结合现实生活中的例子来看下。

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

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

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

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

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

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

结合例子,再来看下rector的三种版本,首先王大勺一个人干活,就可以对应到reactor的第一个版本,所有的事情都是一个线程来干,如下图:

也就是单线程版本,同样这个线程也会很累的。

其次,翠花招了很多人一起干活,就对应了reactor的第二个版本:

也就是多线程版本,但不同于例子,大家都干所有的活,reactor的多线程版本只是定义了使用线程池来执行解码,业务处理,编码的工作,这个要注意。

最后,翠花招了几个俊男靓女专门负责接待的工作,就对应了rector的第三个版本:

在多线程版本上进一步升级,一个线程专门负责接收连接,接受连接的工作类似于迎宾,也是最重要的,毕竟如果因为线程忙于其他事情而导致客户端连接超时的话,则程序可能就会出现比较大的问题,相反的,收发消息稍微慢一点点其实是关系不大的。

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

写在后面

参考文章列表

相关推荐
CoderJia程序员甲2 个月前
重学SpringBoot3-Spring WebFlux之HttpHandler和HttpServer
java·spring boot·reactor·1024程序员节
Moon也爱算法呀2 个月前
关于个人开源网络库MoonNet
linux·c++·开源·github·reactor·网络库
诡异森林。2 个月前
Linux--epoll(ET)实现Reactor模式
linux·运维·github·reactor·reactor反应堆
玩AI的小胡子4 个月前
AI人像换脸!Reactor插件本地部署方法(含报错解决及整合包)
ai作画·stable diffusion·aigc·reactor·ai写真
重庆大傑6 个月前
Reactor模型:网络线程模型演进
java·服务器·网络·reactor·nio
重庆大傑6 个月前
Socket 原理和思考
java·reactor·socket·nio
炫酷的伊莉娜7 个月前
【Linux 网络】高级 IO -- 详解
linux·网络·select·reactor·高级io·epoll·poll
东皋长歌7 个月前
响应式编程Spring Reactor探索
java·开发语言·spring·reactor·响应式编程
haidi88 个月前
一篇了解reactor框架特性
java·reactor·reactor代码调试