当前位置: 首页 > news >正文

菏泽市建设局网站免费发布信息网

菏泽市建设局网站,免费发布信息网,wordpress 有必要静态化,工程建设与设计传统阻塞I/O模式 其中黄色框表示对象,蓝色框表示线程,白色框表示API方法 特点 采用阻塞IO模式获取输入数据每个连接都需要独立的线程完成数据的输入,业务处理和处理结果数据返回 潜在问题 并发数很大时,需要对应每个连接请求创建一个线程,所以占用资源很大连接创建后,若当前…

传统阻塞I/O模式

其中黄色框表示对象,蓝色框表示线程,白色框表示API方法

特点

  • 采用阻塞IO模式获取输入数据
  • 每个连接都需要独立的线程完成数据的输入,业务处理和处理结果数据返回

潜在问题

  • 并发数很大时,需要对应每个连接请求创建一个线程,所以占用资源很大
  • 连接创建后,若当前下线程暂时没有数据操作时,该线程会在操作方法处阻塞,造成线程资源浪费

Reactor模式(Dispatch模式)

针对传统阻塞I/O模式的潜在问题,解决方案如下

  • 基于I/O复用模型解决创建线程数量多的问题:通过一个阻塞对象管理所有连接
  • 基于线程池解决线程资源浪费问题

Reactor模式的设计思想就是I/O复用结合下线程池

核心组成

  • Reator:Reactor在一个单独的thread中运行,负责监听和分发事件,分发给适当的处理程序对IO事件做出反应
  • Handler:真正处理执行Reactor分发过来的IO事件

优势

  • 响应快:不会由于单个同步而导致阻塞
  • 扩展性好:通过方便的增加Reactor实例个数充分利用多核CPU资源
  • 复用性好:Reactor本身与具体的事件处理逻辑无关,具有很高的复用性

根据Reactor的数量和处理资源池线程的数量不同,包括单Reactor单线程、单Reactor多线程和主从Reactor多线程

Reactor单线程

执行流程

  • Reactor通过Select监控客户端请求事件,收到事件后通过Dispatch进行分发
  • 如果是建立连接请求则由Acceptor处理,并且创建Handler对象处理连接完成后的业务
  • 若不是连接请求(比如read)则分发调用对应的Handler来响应(read->业务处理->send流程)

方案分析

  • 模式简单,没有多线程竞争,全部由一个线程完成
  • 性能问题:仅一个线程,无法发挥多核CPU性能
  • 可靠性问题:线程意外终止或者遇到死循环会导致系统不可用
  • 适用于客户端数量有限,业务处理非常快速的场景

Reactor多线程

执行流程

  • Reactor通过Select监控客户端请求事件,收到事件后通过Dispatch进行分发
  • 如果是建立连接请求则由Acceptor处理,并且创建Handler对象处理连接完成后的业务
  • 若不是连接请求(比如read)则Reactor分发调用对应的Handler进行响应(read->分发任务->send流程)
  • Handler只负责响应事件,不做具体业务处理,通过read读取数据会分发给work线程池的某个线程处理业务
  • work线程池会分配独立线程完成真正的业务并将结果返回给Handler
  • Handler收到响应后通过send将结果返回给client

方案分析

  • 可以充分利用多核CPU的处理能力
  • 多线程数据共享和访问比较复杂,reactor处理所有的事件的监听和响应,在单线程、高并发场景下容易出现性能瓶颈

主从Reactor多线程(Netty基于此模式)

执行流程

  • Reactor主线程MainReactor对象通过select监听连接事件,若收到连接请求事件则会通过Acceptor处理
  • 当Acceptor处理完成连接事件后,MainReactor将连接分配给SubReactor(一个MainReactor存在多个子Reactor)
  • SubReactor将连接加入到连接队列进行监听,并创建Handler进行对应事件处理
  • 当存在新事件发生时,subReactor就会调用对应Handler处理
  • Handler只负责响应事件,不做具体业务处理,通过read读取数据会分发给work线程池的某个线程处理业务
  • work线程池会分配独立线程完成真正的业务并将结果返回给Handler
  • Handler收到响应后通过send将结果返回给client

方案分析

  • 主线程和子线程数据交互简单职责明确,主线程负责接收连接,子线程完成后续业务处理
  • 主线程和子线程交互简单,主线程把连接交给子线程,子线程无需返回数据
  • 但编程复杂度比较高
  • 应用于Nginx主从Reactor多进程模型、Memcached主从多线程、Netty主从多线程
http://www.hkea.cn/news/106970/

相关文章:

  • 中国最大的网站建设公司百度广告联盟点击一次多少钱
  • wordpress单页主题营销seo手机关键词网址
  • dedecms做电影网站韩国最新新闻
  • 哪个网站做废旧好如何在百度上发布自己的广告
  • 网站表单及商品列表详情模板如何搭建自己的网站
  • 网站域名登记证明百度高级搜索怎么用
  • 国外网站在国内做镜像站点网站搭建费用
  • 网站后台如何添加关键词软件开发公司
  • 手机做网站的网站windows优化大师卸载不了
  • 万网速成网站有哪些 功能自己的网站怎么推广
  • 邯郸哪有做网站的河南百度推广公司
  • 我是做环保类产品注册哪些浏览量大的网站推销自己的产品比较好呢西安网站seo优化公司
  • 网页传奇游戏排行昆明网络推广优化
  • 商城模板网站模板网站软文是什么
  • 校园网站推广方案怎么做网站排名推广工具
  • 深圳罗湖企业网站建设报价网络媒体发稿平台
  • 用别人公司域名做网站线下推广的渠道和方法
  • php mysql的网站开发外贸推广平台
  • 济南网站建设认可搜点网络能百度指数有三个功能模块
  • 网上商城网站建设意义在线代理浏览网页
  • 网站图片切换代码百度下载并安装最新版
  • 微信公众平台号申请注册入口杭州seo公司
  • 本周实时热点新闻事件seo文章代写一篇多少钱
  • 旺店通app手机企业版下载网站seo如何优化
  • 宝山区建设用地事务所网站网络公司有哪些
  • 用sql做简单的博客网站大连谷歌seo
  • 新手怎么学做网站就业培训机构有哪些
  • magento网站建设搭建网站步骤
  • 营销网站如何实现差异化南京seo公司
  • 服务器托管是啥搜索引擎优化排名培训