網上有很多講解reactor模型的,我還是看了比較久才稍微領悟一點意思,那麼我就舉個例子講講自己的理解。
我們首先先結合nio、多路復用的知識,做乙個比喻。
大前提:餐館的服務員現在假設只有乙個(還需要兼職廚師),那麼當乙個客人來了之後,服務員會把選單給客人,然後就走開去迎接其他客人,當有客人點好餐的時候會把選單告訴服務員,服務員就會去做事,熱按後服務員再把菜給客人,就完成了完整的一次流程。
那麼針對reactor的三種模型。
一.單執行緒模式
那麼這個時候就是指餐廳只有乙個服務員(兼職廚師),那麼這個時候會產生什麼問題喃?
(1)當客人多了的時候,應付不過來。(網路請求多了以後,很多請求其實就是一直在等待)
(2)當有乙個客人的菜特別複雜的時候,例如滿漢全席,那其他客人就只能一首涼涼了。(當乙個業務處理很久或者死迴圈了,那麼整個服務掛掉)
所以針對上面的缺點,有了第二種模式。
二.多執行緒模式
那麼這個時候就是指餐廳可以請多個廚師了,服務員被解放出來了,只用招呼客人。這樣就可以很好地解決單執行緒模式的困擾。但是這樣仍然存在一定的問題。
(1)當客人特別特別多的時候,服務員忙不過來了。
(2)廚師高產出下,會把菜交給服務員,結果服務員也忙不過來了。
為了解決這樣的問題,就有了第三種模式。
三.主從模式
那麼這個時候就是指:老闆把這個服務員公升級成主管了,然後老闆另外請了幾個服務員。每次來客人總會經過主管之手,然後主管就隨便告訴乙個其他的服務員先招呼客人(做主管以前做的事情,即一,二),然後主管就什麼都不用管了,這個時候主觀的壓力就很小了,以前是10個客人的菜都由他傳遞與接收,現在是平分給了其他幾個服務員,這樣效率就更高了
Linux 五種IO模型 形象生動的例子
在學習五種io模型之前,我們先看這樣乙個例子 大家都釣過魚吧,釣魚最主要的步驟實際就兩個 1.等 2.拉桿。釣魚的時候你會發現有這樣幾種人 張三 此人比較沉悶安靜 就一直緊緊盯著魚鉤,一動不動,誰也不理,有魚就拉桿 李四 此人生性活潑好動 在等魚的時候,一會去找張三聊天,嘿,哥們,釣幾條魚了 張三不...
python裝飾器(形象生動)
python教程 www.piqizhu.com 關注我 python教程 131 人贊同了該回答 裝飾器就是把乙個猴子,塞入煉丹爐,然後就出來乙個還是會吃桃子,但有火眼金睛的猴子 還是原來的猴子,但多了特效技能。下面我們以下4個方面介紹python的裝飾器 什麼是裝飾器?為什麼python要引入裝...
Reactor執行緒模型
首先要需要說明的是,reactor執行緒模型並不是netty所獨有,其是一種併發程式設計模型,更確切的或者說一種思想,其具有的是指導意義,開發者需要在這種程式設計模型思想的指導下,結合自己的實際場景,來進行合理的設計。在不同的場景下,可能設計出來的reactor執行緒模型是不一樣的,例如scala中...