1.传统的网络请求处理方式


每接收一个客户端的请求,服务端都会创建一个线程来处理。这种就是同步阻塞 I/O 模式,开发维护成本比较小,适合连接数比较少的服务。
既然每个请求分配一个线程不合适,怎样才能一个线程中处理多个请求?我们可采用分治的思想,将处理流程拆分成更小的任务,减少每个线程的阻塞时间,基于事件驱动 。

2.单线程 Reactor 模式

这里 Reactor 是单线程的,接收所有的客户端请求,连接请求分配给 acceptor,数据处理分配给处理的线程。

将业务处理线程与 I/O 处理拆分开,这样就可以避免 Reactor 线程由于业务处理造成阻塞,同样业务线程也不会受 Reactor 网络读取和发送的影响。

3.多个 Reactor

mainReactor:负责监听收客户端的连接。对应 Netty 中的 bossGroup,一般一个线程就够了。
subReactor:负责读取发送数据,将请求分配给业务线程池。对应 Netty 中的 workerGroup。

Reactor网络编程模型相关推荐

  1. 网络编程模型 / Reactor

    之前一直不理解 Reactor 模型的含义,后来在知乎上看见了一个 demo,再结合文字终于理解什么是 Reactor 模型了,这里分享给大家. 一.介绍 网络编程模型通常有如下几种:Reactor, ...

  2. 深入了解 Reactor 网络编程架构模型

    Reactor网络编程架构模型 常见的网络编程模型有:Reactor Proactor Asynchronous Completion Token and Acceptor_Connector 这里介 ...

  3. 【Java】BIO、NIO、AIO网络编程模型概述

    前言 我们知道,UNIX环境下常见的网络I/O模型有5种: 同步阻塞 同步非阻塞 I/O复用 信号驱动 异步非阻塞 那么基于上述五种模型,Java中,随着NIO和AIO(NIO 2.0)的引入,一般具 ...

  4. 朴素、Select、Poll和Epoll网络编程模型实现和分析——Poll、Epoll模型处理长连接性能比较

    在<朴素.Select.Poll和Epoll网络编程模型实现和分析--模型比较>一文中,我们分析了各种模型在处理短连接时的能力.本文我们将讨论处理长连接时各个模型的性能.(转载请指明出于b ...

  5. 朴素、Select、Poll和Epoll网络编程模型实现和分析——模型比较

    经过之前四篇博文的介绍,可以大致清楚各种模型的编程步骤.现在我们来回顾下各种模型(转载请指明出于breaksoftware的csdn博客) 模型编程步骤对比 <朴素.Select.Poll和Ep ...

  6. 朴素、Select、Poll和Epoll网络编程模型实现和分析——Epoll模型

    在阅读完<朴素.Select.Poll和Epoll网络编程模型实现和分析--Select模型>和<朴素.Select.Poll和Epoll网络编程模型实现和分析--Poll模型> ...

  7. 朴素、Select、Poll和Epoll网络编程模型实现和分析——Poll模型

    在<朴素.Select.Poll和Epoll网络编程模型实现和分析--Select模型>中,我们分析了它只能支持1024个连接同时处理的原因.但是在有些需要同时处理更多连接的情况下,102 ...

  8. 朴素、Select、Poll和Epoll网络编程模型实现和分析——Select模型

    在<朴素.Select.Poll和Epoll网络编程模型实现和分析--朴素模型>中我们分析了朴素模型的一个缺陷--一次只能处理一个连接.本文介绍的Select模型则可以解决这个问题.(转载 ...

  9. 朴素、Select、Poll和Epoll网络编程模型实现和分析——朴素模型

    做Linux网络开发,一般绕不开标题中几种网络编程模型.网上已有很多写的不错的分析文章,它们的基本论点是差不多的.但是我觉得他们讲的还不够详细,在一些关键论点上缺乏数据支持.所以我决定好好研究这几个模 ...

最新文章

  1. SQL Server 2008/2012中SQL应用系列及BI学习笔记系列--目录索引
  2. 旋转Apriltag角度检测
  3. java.io.IOException cannot be resolved
  4. Linux统一编程接口,restful接口设计规范总结
  5. 访问修饰符 public与private c# 1230
  6. IPXX防护等级中关于防水实验的规定
  7. 合成未来宝宝照片_父母照片重叠是宝宝长相?关晓彤鹿晗颜值逆天,邓超孙俪……...
  8. 基于改进的残差网络的指纹识别算法
  9. ANSYS静力学分析的主要操作步骤
  10. 模拟卷Leetcode【普通】729. 我的日程安排表 I
  11. 软考高级信息系统项目管理师必备知识点(记忆敲出)
  12. 产品经理如何写产品白皮书
  13. 一不小心就触碰红线...程序员必须知道的法律知识有哪些?
  14. 计算机毕业设计SSM大学生志愿者管理系统【附源码数据库】
  15. Vue项目管理器中 安装及使用Monaco Editor
  16. 验证谷角猜想。日本数学家谷角静夫在研究自然数时发现了一个奇怪现象:对于任意一个自然数 n ,若 n 为偶数,则将其除以 2 ;若 n 为奇数,则将其乘以 3 ,然后再加 1。如此经过有限次运算后,总可
  17. 微信小程序云音乐项目
  18. google map api v3 的marker使用label的方法(markerwithlabel的使用)
  19. Unity 3D 菜单栏快捷键详解
  20. AS第一次作业:实现APP门户界面框架设计

热门文章

  1. 精进:如何成为一个很厉害的人---书摘
  2. 关于fragment中使用onActivityResult
  3. 浅谈sql中的in与not in,exists与not exists的区别
  4. 如何使用Nginx服务开启HTTP2
  5. JS-DOM-节点-获取元素-文档结构-元素的属性
  6. 【正则表达式】以字母或下划线开头,包含字母、数字、以及下划线
  7. MobSF,一款开源移动安全测试框架
  8. 人脸识别算法二:Fisherface(LDA)
  9. 读TXT文件带BOM问题
  10. 11: Nginx安装lua支持