用master-worker模型比对团队管理
? ? ? ?先講一個場景:“團(tuán)隊負(fù)責(zé)人接到一個新項目,他會把項目進(jìn)行需求細(xì)化,功能細(xì)化,然后他會分配給不同的團(tuán)隊成員完成”。 在這個場景中,團(tuán)隊負(fù)責(zé)人就是master,團(tuán)隊成員就是worker,至于這樣做的好處,不用說大家也明白,如果團(tuán)隊負(fù)責(zé)人一個人干,估么著他要么累死,要么任務(wù)完不成被領(lǐng)導(dǎo)罵死。同理,架構(gòu)層面master-worker模型的最大作用就是提高處理效率,特別是在多核cpu上,多worker的并發(fā)執(zhí)行更有效的利用了cpu資源,提高了處理效率。在我們的實際應(yīng)用中master-worker模型往往會結(jié)合生產(chǎn)者-消費者模型使用,由master產(chǎn)生一個隊列,而每個worker作為消費者消費這個隊列。
? ? ? ?回到上面的場景中,是個典型的瀑布團(tuán)隊的做法,由團(tuán)隊負(fù)責(zé)人把各個任務(wù)強(qiáng)行攤派給每個團(tuán)隊成員,他假設(shè)給每個人分配了合適的任務(wù),也假設(shè)每個人能在指定時間內(nèi)完成任務(wù),這種方式的典型應(yīng)用就是memcached網(wǎng)絡(luò)模型的使用。如下圖:
? ? ? ?這樣看似很公平了吧。可是實際中肯定某人因為能力或者外界干擾的原因無法按時完成任務(wù),這樣也就影響了整體處理的效率。干脆我們采用敏捷團(tuán)隊的做法,由團(tuán)隊成員自己選擇任務(wù),根據(jù)自己的能力甚至興趣愛好,自我量力的保證自己可以完成,甚至效率高的成員還可以多選多做,這種方式的典型應(yīng)用就是nginx。如下圖:
? ? ? ?再回到上面的場景中,每個團(tuán)隊成員怎樣得到任務(wù)呢?我對于memcached網(wǎng)絡(luò)模型,當(dāng)我們往每個worker隊列中push任務(wù)時就采用某種通知機(jī)制告知worker有任務(wù)了,快領(lǐng)命干活。比如memcahed的網(wǎng)絡(luò)模型采用每個worker線程和master線程之間建立一個pipe來進(jìn)行通知。 比如團(tuán)隊負(fù)責(zé)人簡單地按照RR(輪詢)的方式分配任務(wù),作為一個新手你肯定會抱怨,因為沒有考慮到你的實際處理能力。對于nginx的方式,當(dāng)有新任務(wù)時,首先看看大家誰能做,比如nginx就是采用worker爭鎖的方式來競爭任務(wù),master只是負(fù)責(zé)管理每個worker。
? ? ? ?以上就是master-worker模型的簡單介紹,至于他的適用場景有很多很多,大家可以自己擴(kuò)展。另外從上面的場景模擬中我也想向大家推薦敏捷團(tuán)隊的管理組織方式。
參考書籍:
《深入理解計算機(jī)系統(tǒng)》 ?13章-并發(fā)編程
《UNIX環(huán)境高級編程》 ? ?11章-11.3線程標(biāo)識
總結(jié)
以上是生活随笔為你收集整理的用master-worker模型比对团队管理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 三层结构功能解析
- 下一篇: android interview 2