Reactor模型和Proactor模型详解
创作时间:
作者:
@小白创作中心
Reactor模型和Proactor模型详解
引用
CSDN
1.
https://m.blog.csdn.net/weixin_68074170/article/details/140724998
在网络IO设计中,Reactor模型和Proactor模型是两种重要的高性能模型。它们都基于事件分发机制,但处理IO事件的方式有所不同。本文将详细介绍这两种模型的工作原理、应用场景以及它们之间的区别。
一、Reactor模型
Reactor模型主要负责监听事件、分发事件和处理事件。其中,Reactor角色负责监听事件和分发事件,Handler角色和Acceptor角色负责处理事件。
1. 单Reactor单线程(Redis使用)
Java语言实现的是「单Reactor单线程」的方案。由于Java程序运行在Java虚拟机中,虚拟机中有多个线程,而我们写的Java程序只是其中一个线程。
优点
- 将所有处理逻辑放在一个线程中实现,避免了多线程通信和竞争的问题。
缺点
- 在面对瞬间高并发场景时,容易成为性能瓶颈。
- 一旦Reactor线程意外中断或进入死循环,会导致整个系统通信模块不可用。
- 只有一个线程在工作,无法充分利用多核CPU的优势。
- Handler对象在业务处理时,整个线程无法处理其他连接的事件。
2. 单Reactor多线程
优点
- 多线程模式可以充分利用多核CPU的性能。
缺点
- 单Reactor存在两个问题(同上)。
- Handler使用多线程模式会带来多线程竞争资源的开销,实现复杂。
3. 主从Reactor多线程(Netty使用)
思考:为什么一个Reactor同时监听连接事件和处理读写事件是不好的?
- 处理读写请求时涉及业务逻辑处理,相对慢很多,容易造成性能瓶颈。
- 客户端连接建立不频繁,但数据收发频繁。如果将处理读写事件拆分给多个子Reactor,主Reactor只负责监听连接事件,整体效率会提升。
工作流程
- 主线程中的MainReactor对象通过select监控连接建立事件,收到事件后通过Acceptor对象的accept获取连接,分配给某个子线程;
- 子线程中的SubReactor对象将MainReactor对象分配的连接加入select继续监听,并创建Handler处理连接的响应事件。
优点
- 主线程和子线程分工明确,主线程只负责接收新连接,子线程负责业务处理。
- 交互简单,子线程接收连接后只管业务处理,无须关注主线程。
- 适用于高并发场景。
二、Proactor模型
关于同步与异步的概念,可以参考相关资料。
- Reactor是非阻塞同步网络模式,感知的是就绪可读写事件。在每次感知到有事件发生(比如可读就绪事件)后,需要应用进程主动调用read方法来完成数据读取,这个过程是同步的。
- Proactor是异步网络模式,感知的是已完成的读写事件。在发起异步读写请求时,需要传入数据缓冲区的地址等信息,操作系统会自动完成数据读写工作,操作系统完成读写工作后,会通知应用进程直接处理数据。
因此,Reactor可以理解为「来了事件操作系统通知应用进程,让应用进程来处理」,而Proactor可以理解为「来了事件操作系统来处理,处理完再通知应用进程」。
工作流程
- Proactor Initiator创建Proactor和Handler对象,并通过Asynchronous Operation Processor注册到内核;
- Asynchronous Operation Processor处理注册请求和I/O操作;
- 完成I/O操作后通知Proactor;
- Proactor根据事件类型回调不同的Handler进行业务处理;
- Handler完成业务处理。
三、总结
无论是Reactor还是Proactor,都是基于事件分发的网络编程模式,区别在于Reactor模式基于「待完成」的I/O事件,而Proactor模式基于「已完成」的I/O事件。选择哪种模型取决于具体的应用场景和性能需求。
热门推荐
信用卡诈骗罪判刑案例分析:三种常见手法及法律防范建议
中国作为全球气候变化的敏感区域之一,受海平面上升的影响有多大?
武汉探索解决外卖骑手"进门难":多方联动打造100个"友好小区"
60日柱在12长生中的意义详解
keshi全球巡演中国站:上海、广州站票务信息全攻略
游戏设计师可以使用哪些创作平台赚取收入?
如何高效制作美观实用的表格:工具、步骤与设计技巧解析
神话中的黑暗神与光明神:不同文化中的光明与黑暗
七杀大运流年食神格局解析
辽宁秋季自驾游最佳路线推荐
逻辑变了?股市为何会“脱敏”汇率
合肥:公交到哪里,扫一扫就知道
肩周炎患者的最佳睡姿指南
你真的会拍鸟吗?教你拍鸟的对焦操作、对焦按钮设置和追焦技巧
防弹咖啡:减肥神器还是健康陷阱?
5个瑜伽体式改善圆肩驼背,恢复挺拔身姿
又一间英国音乐学院即将关闭
2025年5月宝宝五行解析与取名指南
浮漂的一沉一浮,藏着鱼儿咬钩的秘密
与AI恋爱能实现“情绪价值”吗
多特蒙德遭遇严重伤病潮,高层夏季决策现隐患
《山海经》中的"珥蛇":解读中国龙蛇信仰的文化密码
北京脑所:中国脑机接口技术的突破与挑战
新房甲醛科学去除方法综述,助您保障家庭健康
律师指导下的房屋租赁合同撰写技巧
《敢问路在何方》:一首歌里的文化传承与人生智慧
如何给电脑文件夹设置密码以保护个人隐私和数据安全
学会准备工作,做出美味的凉皮(从原材料到制作工具,全方位指导准备工作)
重置心态:在快节奏生活中寻找自我反思与成长的机会
你对硬皮病了解多少?