真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Reactor模型詳解-創(chuàng)新互聯(lián)

NIO與Reactor模型關(guān)系

NIO是非阻塞IO,而Reactor是基于NIO的一種設(shè)計(jì)模式。NIO是一種模型,一種思想,使用NIO實(shí)現(xiàn)。下面看Reactor模型具體設(shè)計(jì)。

網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)!專(zhuān)注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、小程序制作、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶(hù)創(chuàng)新互聯(lián)還提供了定襄免費(fèi)建站歡迎大家使用!單 Reactor 單線(xiàn)程模式

在這里插入圖片描述

  1. 可以實(shí)現(xiàn)通過(guò)一個(gè)阻塞對(duì)象監(jiān)聽(tīng)多個(gè)鏈接請(qǐng)求
  2. Reactor對(duì)象通過(guò)select監(jiān)聽(tīng)客戶(hù)端請(qǐng)求事件,通過(guò)dispatch進(jìn)行分發(fā)
  3. 如果是建立鏈接請(qǐng)求,則由Acceptor通過(guò)accept處理鏈接請(qǐng)求,然后創(chuàng)建一個(gè)Handler對(duì)象處理完成鏈接后的各種事件
  4. 如果不是鏈接請(qǐng)求,則由Reactor分發(fā)調(diào)用鏈接對(duì)應(yīng)的Handler來(lái)處理
  5. Handler會(huì)完成Read->業(yè)務(wù)處理->send的完整業(yè)務(wù)流程

缺點(diǎn):
當(dāng)其中某個(gè) handler 阻塞時(shí), 會(huì)導(dǎo)致其他所有的 client 的 handler 都得不到執(zhí)行, 并且更嚴(yán)重的是, handler 的阻塞也會(huì)導(dǎo)致整個(gè)服務(wù)不能接收新的 client 請(qǐng)求(因?yàn)?acceptor 也被阻塞了)。不能充分利用多核資源。
一個(gè)線(xiàn)程負(fù)載過(guò)重后,處理速度將變慢,這會(huì)導(dǎo)致大量客戶(hù)端連接超時(shí),超時(shí)之后往往會(huì)進(jìn)行重發(fā),這更加重了 NIO 線(xiàn)程的負(fù)載,最終會(huì)導(dǎo)致大量消息積壓和處理超時(shí),成為系統(tǒng)的性能瓶頸。
一旦 NIO 線(xiàn)程意外跑飛,或者進(jìn)入死循環(huán),會(huì)導(dǎo)致整個(gè)系統(tǒng)通信模塊不可用,不能接收和處理外部消息,造成節(jié)點(diǎn)故障。

單Reactor多線(xiàn)程模式

添加了一個(gè)工作者線(xiàn)程池,并將非 I/O 操作從 Reactor線(xiàn)程中移出轉(zhuǎn)交給工作者線(xiàn)程池來(lái)執(zhí)行。這樣能夠提高 Reactor 線(xiàn)程的 I/O 響應(yīng),不至于因?yàn)橐恍┖臅r(shí)的業(yè)務(wù)邏輯而延遲對(duì)后面 I/O 請(qǐng)求的處理。主要是將業(yè)務(wù)邏輯處理單獨(dú)分出來(lái)線(xiàn)程執(zhí)行,避免業(yè)務(wù)邏輯處理影響了I/O操作效率。
在這里插入圖片描述

  1. Reactor對(duì)象通過(guò)select監(jiān)聽(tīng)客戶(hù)端請(qǐng)求事件,收到事件后,通過(guò)dispatch分發(fā)
  2. 如果是建立鏈接請(qǐng)求,則由Acceptor通過(guò)accept處理鏈接請(qǐng)求,然后創(chuàng)建一個(gè)Handler對(duì)象處理完成鏈接后的各種事件
  3. 如果不是鏈接請(qǐng)求,則由Reactor分發(fā)調(diào)用鏈接對(duì)應(yīng)的Handler來(lái)處理
  4. Handler只負(fù)責(zé)事件響應(yīng)不做具體業(yè)務(wù)處理
  5. 通過(guò)read讀取數(shù)據(jù)后,分發(fā)到worker線(xiàn)程池處理,處理完成后返回給Handler,Handler收到后,通過(guò)send將結(jié)果返回給client
主從Reactor多線(xiàn)程

