Skip to content

7.2 主从调度模型

基本模型

让我们先看下主从调度模型的基本形态是什么样的,它能指导我们加深对团队的认识吗?这种系统由两个主要的角色构成:Dispatcher 和 Worker,这是主从调度模型的基本逻辑。

基本模型

回顾一下计算机系统中的这两个角色。基于负载均衡的无状态服务集群,负载均衡器充当了 Dispatcher 的角色,普通的服务器充当了 Worker 的角色;基于主从的 CI 构建系统 Jenkins,它的 Master 节点就是 Dispatcher 角色,负责处理任务调度,Slave 节点用于执行任务构建。

在这种模型下,我们发现如果 Master 节点用来跑具体的任务,会挤压它的调度能力, Master 节点崩溃整个系统也不可用了。

我们回归到团队管理中来,一名团队的 Leader 如果每天关注在自己具体的工作上,让 Worker 角色的工作挤占了 Dispatcher 角色的工作,整个团队会开始混乱。在好的情况下,团队中会有其他成员自发地弥补这部分工作,就有点类似于人体被切除某些器官后发生的代偿行为。然而,团队并不总是有这么好的运气,如果没有人来承担 Dispatcher 的工作时,整个系统就陷入混乱。

所以我们需要将模型做一些简单的修正,一名 Leader 不仅需要作为 Dispatcher 的角色还需要作为 Worker 完成某些具体的任务。这也更反应现实,一名技术经理不仅需要分配工作或者任务,往往还需要完成一部分的开发工作。

承担一定的 Worker 职责是有好处的,如果不熟悉具体的工作是什么很难真正的承担 Dispatcher 的职责,分解的任务不具备可执行。

Leader 的职能

在基本模型中,也可以找到 Dispatcher 和 Worker 的主客体关系,这样更能辨明他们的职责关系。

对于 Dispatcher 来说,主体是他自己,客体是被调度的 Worker 以及调度工作;对于 Worker 来说,主体是 Worker 自己,但是客体是具体业务工作。

多层模型

在主从模型中,Dispatcher 带动 Worker 的能力是有限的,因此为了让系统规模能进一步扩大,多级主从模型就是有必要的了。

根据经验,IT 团队由于工作性质的原因直接管理的人数最多能到 10 人左右,也就是常常说的两个披萨就能吃饱的团队规模,如果人数再多就需要增加系统层级通过间接管理的方式进行管理。

间接管理就形成了多层调度模型,也会产生中间节点。中间节点在上层的的角色就是 Worker,在下层就是 Dispatcher。

多层结构

在多层模型中,我们可以将系统看做一个由多个子系统组合的系统。为了度量系统的健康状态,需要引入两个概念:

  • 团队宽度。一个团队的宽度是指每层能够直接调度到的最大节点数量。对于不同的 Dispatcher 由于工作性质和能力不同直接调度的数量可能不同。所以团队宽度又可以分为最大宽度、最小宽度、平均宽度。
  • 团队深度。一个团队的深度是指信息从团队顶层节点传递到最终端节点的层数。信息在传递的过程中会失真、变形,这也是为什么越来越多的公司追求扁平化(扁平化也不等于就是好)的原因。和团队宽度类似,每一个终端节点向上的路径深度也不一样,也可以分为最大深度、最小深度、平均深度。

通过这些概念我们可以建立起一些指标,实现定量的管理模式。

摩擦的成因

当我们认识到团队满足这样一个基本模型后,可以通过模型识别到团队管理中的问题,也就能针对性的优化团队管理,将有问题的团队带出泥潭。

这种情况发生在私人关系非常好的团队,领导交给几个平级的团队成员一些任务,但是没有经过任务拆分,且没有说明谁为这件事负责。

有时候这种场景是刻意为之,比如在应届生招聘时,会通过群体面试的方式设计无领导小组进行面试。目的是,通过竞争、选举、冲突寻找具有领导能力的潜在调度者。

摩擦-无领导小组

主从调度模型中,当一个 Dispatcher 的能力不能满足团队需要时,能否增加多个 Dispatcher?

答案否定的,在分布式系统中,避免这样的模型:多个承担有 Worker 角色的 Dispatcher 构成系统,它会带来状态的一致性问题。在团队管理中,Dispatcher 的负载不会太大,但是需要保证一致性。在一个团队中出现 2 个 PM 会是一个灾难,然而这种场景在各个公司反复上演。

摩擦-多任务流团队

这种情况发生在团队出现 2 个事实调度者,当执行者需要接收多个调度者的任务时,会发生下面问题:

  • 任务逻辑矛盾。
  • 任务计划被打乱。
  • 超出正常工作时间能消化的工作量。

跨级指挥和多调度者类似,对于执行者而言,无法区分哪些任务优先级更高。同时,跨级指挥会对执行者的直接领导者造成影响,对团队的效率产生影响。

跨级指挥的出现,往往导致中间层指挥体系失效的情况。

摩擦-跨级指挥

在这种团队中,即使工作非常久也无法从执行者成为调度者。无上升通道的团队是一个僵化的团队,意味着团队规模和业务没有增长,也没有足够的人员流动。

在这种团队中执行者和调度者都没有足够的主观能动性。

摩擦-无上升通道的团队

另外一种情况造成无上升通道问题的原因是,高层对团队彻底失去信心,决定从外部或者其他团队空降 Dispatcher 从而对抱有升职的现有团队成员造成打击。

在这种团队中,看似团队具有良好的结构,实际上 Leader 如果因为某些原因没有起到调度者的作用,也会让团队的任务传递出现问题。

和无领导小组不同的是,团队中存在名义上的调度者,阻挡了其他成员补齐这个位置的动力。但民间自发出现调度者时,会造成民间调度者和名义上调度者之间的冲突。

摩擦-傀儡 Leader

激励不仅仅是金钱,还包括很多内容。如果激励出现问题,无法传递、或者不合适的传递到团队成员,会造成严重的问题。

在多级的团队系统中,每一层都需要存在相应的激励。激励体系需要建立一个正反馈,符合"劳者多得"而不是"能者多劳"的局面。

摩擦-激励失效

这类团队高层无法知道基层的运行情况,无法做出合理的决策,盲目下发政策,造成基层工作无法展开。

反馈失灵虽然不会短期影响团队运行状态,但是系统会持续性恶化。

摩擦-反馈失灵

Released under the MIT License.