Reactor设计模式

Reactor模式简介

Reactor模式是一个基于事件分发的模式。主要用于IO多路复用。

当一个事件到来的时候,Reactor根据事件的不同类型,通知对应的handler处理。

Reactor详解

本文拿 网络IO多路复用来举例,我们都知道IO多路复用可以提高服务器的并发处理能力!

IO多路复用就是一个线程可以监控多个socket,减少线程的创建。当服务器连接数过多的时候,IO多路复用能够减少线程数,也可以减少线程上线切换导致的资源浪费。

但是socket分为两种情况:
1、负责新建连接的socket
2、用于读取数据的socket

对于这两种socket,处理方式是不同的。Reactor模式可以根据事件的不同,将这两种不同的情况分发给不同的handler。

在这里插入图片描述
如上图所示,Reactor用于接收事件,然后分发事件,如果是新建连接事件,就分发给Acceptor处理,如果是读取事件,就将数据分发给Handler处理

上述是单Reactor单线程处理模式,也就是所有的事件都分发给一个Reactor,并且对于所有的事件的处理都是在一个线程中的,这样会导致无法利用多核资源。

单Reactor多线程模型

在这里插入图片描述
单Reactor多线程模式下,Reactor将对应的任务提交给对应的handler,handler会利用线程池的资源来执行对应的任务,利用多核能够提高处理的效率

多Reactor多线程模型

在这里插入图片描述
多Reactor多线程模式下,会有MainReactor和多个SubReactor。
MainReactor只负责socket的新建连接事件,不会再监听socket的读取事件,而是会指定对应的SubReactor来监听socket的读取事件

SubReactor只负责监听多个socket的监听事件。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值