且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

从master-worker模型看团队管理

更新时间:2022-10-01 13:10:45

先讲一个场景:“团队负责人接到一个新项目,他会把项目进行需求细化,功能细化,然后他会分配给不同的团队成员完成”。 在这个场景中,团队负责人就是master,团队成员就是worker,至于这样做的好处,不用说大家也明白,如果团队负责人一个人干,估么着他要么累死,要么任务完不成被领导骂死。
       master-worker模型的最大作用就是提高处理效率,特别是在多核cpu上,多worker的并发执行更有效的利用了cpu资源,提高了处理效率。在我们的实际应用中master-worker模型往往会结合生产者-消费者模型使用,由master产生一个队列,而每个worker作为消费者消费这个队列。
      回到上面的场景中,是个典型的瀑布团队的做法,由团队负责人把各个任务强行摊派给每个团队成员,他假设给每个人分配了合适的任务,也假设每个人能在指定时间内完成任务。如图一:

从master-worker模型看团队管理

这种方式的典型应用就是memcached网络模型的使用。
      这样看似很公平了吧。可是实际中肯定某人因为能力或者外界干扰的原因无法按时完成任务,这样也就影响了整体处理的效率。
      干脆我们采用敏捷团队的做法,由团队成员自己选择任务,根据自己的能力甚至兴趣爱好,自我量力的保证自己可以完成,甚至效率高的成员还可以多选多做。如图二:

从master-worker模型看团队管理

这种方式的典型应用就是nginx。
       再回到上面的场景中,每个团队成员怎样得到任务呢?我对于图一中的模型,当我们往每个worker队列中push任务时就采用某种通知机制告知worker有任务了,快领命干活。比如memcahed的网络模型采用每个worker线程和master线程之间建立一个pipe来进行通知。(如果团队负责人简单地按照RR的方式分配任务,作为一个新手你肯定会抱怨,为什么我都忙得焦头烂额了还给我任务,天啊,谁来帮帮我啊)。对于图二中的方式,当有新任务时,大家看看谁能做,比如nginx就是采用worker争锁的方式来竞争任务,master只是负责管理每个worker,多好的团队成员,领导也省心。

       以上就是对强大的master-worker模型的简单介绍,至于他的适用场景有很多很多,大家可以自己扩展。另外从上面的场景模拟中我也想向大家推荐敏捷团队的管理组织方式,至于好坏,用后请看疗效。


参考书籍:
《深入理解计算机系统》  13章-并发编程
《UNIX环境高级编程》    11章-11.3线程标识
本文转自永远的朋友博客51CTO博客,原文链接http://blog.51cto.com/yaocoder/1170944如需转载请自行联系原作者

yaocoder