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

项目网站建设业务分析制作视频网站建设

项目网站建设业务分析,制作视频网站建设,8uftp与wordpress,诚信档案建设网站文章目录 概述单Reactor单线程模型单Reactor多线程模型主从Reactor多线程模型 概述 Netty的线程模型采用了Reactor模式#xff0c;即一个或多个EventLoop轮询各自的任务队列#xff0c;当发现有任务时#xff0c;就处理它们。Netty支持单线程模型、多线程模型和混合线程模型… 文章目录 概述单Reactor单线程模型单Reactor多线程模型主从Reactor多线程模型 概述 Netty的线程模型采用了Reactor模式即一个或多个EventLoop轮询各自的任务队列当发现有任务时就处理它们。Netty支持单线程模型、多线程模型和混合线程模型等多种线程模型。 Reactor其实是在NIO多路复用的基础上提出的一个高性能IO设计模式。 它的核心思想是把响应IO事件和业务处理进行分离通过一个或者多个线程来处理IO事件。 然后把就绪的事件分发给业务线程进行异步处理。 Reactor模型有三个重要的组件 Reactor 把I/O事件分发给对应的Handler Acceptor 处理客户端连接请求 Handlers 执行非阻塞读/写也就是针对收到的消息进行业务处理。 在Reactor的这种设计中有三种模型分别是 单Reactor单线程模型 单Reactor多线程模型 主从Reactor多线程模型 单Reactor单线程模型 就是由同一个线程来负责处理IO事件以及业务逻辑。 这种方式的缺点在于handler的执行过程是串行如果有任何一个handler处理线程阻塞就会影响整个服务的吞吐量。 理论上一个NIO线程,既能够接收客户端的链接,同时也能够处理IO操作以及其他任务操作等等,但是一个线程对cpu利用率不高,并且,一旦有大量的请求连接,性能上势必会下降,甚至无法响应的情况. 单Reactor多线程模型 也就是把处理IO就绪事件的线程和处理Handler业务逻辑的线程进行分离每个Handler由一个独立线程来处理在这种设计下即便是存在Handler线程阻塞问题也不会对IO线程造成影响。 在多线程Reactor模型下所有的IO操作都是由一个Reactor来完成的而且Reactor运行在单个线程里面。对于并发较高的场景下Reactor就成为了性能瓶颈所以在这个基础上做了更进一步优化。 1个线程负责专门接收客户端的链接,另一组线程负责处理IO操作或者其他的任务操作.虽然如此但理论上来说依然有一个地方是单点的那就是处理客户端连接的线程。 因为大多数服务端应用或多或少在连接时都会处理一些业务如鉴权之类的当连接的客户端越来越多时这一个线程依然会存在性能问题。 主从Reactor多线程模型 提出了多Reactor多线程模型这种模式也叫Master-Workers模式。 它把原本单个Reactor拆分成了Main Reactor和多个SubReactorMain Reactor负责接收客户端的 链接然后把接收到的连接请求随机分配到多个subReactor里面。SubReactor负责IO事件的处理。 这种方式另外一个好处就是可以对subReactor做灵活扩展从而适应不同的并发量解决了单个Reactor模式的性能瓶颈问题。 Reactor模型的设计比较常见比如Spring里面的Webflux就用了这种设计。 并且像Master-Worker模型在Memcached和Nginx中都有用到。 所以我们其实可以去理解并学习这种设计思想也许在某些业务场景中可以帮助我们多提供一个解决思路。 Main Reactor负责接收客户端的连接请求并将具体的业务IO处理请求转发给 Sub Reactor其中Sub Reactor可以有多个。 Acceptor请求接收者它的职责类似服务器并不真正负责连接请求的建立而只将其请求委托 Main Reactor 线程池来实现起到一个转发的作用。 Sub Reactor负责数据的读写在 NIO 中 通常注册通道的读事件(OP_READ)和写事件(OP_WRITE)。 一个NIO线程池处理链接监听,一个线程池处理IO操作,并且在netty官方中,强烈推荐使用这种线程模型. Netty有两组线程池 一个Boss Group它专门负责客户端连接另一个Work Group专门负责网络读写 Boss Group和Work Group的类型都是NIOEventLoopGroupNIOEventLoopGroup相当于一个事件循环组这个组包含了多个事件循环每一个循环都NIOEventLoopNIOEventLoop表示一个不断循环执行处理任务的线程每个NIOEventLoop都有一个Selector用于监听绑定在其上的ocketChannel的网络通讯Boss Group下的每个NIOEventLoop的执行步骤有3步(1). 轮询accept连接事件(2). 处理accept事件与client建立连接生成一个NioSocketChannel并将其注册到某个work group下的NioEventLoop的selector上(3). 处理任务队列的任务 即runAllTasks每个Work Group下的NioEventLoop循环执行以下步骤(1). 轮询read、write事件(2). 处理read、write事件在对应的NioSocketChannel处理(3). 处理任务队列的任务即runAllTasks每个Work Group下的NioEventLoop在处理NioSocketChannel业务时会使用pipeline(管道)管道中维护了很多 handler 处理器用来处理 channel 中的数据。
http://www.pierceye.com/news/527326/

相关文章:

  • 网站运营的目的及意义pc网站怎么适配移动端
  • 网站深圳优化建设10月上海娱乐场所又要关门了
  • 怎么做网页文件打开别的网站河南省城乡和住房建设厅
  • 泰州公司做网站成都网页设计培训中心
  • 网站业务需求文档网站正在建设中 动态
  • 一级a做爰电影片免费网站姑苏区住房建设局网站
  • 宁夏建设教育协会网站医院网站跳出率高
  • 网站建设佰首选金手指二关于网站建设的职位
  • 网站建设公司商务网站项目书中堂东莞网站建设
  • 欧美品牌网站设计wordpress好用的文章编辑器
  • 长春网站建设q479185700強wordpress数学公式的代码
  • 郑州软件app开发公司嘉兴优化网站排名
  • 可以建微信网站的做网站的项目开发计划书
  • 湖北网站建设模板下载太原线上教学
  • 西宁网站建设开发公司开发网站监控工具
  • 外贸网站优势杭州百度快速排名提升
  • 制作个人网站论文ipage wordpress
  • 十堰建设网站首页优化大师免安装版
  • 深圳建设企业网站公司敬请期待素材
  • 网络营销网站建设课程wordpress 文章描述
  • 网站制作有什么好的介绍北京网站建设及推广招聘
  • 殡仪馆做网站的好处制作响应式网站报价
  • 网站建设平台杭州做网站前台后台是怎么连接的
  • 太原市0元网站建设wordpress wcps
  • 怎么自己做免费网站wordpress 优酷通用代码自适应
  • 网站设置三方交易深圳品牌设计公司招聘
  • 东莞响应式网站哪家好网站开发应用到的技术名词
  • 背景做网站公司docker wordpress
  • 吉林建设监理协会网站网站 服务器 虚拟主机
  • 食品公司网站设计项目和男朋友都是第一次做网站