几种reactor模型

Reactor模型是用于处理并发I/O的关键设计,包括单reactor、单reactor+任务队列+线程池、多reactor以及多进程实现。它通过事件循环和事件驱动优化了网络连接和业务处理,例如在redis和memcached中应用。多线程和线程池的引入解决了资源争抢,而多reactor设计则将接收连接和处理读写事件分开,提高了系统效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

reactor模型

  • 组成:非阻塞的I/O+I/O多路复用
  • 特征:基于事件循环,以事件驱动或事件回调的方式实现业务逻辑
  • 表述:将连接的I/O处理转化为事件处理

单reactor

在这里插入图片描述
使用1个epoll和1个线程
代表:redis 内存数据库 操作redis当中的数据结构
redis6.0多线程 处理数据的解压缩 数据压缩
放在多线程中处理resp协议 数据解压缩会损耗cpu 影响其他网络处理

单reactor+任务队列+线程池

在这里插入图片描述
解决网络连接和业务处理之间的相互影响,做任务队列来解耦,用线程池来消费
一个线程处理网络事件,多个线程处理任务队列,读到数据以后写到任务队列中,然后再交给线程池处理

多reactor

在这里插入图片描述
每个线程对应一个epoll reactor
接收连接的事件和处理读写事件进行分离
接收连接用一个epoll
处理一个读写是一个epoll
应用:memcached

多进程

在这里插入图片描述
每个worker进程都有一个reactor 谁拿到这把锁,就有处理连接的权利,可以解决惊群问题。
accept接收新的连接后,返回fd,交给epoll来处理,再将锁释放

多reactor+消息队列+线程池

业务场景中比较多 网络密集型+业务密集型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值