加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 业界 > 正文

聊聊高机能处事器Server之Reactor模子

发布时间:2019-01-18 00:59:56 所属栏目:业界 来源:正经地扯淡
导读:在这个充斥着云的期间,我们行使的软件可以说99%都是C/S架构的! 你发邮件用的Outlook,Foxmail等 你看视频用的优酷,土豆等 你写文档用的Office365,googleDoc,Evernote等 你赏识网页用的IE,Chrome等(B/S黑白凡的C/S) C/S架构的软件带来的一个明明的甜头就是

NIO模子示譬喻下:

聊聊高机能处事器Server之Reactor模子

  • Acceptor注册Selector,监听accept变乱
  • 当客户端毗连后,触发accept变乱
  • 处事器构建对应的Channel,并在其上注册Selector,监听读写变乱
  • 当产生读写变乱后,举办响应的读写处理赏罚

NIO优弱点

利益

  • 机能瓶颈高

弱点

  • 模子伟大
  • 编码伟大
  • 需处理赏罚半包题目

NIO的优弱点和BIO就完全相反了!机能高,不消一个毗连就建一个线程,可以一个线程处理赏罚全部的毗连!响应的,编码就伟大许多,从上面的代码就可以明明领会到了。尚有一个题目,因为长短阻塞的,应用无法知道什么时辰动静读完了,就存在了半包题目!

半包题目

简朴看一下下面的图就能领略半包题目了!

聊聊高机能处事器Server之Reactor模子

我们知道TCP/IP在发送动静的时辰,也许会拆包(如上图1)!这就导致吸取端无法知道什么时辰收到的数据是一个完备的数据。譬喻:发送端别离发送了ABC,DEF,GHI三条信息,发送时被拆成了AB,CDRFG,H,I这四个包举办发送,接管端怎样将其举办还原呢?在BIO模子中,当读不到数据后会阻塞,而NIO中不会!以是必要自行举办处理赏罚!譬喻,以换行符作为判定依据,可能定长动静产生,可能自界说协议!

NIO固然机能高,可是编码伟大,且必要处理赏罚半包题目!为了利便的举办NIO开拓,就有了Reactor模子!

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读