常见的reactor模式有以下三种

  1. 单线程reactor
  2. 多线程reactor
  3. 主从reactor

1、单线程reactor

ractor 单线程模式是指所有的I/O操作都在一个NIO线程完成,该线程的职责:

1.作为NIO服务端,接收客户端TCP连接

2.作为NIO客户端,向客户端发送TCP连接

3.READ/WRITE 客户端的请求

不过单线程的reactor 模式无法发挥多核的优势,因此对于高并发量的系统仍然存在瓶颈,主要原因如下:

1、reactor 线程既要处理来自客户端的连接,又要处理READ/WRITE/编码/解码。即便cpu 100% 也难以满足实际场景的需求

多线程Reactor 解决了这些问题

2、多线程reactor模型

reactor 多线程的实现最大的区别是拥有一个专门用来处理实际I/O 操作是线程池

优点:

1、拥有一个Acceptor 专门用来监听请求的I/O 类型

2、使用专门线程池可以提高acceptor的并发量,并且可以将同一个SocketChannel 放于同一个I/O 线程处理,同一个I/O线程可以处理多个SocketChannel的READ/WRITE事件

在大部分场景,该线程模型都能处理,但存在这样一种场景:单个Acceptor 线程 可能会因为需要监听大量的 SocketChannel 连接 或 I/O事件处理或在建立建立时需要进行安全的握手认证、黑白名单过滤,而导致出现性能瓶颈。所以这种场景下,单独一个Accceptor 会导致性能不足,便出现了第三种线程模型,主从Reactor 模型

3、主从reactor 多线程模型

相比多线程reactor模型,主从reactor多线程模型拥有了一个独立处理 SocketChannel 连接的线程池,当客户端从Acceptor建立连接之后,便将该连接绑定到subreactor 线程池中的某个线程中,然后由该线程绑定客户端感兴趣的I/O事件(READ/WRITE),监听客户端连接请求,最后处理。

mainReactor : 监听 ServerSocketChannel 、建立与 SocketChannel 的连接、将完成建立连接之后的Socket 交给subReactor

subReactor : 监听SocketChannel的 I/O事件,完成编解码、相应的业务处理(默认为CPU个数)

reactor多线程模型_Netty运用Reactor模式到极致相关推荐

  1. 【Netty】主从反应器 ( Reactor ) 多线程模型

    文章目录 一. 主从 反应器 ( Reactor ) 多线程 模式 二. 主从 反应器 ( Reactor ) 多线程 工作流程 三. 主从 反应器 ( Reactor ) 多线程 优缺点分析 四. ...

  2. 主从reactor 多线程模型

    相比多线程reactor模型,主从reactor多线程模型拥有了一个独立处理 SocketChannel 连接的线程池,当客户端从Acceptor建立连接之后,便将该连接绑定到subreactor 线 ...

  3. reactor多线程模型_网络编程模型的演进之路

    在没有IO多路复用的模型的情况下,为了支持高并发采取以下网络模型 一:阻塞IO+多线程 client连接服务器,服务器有一个线程阻塞的调用accept,accept接收到连接后,创建一个线程来读写读写 ...

  4. 浅谈Reactor 线程模型

    Reactor 的线程模型有三种:单线程模型.多线程模型.主从多线程模型.首先来看一下单线程模型,如下图所示: 所谓单线程, 即Acceptor 处理和andler 处理都在同一个线程中处理.这个模型 ...

  5. Reactor线程模型

    一 传统阻塞线程模型 第一:服务器端有一个Acceptor线程接收客户端请求 第二:Acceptor接收到每一个客户端请求后,为每一个线程分配一个线程处理客户端请求 缺点: 第一:当数据量很大或者客户 ...

  6. 【Netty】反应器 Reactor 模式 ( 单反应器 Reactor 单线程 | 单反应器 Reactor 多线程 )

    文章目录 一. 反应器 ( Reactor ) 模式 二. 反应器 ( Reactor ) 模式两大组件 三. 单反应器 ( Reactor ) 单线程 四. 单反应器 ( Reactor ) 单线程 ...

  7. reactor和thread线程_Reactor模型详解:单Reactor多线程与主从Reactor多线程

    主反应堆线程一直在感知连接建立的事件,如果有连接成功建立,主反应堆线程通过 accept 方法获取已连接套接字,接下来会按照一定的算法选取一个从反应堆线程,并把已连接套接字加入到选择好的从反应堆线程中 ...

  8. reactor线程模型_简单了解Java Netty Reactor三种线程模型

    1. Reactor三种线程模型 1.1. 单线程模型 Reactor单线程模型,指的是所有的IO操作都在同一个NIO线程上面完成,NIO线程的职责如下: 1)作为NIO服务端,接收客户端的TCP连接 ...

  9. Netty工作笔记0037---主从Reactor多线程

    技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 这个主从Reactor多线程模式,其实也是只有一个Reactor主线程,可以看到这个线程负责,监听 ...

最新文章

  1. 【WC2016】论战捆竹竿
  2. 我眼中的Linux设备树(二 节点)
  3. 新浪微博学习的知识点
  4. tail,more查看日志(定点和翻页)
  5. php中提示Undefined index的解决方法
  6. k8s redis集群_容器:K8S核心组件介绍
  7. 【HTML+CSS网页设计与布局 从入门到精通】第5章-表格
  8. 学会这4个表达「万能公式」,下次向领导汇报时不再语无伦次
  9. BroadLeaf项目搜索功能改进
  10. 系统性的学会 Pandas, 看这一篇就够了!
  11. Ubuntu中的zip / unzip 和 rar / unrar 命令:压缩 / 解压 zip 和 rar 文件
  12. 计算机速算训练,世界上最快的速算法,背熟就是速算神童,大脑堪比计算机!仅发一次...
  13. 点赞功能模块-文章点赞功能实现
  14. BBN: Bilateral-Branch Network with Cumulative Learning for Long-Tailed Visual Recognition
  15. 固定资产管理系统的作用何在?
  16. require.js理解
  17. 三.栈与栈的实例——汉诺塔
  18. Android 10 SurfaceView 奔溃报错signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x4
  19. 种草问题java_关于KOL种草营销常见问题 我来为你解答
  20. 虚拟机VHD格式解析到NTFS文件系统解析

热门文章

  1. 惩罚、补偿、正则化、约束的联系和区别
  2. Zero Copy 简介
  3. Linux /dev目录详解
  4. Makefile文件生成
  5. 二十万字C/C++、嵌入式软开面试题全集宝典七
  6. [云炬创业学笔记]第一章创业是什么测试9
  7. [云炬创业基础笔记]第九章企业的法律形态测试5
  8. php ajax 弹窗修改,更改PHP/Ajax脚本来使用Meekrodb?
  9. 深入理解文档/视图框架体系_九宫格项目开发感悟
  10. Delphi中点击网页弹出的Alert对话框的确定按钮