美文网首页
NIO多路复用与Netty Reactor模式

NIO多路复用与Netty Reactor模式

作者: ssochi | 来源:发表于2019-12-08 13:28 被阅读0次

NIO多路复用

所谓的NIO多路复用指,只创建一个线程通过轮询的方式来处理多个IO请求。

与BIO的区别

BIO收到一个网络连接请求便会建立一个线程或进程来处理,由于会创建很多个线程或进程,所以会浪费很多的内存,并且会让cpu花很多时间在上下文切换上。
而NIO只创建一个线程来处理IO请求,收到请求之后才将请求后便抛入线程池中进行下一步的处理。这样可见,NIO的线程个数有限,并使用了线程池技术,因此线程带来的内存开销和上下文切换的代价都很小

Netty Reactor模式

Reactor的中文意思的反应堆,在Netty当中可以理解为将IO请求转化为业务代码中可以直接处理的数据结构。举个例子,在日常业务中,我们通过netty来处理请求接受->有效性验证->编解码,最后到业务代码手中就是直接可读的数据结构。

而netty的Reactor的实现比上述描述稍微复杂一些。首先它使用了一个环状线程池workGroup,每一个workGroup中的线程会被分配给一个channel(这里的channel不同与NIO的channel,是Netty里的),而每个channel里持有一个selector。
同时Netty同时拥有两级Reactor,第一集负责建立连接,而第二级,处理这个连接带来的各个请求。我们主要讲第二级。
当第二级收到了一个请求,这个请求对于的channel里的selector就会通过轮询发现这个请求,继而进行处理。这样分多个线程来搭建Reactor的好处是能更快的接受协议,但坏处是线程数配置不当会导致cpu的无效空转。

相关文章

  • Netty浅析

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

  • NIO多路复用与Netty Reactor模式

    NIO多路复用 所谓的NIO多路复用指,只创建一个线程通过轮询的方式来处理多个IO请求。 与BIO的区别 BIO收...

  • Reactor模式总结

    Reactor是基于NIO中实现多路复用的一种模式. 什么是Reactor模式 同步的等待多个事件源到达(采用se...

  • Netty简介

    1.Netty是什么? Netty是高性能、异步事件驱动的非阻塞(NIO)Reactor模式的socket通信...

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

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

  • Netty 线程模型

    Reactor模型 Netty中的Reactor模型主要由多路复用器(Acceptor)、事件分发器(Dispat...

  • 网络相关 - netty之Reactor模式

    Netty其实本质上就是Reactor模式的实现,Selector作为多路复用器,EventLoop作为转发器,P...

  • netty网络模型

    nio是基于reactor模型来设计的,所以netty也是基于reactor模型的,reactor模型有以下三种 ...

  • Netty与Reactor 模式

    前言 Netty 的线程模型是基于NIO的Selector 构建的,使用了异步驱动的Reactor 模式来构建的线...

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

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

网友评论

      本文标题:NIO多路复用与Netty Reactor模式

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