中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Reactor模型與Proactor模型的區別是什么

發布時間:2021-07-22 14:42:51 來源:億速云 閱讀:251 作者:Leah 欄目:大數據

本篇文章給大家分享的是有關Reactor模型與Proactor模型的區別是什么,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

Reactor模型

它是同步非阻塞模型。也稱為Dispatcher模型。想想如果每一個連接過來我們都得建一個線程來處理這個連接,那連接一多線程不得爆滿,那可能有人說上線程池,對線程池肯定是要上的。但這只能解決線程數的問題,但還有一個問題就是資源利用率的問題,當連接沒斷開的時候,當這個連接暫時沒請求的時候你的線程是不是得阻塞著等著請求呀,那線程等于還是被人占用了,別的連接有請求的時候也用不到這個線程,資源的浪費啊,性能低啊。

那如何解決這個問題呢?

當然是等連接有請求的時候線程再上去處理。那這個事情得找個“人”來做,咱們業務線程就處理業務,就是得有個“人”來管理所有的連接,他發現哪個連接有請求了就分配業務線程來處理。

這就叫Reactor模型。上面說的那個"人"我們稱為reactor,中文翻譯時反應堆的意思,也就是他就是那個監視的人,如果有情況來了他就有所反應,分發任務給業務線程處理。

可以有單Reactor單線程,單Reactor多線程,多Reactor多線程

單Reactor單線程

Reactor模型與Proactor模型的區別是什么

select會一直監聽著事件,事件來了之后給dispatch分發,如果建立請求的事件則分配的acceptor,由acceptor創建一個handler來處理后續的業務,如果不是建立請求的事件則分配個之前對應的handler來處理后續業務

這個情況的優點就是簡單。。。沒有多線程共享資源爭搶導致的問題。缺點就是就單線程,浪費了多CPU,并且同一時刻只有一個handler能處理,其他的得等著。

聽起來好像沒啥用啊這樣,是的絕大部分場景不適合,但是redis就是這樣用的。因為它處理業務夠快。所以這種適合在業務處理極快的情況下使用。

單Reactor多線程

Reactor模型與Proactor模型的區別是什么

當業務處理不快就上多線程咯。

這個模式和上面的區別就在于具體業務實現不由handler處理的,handler只負責read數據,將數據給業務線程,然后業務線程處理完畢之后返回結果給handler,由handler send給客戶端。

這個模式的優點就是可以充分利用CPU,適合業務處理不快的情況。缺點就是多線程之間共享資源的爭搶產生的問題,并且只有一個Reactor來監聽并響應,當請求量太大時,一個Reactor可能會成為性能瓶頸。

多Reactor多線程

所以多Reactor多線程就來啦。

Reactor模型與Proactor模型的區別是什么

mainReactor主要用來接受連接,由連接來就給acceptor,acceptor將新的連接分配個某個subReactor,然后這個subReactor將其加入自己的監聽列表,并創建一個handler來處理這個連接。之后就都由這個subReactor來select監聽來響應這個連接的請求,然后dispatch給對應的handler來read,業務處理,send。mainReactor就不管啦。

所以這種方案就等于主Reactor分流了,只有新的連接由主Reactor接受,老的連接都分給了subReactor來響應。

Proactor模型

它是異步非阻塞模型。中文翻譯為前攝器。。不知道啥玩意,可以稱之為主動器。也就是我們不必等待I/O數據準備好也就是內核緩存已經讀數據到用戶空間。這一切都有內核來幫我們搞定,數據準備好了之后就通知Proactor,然后Proactor就調用相應的Handler進行業務處理。相對于Reactor省去了遍歷事件通知隊列selector 的代價。

Reactor模型與Proactor模型的區別是什么

由initiator創建handler和proactor并通過Asynchronous Operation Processor注冊到內核,然后Asynchronous Operation Processor完成I/O會通知proactor,proactor再調用對應的handler處理業務。

所以理論上Proactor的效率比Reactor高,但是linux并沒有真正的實現Proactor模型,而是epoll模擬出Proactor模型。


以上就是Reactor模型與Proactor模型的區別是什么,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

堆龙德庆县| 九龙城区| 临颍县| 两当县| 岱山县| 墨竹工卡县| 东乡县| 黔江区| 大竹县| 平安县| 金昌市| 西安市| 彭州市| 永新县| 绥化市| 石河子市| 西贡区| 勐海县| 邵阳县| 静安区| 昌平区| 神农架林区| 龙南县| 清原| 望江县| 子洲县| 绥棱县| 焦作市| 阜康市| 平陆县| 洪泽县| 株洲县| 登封市| 宁远县| 石首市| 镇雄县| 南开区| 桑日县| 碌曲县| 九龙县| 奉节县|