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