美文网首页技术栈
2019-05-08——Java NIO Reactor模式

2019-05-08——Java NIO Reactor模式

作者: 烟雨乱平生 | 来源:发表于2019-05-08 15:53 被阅读0次

Reactor

反应器设计模式(Reactor pattern)是一种为处理并发服务请求,并将请求提交到一个或者多个服务处理程序的事件设计模式。当客户端请求抵达后,服务处理程序使用多路分配策略,由一个非阻塞的线程来接收所有的请求,然后派发这些请求至相关的工作线程进行处理。

传统的并发处理

传统的网络请求并发处理是为每一个socket开启一个线程


image.png

该模式的缺点显而易见:
1、当请求比较多时,系统的性能会下降,因为创建和回收线程会消耗资源
2、当请求激增时,由于系统资源有限,请求可能会被阻塞
3、当请求处于I/O阻塞的时候,系统的资源被浪费了

Reactor设计模式

为了解决传统的多线程处理并发请求的缺陷,设计人员采用一种基于事件驱动的设计模式,这就是Reactor。

  • Reactor是采用基于事件驱动的设计,当有事件触发时,才会调用处理器进行数据处理。


    image.png
  • 通过改进使用多线程处理业务逻辑


    image.png
  • 对于多个CPU的机器,为充分利用系统资源,将Reactor拆分为两部分。


    image.png

Reactor模式结构

image.png

Reactor模式主要有一下几个角色:

  • Handle: 是事件的发源地,比如一个网络socket、磁盘文件等。而发生在handle上的事件可以有connection、ready for read、ready for write等。
  • Synchronous Event Demultiplexer:同步事件分离器,本质上是系统调用。阻塞等待一系列的Handle中的事件到来,如果阻塞等待返回,即表示在返回的Handle中可以不阻塞的执行返回的事件类型。这个模块一般使用操作系统的select来实现。
  • Initiation Dispatcher:初始分发器,也是reactor角色,提供了注册、删除与转发event handler的方法。当Synchronous Event Demultiplexer检测到handle上有事件发生时,便会通知initiation dispatcher调用特定的event handler的回调方法。
  • Event Handler事件处理器,其会定义一些回调方法或者称为钩子函数,当handle上有事件发生时,回调方法便会执行,一种事件处理机制。
  • Concrete Event Handler:具体的事件处理器,实现了Event Handler。

在处理web请求时,通常有两种体系结构,分别为:thread-based architecture(基于线程)、event-driven architecture(事件驱动)

事件驱动体系结构是目前比较广泛使用的一种。这种方式会定义一系列的事件处理器来响应事件的发生,并且将服务端接受连接与对事件的处理分离。其中,事件是一种状态的改变。比如,tcp中socket的new incoming connection、ready for read、ready for write。


相关文章

  • Reactor反应式模式(事件驱动模式)

    一 reactor的前世今生 高性能IO绕不开Reactor模式,NIO是Java对Reactor模式的实践,而...

  • Reactor模式

    关键词:Reactor模式 IO NIO 阻塞 异步 阻塞/异步概念:读网络教科书 Java NIO和IO区...

  • 2019-05-08——Java NIO Reactor模式

    Reactor 反应器设计模式(Reactor pattern)是一种为处理并发服务请求,并将请求提交到一个或者多...

  • 第十二节 netty前传-NIO 实现reactor模式

    本节所要了解java nio的reactor模式,参考来源Doug lee java并发的作者。当然作为netty...

  • Netty浅析

    IO模型 IO多路复用模式:Reactor、Proactor NIO实现的是Reactor模式。通过select、...

  • Netty理论三:Netty线程模型

    1、Reactor模式:NIO网络框架的典型模式 Reactor是网络编程中的一种设计模式,reactor会解耦并...

  • Java NIO-Reactor模式

    Reactor模式:通过注册感兴趣的事件及扫描是否有感兴趣的事件发生,从而做出相应。 Reactor模式 客户端示...

  • Java NIO与Reactor模式

     NIO(Non-blocking I/O),非阻塞的I/O模型。自java1.4版本之后推出,为什么在已有I/O...

  • NIO Reactor模式

      NIO(Non-blocking I/O,在Java领域,也称为New I/O),是一种同步非阻塞的I/O模型...

  • <>reactor模式

    reactor 模式的五大组成部分 对比 每一部分的理解 Handle 句柄或者描述符。 本质上是操作系统提供的一...

网友评论

    本文标题:2019-05-08——Java NIO Reactor模式

    本文链接:https://www.haomeiwen.com/subject/vsdmoqtx.html