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

如何的找网站建设公司/渠道网络

如何的找网站建设公司,渠道网络,网站建设与管理自考重点,wordpress 打赏js高效的 Reactor 线程模型 常用的 Reactor 线程模型有三种,分别如下: 1) Reactor 单线程模型; 2) Reactor 多线程模型; 3) 主从 Reactor 多线程模型 Reactor 单线程模型,指的是所有的 IO 操作都在同一个 NIO 线程上…

高效的 Reactor 线程模型

常用的 Reactor 线程模型有三种,分别如下:

1) Reactor 单线程模型;

2) Reactor 多线程模型;

3) 主从 Reactor 多线程模型

Reactor 单线程模型,指的是所有的 IO 操作都在同一个 NIO 线程上面完成,NIO 线程的职责如下:

1) 作为 NIO 服务端,接收客户端的 TCP 连接;

2) 作为 NIO 客户端,向服务端发起 TCP 连接;

3) 读取通信对端的请求或者应答消息;

4) 向通信对端发送消息请求或者应答消息。

Reactor 单线程模型示意图如下所示:

由于 Reactor 模式使用的是异步非阻塞 IO,所有的 IO 操作都不会导致阻塞,理论上一个线程可以独立处理所有 IO 相 关的操作。从架构层面看,一个 NIO 线程确实可以完成其承担的职责。例如,通过 Acceptor 接收客户端的 TCP 连接 请求消息,链路建立成功之后,通过 Dispatch 将对应的 ByteBuffer 派发到指定的 Handler 上进行消息解码。用户 Handler 可以通过 NIO 线程将消息发送给客户端。

对于一些小容量应用场景,可以使用单线程模型。但是对于高负载、大并发的应用却不合适,主要原因如下:

1) 一个 NIO 线程同时处理成百上千的链路,性能上无法支撑,即便 NIO 线程的 CPU 负荷达到 100%,也无法满足海 量消息的编码、解码、读取和发送;

2) 当 NIO 线程负载过重之后,处理速度将变慢,这会导致大量客户端连接超时,超时之后往往会进行重发,这更加重了 NIO 线程的负载,最终会导致大量消息积压和处理超时,NIO 线程会成为系统的性能瓶颈;

3) 可靠性问题:一旦 NIO 线程意外跑飞,或者进入死循环,会导致整个系统通信模块不可用,不能接收和处理外部消 息,造成节点故障。

为了解决这些问题,演进出了 Reactor 多线程模型,下面我们一起学习下 Reactor 多线程模型。

Rector 多线程模型与单线程模型最大的区别就是有一组 NIO 线程处理 IO 操作,它的原理图如下:

Reactor 多线程模型的特点:

1) 有专门一个 NIO 线程-Acceptor 线程用于监听服务端,接收客户端的 TCP 连接请求;

2) 网络 IO 操作-读、写等由一个 NIO 线程池负责,线程池可以采用标准的 JDK 线程池实现,它包含一个任务队列和 N 个可用的线程,由这些 NIO 线程负责消息的读取、解码、编码和发送;

3) 1 个 NIO 线程可以同时处理 N 条链路,但是 1 个链路只对应 1 个 NIO 线程,防止发生并发操作问题。 在绝大多数场景下,Reactor 多线程模型都可以满足性能需求;但是,在极特殊应用场景中,一个 NIO 线程负责监听

和处理所有的客户端连接可能会存在性能问题。例如百万客户端并发连接,或者服务端需要对客户端的握手消息进行 安全认证,认证本身非常损耗性能。在这类场景下,单独一个 Acceptor 线程可能会存在性能不足问题,为了解决性能 问题,产生了第三种 Reactor 线程模型-主从 Reactor 多线程模型。

主从 Reactor 线程模型的特点是:服务端用于接收客户端连接的不再是个 1 个单独的 NIO 线程,而是一个独立的 NIO 线程池。Acceptor 接收到客户端 TCP 连接请求处理完成后(可能包含接入认证等),将新创建的 SocketChannel 注 册到 IO 线程池(sub reactor 线程池)的某个 IO 线程上,由它负责 SocketChannel 的读写和编解码工作。Acceptor线程池仅仅只用于客户端的登陆、握手和安全认证,一旦链路建立成功,就将链路注册到后端 subReactor 线程池的 IO 线程上,由 IO 线程负责后续的 IO 操作。

它的线程模型如下图所示:

利用主从 NIO 线程模型,可以解决 1 个服务端监听线程无法有效处理所有客户端连接的性能不足问题。因此,在 Netty 的官方 demo 中,推荐使用该线程模型。

事实上,Netty 的线程模型并非固定不变,通过在启动辅助类中创建不同的 EventLoopGroup 实例并通过适当的参数 配置,就可以支持上述三种 Reactor 线程模型。正是因为 Netty 对 Reactor 线程模型的支持提供了灵活的定制能力, 所以可以满足不同业务场景的性能诉求。

http://www.lbrq.cn/news/1303993.html

相关文章:

  • 网站是不是用cms做的/广西seo搜索引擎优化
  • 如何做网站meta设置/百度卖货平台
  • 织梦网站怎么重新安装教程/2022最近的新闻大事10条
  • 东莞网站优化软件/360收录查询
  • 做视频网站要多大的主机/百度网盘怎么用
  • 高端网站建设文案/有没有免费的写文案的软件
  • 群晖wordpress图片/北京seo业务员
  • 北京婚纱摄影网站/软文街官网
  • 乐山做网站的公司/湖南省人民政府官网
  • 推送者seo/网站关键词推广优化
  • 个人备案的网站涉及到资金/2345浏览器导航页
  • 西安网站建设云阔/国外免费推广平台有哪些
  • 搜索引擎广告形式有/海口关键词优化报价
  • 直接做那个视频网站/网站内容优化方法
  • 网站的模糊搜索怎么做/今日足球赛事推荐
  • vs2012 做网站教程/百度一下网址是多少
  • 企业网站制作免费下载/头条新闻 最新消息条
  • 毕设做购物网站/南宁seo怎么做优化团队
  • 男女做男个真实视频网站/网络营销方案设计
  • 南京外贸网站建设哪家好/我要推广
  • WordPress建站详细过程/新闻头条今日要闻国内新闻最新
  • 湟源县网站建设/手机推广平台有哪些
  • 网站做百度竞价的标志/东莞百度搜索优化
  • 做网站用vps还是虚拟主机/拼多多关键词怎么优化
  • 品牌网站建设绿d茶/淘宝店铺推广
  • 山西营销网站建设联系方式/黑马培训机构可靠吗
  • 建设工程项目在哪个网站查询/百度号码认证平台官网
  • 制作网站的步骤和方法/seo信息查询
  • 开发区网站建设/廊坊百度关键词排名平台
  • 小网站文案/武汉关键词排名工具
  • 光伏财务管理:在阳光与资本的精密计算中前行
  • Excel批量生成SQL语句 Excel批量生成SQL脚本 Excel拼接sql
  • mysql 性能优化入门
  • 【后端】.NET Core API框架搭建(10) --配置163邮件发送服务
  • Instagram千号矩阵:亚矩阵云手机破解设备指纹检测的终极方案
  • 离散与组合数学 杂记