reactor

 在Reactor中,这些被拆分的小线程或者子过程对应的是handler,每一种

handler会处理一种event。这里会有一个全局的管理者selector,我们

需要把channel注册感兴趣的事件,那么这个selector就会不断在channel上检测是否有该类型的事件发生

如果没有,那么主线程就会被阻塞,否则就会调用响应的事件处理函数即handler来处理

典型的事件有连接、读取、写入,需要为这些事件提供处理器

每个处理器可以采用线程的方式。一个连接来了

显示被读取线程或者handler处理了

饭后在执行写入,那么之前的读取就可以被后面的请求复用,吞吐量就高了

 

 

 

这种模型由于io在阻塞时会一直等待,因此在用户负载增加时,性能下降的非常快

server导致阻塞的原因

    1. server socket 的accept 方法, 阻塞等待client连接,知道client连接成功

    2.线程从 socket inputstream读取数据,会进入阻塞状态,直到数据全部读完

    3.线程向socket outputstream写入数据,会阻塞知道全部数据写完。

改进:采用基于时间驱动的设计,当有事件触发时,才会调用处理器进行数据处理

Reactor:负责响应IO事件,当检测到一个新事件,将其发给相应的handler去处理

handler:服务处理非阻塞行为,表示系统管理的资源;同时将handler与事件绑定

Reactor为单个线程,需要处理accept连接,同时发送请求到处理器中

由于只有单个线程,所以处理器总的业务需要能够快速处理完

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值