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

回到上面的场景中,是个典型的瀑布团队的做法,由团队负责人把各个任务强行摊派给每个团队成员,他假设给每个人分配了合适的任务,也假设每个人能在指定时间内完成任务,这种方式的典型应用就是memcached网络模型的使用。如下图:

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

再回到上面的场景中,每个团队成员怎样得到任务呢?我对于memcached网络模型,当我们往每个worker队列中push任务时就采用某种通知机制告知worker有任务了,快领命干活。比如memcahed的网络模型采用每个worker线程和master线程之间建立一个pipe来进行通知。 比如团队负责人简单地按照RR(轮询)的方式分配任务,作为一个新手你肯定会抱怨,因为没有考虑到你的实际处理能力。对于nginx的方式,当有新任务时,首先看看大家谁能做,比如nginx就是采用worker争锁的方式来竞争任务,master只是负责管理每个worker。

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

参考书籍:

《深入理解计算机系统》  13章-并发编程

《UNIX环境高级编程》    11章-11.3线程标识

用master-worker模型比对团队管理相关推荐

  1. php 多进程 常驻内存,PHP 多进程与信号中断实现多任务常驻内存管理 [Master/Worker 模型]...

    本文章基于pcntl扩展做的多进程测试. 进程调度策略 父子进程的调度由操作系统来负责,具体先调度子进程还是父进程由系统的调度算法决定,当然可以在父进程加上延时或是调用进程回收函数pcntl_wait ...

  2. 怎么才能做好团队管理|方法论加模型案例(附常用管理模型、人员架构图)

    这篇老付要讲一个老生常谈但是又千古难解的话题:团队管理.作为一个互联网人士,要把自己关于团队管理的想法说透,真是比前面几篇都更有挑战性.为了达到最好效果,老付分别找了5-6个不同企业性质和团队规模的创 ...

  3. 微软Asp.Net架构与项目团队管理建设模型分析

    Microsoft Visual Studio 2008 RTM版本已经发布好久了,最近的项目准备用最新的微软技术Microsoft Visual Studio 2008 RTM +Microsoft ...

  4. [原创] OneThink模型管理详解-10分钟创建一个团队管理后台

    本文为原创,根据自己在使用onethink创建web应用时的真实经历撰写而成.请支持本人版权,转载时注明出处.仅为经验分享,不代表权威,不完善不准确之处欢迎纠正,有任何问题可对本文留言. 1.1.1  ...

  5. Nginx源码分析:master/worker工作流程概述

    nginx源码分析 nginx-1.11.1 参考书籍<深入理解nginx模块开发与架构解析> Nginx的master与worker工作模式 在生成环境中的Nginx启动模式基本都是以m ...

  6. 《告别失控:软件开发团队管理必读》一一1.2 成功的程序设计经理为什么难当...

    本节书摘来自异步社区出版社<告别失控:软件开发团队管理必读>一书中的第1章,第1.2节,作者: [美]Mickey W. Mantle(米奇 W.蒙托) , Ron Lichty(罗恩•利 ...

  7. ssdb主从及双主模型配置和简单管理

    ssdb主从及双主模型配置和简单管理 levelDB是一个key->value 的数据存储库,其只能在本地保存数据,支持持久化,并且支持保存非常大的数据,单机redis在保存较大数据的时候数十G ...

  8. 【渝粤题库】广东开放大学 个人与团队管理 形成性考核

    题库查询系统 选择题 题目: 按照KOLB学习周期,一个完整的学习过程包含四个阶段,不属于这四个阶段的是(  ).    A.获得经验                 B.反思 C.认真分析      ...

  9. 敏捷开发团队管理系列之五:大型研发团队的切分(刚参加3.17 MDP团队管理场次的读者请看)...

    本文是团队管理系列的第五篇,也是"松结对编程"系列的第九篇.(团队管理栏目目录,松结对编程栏目目录) 抱歉在这次MPD上不知道中间的20分钟茶歇也在3小时内,所以最后有10分钟左右 ...

最新文章

  1. 读博无门就业碰壁,孤独当了7个月“民科”后,我的论文中了顶会
  2. 微信、陌陌等著名IM软件设计架构详解【转】
  3. Java对存储过程的调用方法 --转载
  4. 深度案例 | 中商惠民:如何用数据洞察商超需求 重塑高效流通链
  5. Scala偏函数使用示例
  6. excel如何在双引号里面引用变量
  7. [C++]有关深复制与copy constructor的一些问题与实例
  8. Maven报错找不到jre
  9. [html] 百度、淘宝、京东移动端首页秒开是如何做到的?
  10. C++ 指针数组与数组指针汇总
  11. Hadoop——Yarn(4)
  12. oracle asm 错误集
  13. 读《scikiit-learn机器学习》黄永昌第三章
  14. 教你计算三种分子性质的方法
  15. linux终端怎么设置monaco,[Linux]Vim设置Monaco字体Vim颜色模板
  16. 阿里云mysql导出表,mysql导出数据库表数据
  17. 放硬币问题的解空间结构
  18. 在CityEngine中制作绘制路网
  19. 功不唐捐—— 程序员职场第一课 后记
  20. 【注意力机制】BAM: Bottleneck Attention Module论文理解

热门文章

  1. 微信 小程序组件 分页传参
  2. linux命令总结之traceroute命令
  3. Android 开发之Windows环境下Android Studio安装和使用教程(图文详细步骤)
  4. 通过onActivityResult()先跳转到联系人界面,然后把传回来的手机号显示到应用的EditText上...
  5. tomcat 7 下添加 shared/lib 文件夹
  6. IOS开发 Block的学习
  7. 微信的充值页面为啥长这样?(多图)
  8. Android弹窗组件工作机制之Dialog、DialogFragment(二)
  9. Java中可变长参数的使用及注意事项
  10. java中关于IO流的知识总结(重点介绍文件流的使用)