Reactor 線(xiàn)程池中的每一 Reactor 線(xiàn)程都會(huì)有自己的 Selector、線(xiàn)程和分發(fā)的事件循環(huán)邏
輯。mainReactor 可以只有一個(gè),但 subReactor 一般會(huì)有多個(gè)。mainReactor 線(xiàn)程主要負(fù)責(zé)接收客戶(hù)端的連接請(qǐng)求,然后將接收到的 SocketChannel 傳遞給 subReactor,由 subReactor 來(lái)完成和客戶(hù)端的通信。
在這里插入圖片描述

  1. Reactor主線(xiàn)程MainReactor對(duì)象通過(guò)select監(jiān)聽(tīng)鏈接事件,通過(guò)Acceptor處理
  2. 當(dāng)Acceptor處理鏈接事件后,MainReactor將鏈接分配給SubReactor
  3. SubReactor將鏈接加入到隊(duì)列進(jìn)行監(jiān)聽(tīng),并創(chuàng)建Handler進(jìn)行事件處理
  4. 當(dāng)有新事件發(fā)生時(shí),SubReactor就會(huì)調(diào)用對(duì)應(yīng)的Handler處理
  5. Handler通過(guò)read讀取數(shù)據(jù),分發(fā)到worker線(xiàn)程池處理,處理完成后返回給Handler,Handler收到后,通過(guò)send將結(jié)果返回給client
  6. Reactor主線(xiàn)程可以對(duì)應(yīng)多個(gè)Reactor子線(xiàn)程
Reactor模型與觀察者模式區(qū)別

觀察者模式也可以稱(chēng)為為 發(fā)布-訂閱 模式,主要適用于多個(gè)對(duì)象依賴(lài)某一個(gè)對(duì)象的狀態(tài)并,當(dāng)某對(duì)象狀態(tài)發(fā)生改變時(shí),要通知其他依賴(lài)對(duì)象做出更新。是一種一對(duì)多的關(guān)系。當(dāng)然,如果依
賴(lài)的對(duì)象只有一個(gè)時(shí),也是一種特殊的一對(duì)一關(guān)系。通常,觀察者模式適用于消息事件處理,
監(jiān)聽(tīng)者監(jiān)聽(tīng)到事件時(shí)通知事件處理者對(duì)事件進(jìn)行處理(這一點(diǎn)上面有點(diǎn)像是回調(diào),容易與反
應(yīng)器模式和前攝器模式的回調(diào)搞混淆)。
reactor 模式,即反應(yīng)器模式,是一種高效的異步 IO 模式,特征是回調(diào),當(dāng) IO 完成時(shí),回調(diào)對(duì)應(yīng)的函數(shù)進(jìn)行處理。這種模式并非是真正的異步,而是運(yùn)用了異步的思想,當(dāng) IO 事件觸發(fā)時(shí),通知應(yīng)用程序作出 IO 處理。模式本身并不調(diào)用系統(tǒng)的異步 IO 函數(shù)。

reactor 模式與觀察者模式有點(diǎn)像。不過(guò),觀察者模式與單個(gè)事件源關(guān)聯(lián),而反應(yīng)器模式則與多個(gè)事件源關(guān)聯(lián) 。當(dāng)一個(gè)主體發(fā)生改變時(shí),所有依屬體都得到通知。

應(yīng)用場(chǎng)景

Reactor模型通常用于網(wǎng)絡(luò)模型中,進(jìn)行連接、讀操作、寫(xiě)操作且并發(fā)量高的服務(wù)中去進(jìn)行I/O事件時(shí)使用。例如在redis中、nginx中,都使用了Reactor模型來(lái)實(shí)現(xiàn)客戶(hù)端連接服務(wù)、讀寫(xiě)數(shù)據(jù)的網(wǎng)絡(luò)模型。當(dāng)我們自己提供了一個(gè)服務(wù),且有大量客戶(hù)端與我們提供的服務(wù)進(jìn)行I/O操作時(shí),可以考慮使用Reactor模型進(jìn)行I/O多路復(fù)用,來(lái)提高服務(wù)的I/O性能。

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧


網(wǎng)頁(yè)名稱(chēng):Reactor模型詳解-創(chuàng)新互聯(lián)
分享地址:http://weahome.cn/article/dioipj.html

其他資訊

在線(xiàn)咨詢(xún)

微信咨詢(xún)

電話(huà)咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部