前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >用分布式系统思考团队管理

用分布式系统思考团队管理

作者头像
ThoughtWorks
发布于 2024-01-03 10:18:19
发布于 2024-01-03 10:18:19
1650
举报
文章被收录于专栏:ThoughtWorksThoughtWorks

管理团队是一件非常困难的事情,在认知能力强的群体中尤其如此。历史告诉我们,缺乏组织的人类群体没有任何战斗力,且在社会化生产的过程中效率非常低下。

在一些公司中,管理问题时时刻刻存在。这些公司要么靠管理者的本能管理,要么靠经验性的管理框架来管理。在 IT 团队中尤其明显,这是因为技术管理者往往更关注技术本身而非管理。

有意思的是,管理能不能也用 “技术的语言”来表述呢?其实是可以的,作为一个分布式系统的爱好者,我慢慢发现分布式系统和团队管理有一些共通之处,且能用这些发现解决一些问题。这些问题对于管理者和团队成员都有一些启示,希望您能耐心地看下去。

团队管理和分布式系统

团队管理是社会学讨论的问题,分布式系统是计算机中的概念。它们之间有什么关系呢?

在开始写作前,我和同事聊到对于这篇文章的想法,同事笑道:你这个想法非常有意思,但也可能只是强行将它们联系到一起。

的确,这两个概念甚至都不在一个学科,一个是文科,而一个算工科的内容。但是,世界是非常有意思的,跨学科的碰撞往往能发挥意想不到的作用。

著名投资人巴菲特的合作伙伴查理·芒格一生都在不停强调跨学科思维的重要性,在他的模型中,数学、物理、生物、化学、哲学、社会学、心理学等领域都会被联系到一起。例如,大家以为投资是经济学话题,而事实上,这是一个社会学或心理学问题 —— 当身边的人开始向你推荐股票,牛市就结束了。

在《分布式计算——原理、算法与系统》这本书的开篇提到,“分布式系统是一组相互独立的实体构成的集合,这些实体相互协作可以解决任何单独的实体所不能解决的问题”。作者认为,分布式系统在宇宙之初就存在了,从蜂群、微生物系统、甚至由人体细胞构成的各种系统,这些都是分布式系统。

团队是一个能独立承担一定功能和职责的人类群体,那么也应该是一个分布式系统,符合分布式系统的一些基本理论。

这是这篇文章的基本前提。

接下来我们会聊到分布式系统的两种模型,分别代表两种典型的团队形态,在计算机中也代表不同的计算模型:

  1. 主从调度模型
  2. 反馈调节模型

主从调度模型

这种系统由两个主要的角色构成:dispatcher(调度员) 和 worker(执行者),这是主从调度模型的基本逻辑。

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

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

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

特点

这种系统有一些鲜明的特征,可以用于后面分析一些具体的问题来使用。

  • 这种模型是有中心的,有一些看起来无中心化的系统,实际是由选举机制自动完成中心化的选举
  • dispatcher 的重点在于如何带动更多的 worker,而不是自己完成工作
  • worker 的工作需要 dispatcher 梳理和分配
  • worker 的主动性受到抑制,工作由 dispatcher 分配
  • 系统的风险大部分来源于 dispatcher
  • 竞争关系由上层决定

反馈调节模型

主从调度模型看起来很完善了,但是却不能描述一些特殊的场景,因此我们需要另外一种模型:反馈调节模型。这个系统由 3 个元素构成:玩家、市场、调节者以及一个隐藏的元素——庄家所构成。

这种系统出现在层级较为扁平的公司,各个团队相对独立和灵活,巨型公司的上层结构也符合这个模型。对于市场经济为主体的国家来说,整个经济体就是这个模型,所以我借用了市场这个词。

在分布式的计算机系统中,这种模型比较少见,一些弹性扩容的系统可以看做这种模型的简单实现。这是由计算机科学基础决定的,计算机科学建立在离散数学上,我们使用的计算模型为图灵模型,图灵模型是一种确定的计算模型(可计算性)。反馈调节模型不是一种确定的计算模型,目前的超计算(Hyper computation )就是在研究如何在计算机中应用这类模型。

在这个模型中,dispatcher 被市场代替了,市场可以认为是一个无形的手,这个手是全体玩家构成的。这种模型是真正的去中心化模型,在生活中如果能细心一点,会发现到处都是这种模型的影子:生物圈、股市、人体内分泌系统等。

回到团队管理来看,我们可以把市场看做一个大的公司,每个玩家就是一个团队,这些团队可以找其他团队合作,但是都要在市场上来竞争;对于国家而言,这些玩家就是企业。如果我们把场景聚焦到大型企业来看,每个团队都需要在这个企业的生态链中寻求一席之地,和上下游的合作就是交易的过程。

特点

这种系统具有和主从调度模型不同的逻辑,很多性质甚至是违反直觉的。

  • 这种模型是无中心化的,调节者不是必须的,只要市场在就不会崩溃
  • 系统具有自我调节能力
  • 玩家具有主动性,市场上出现需求时,玩家会立即参与
  • 在一定时间后,系统会调节地非常充分
  • 在一定时间后,由于马太效应的积累,庄家会控制市场,让市场失去平衡
  • 市场存在被欺骗的风险

对管理者的启示

当我们聊完了这两个模型之后,我们可以得出对管理者有价值的一些启示。

多 dispatcher 问题

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

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

后备者

在计算机系统架构设计中,单点故障是一个需要极力避免的设计,因此需要考虑高可用。主从调度模型中,需要为 dispatcher 准备一个后备, dispatcher 不能提供服务时即使恢复系统。

反馈调节系统中具有天然的自我恢复能力,但是只有一定的阈值,调节者需要密切关注系统健康状态,然后通过政策来修正。

多层系统

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

中间节点在上层的的角色就是 worker,在下层就是 dispatcher。

选举还是委派

在主从模型中,有两种实现形态。

有一些看似去中心化的自组织系统,实际上也是主从模型。比如蜂群无人机系统、电力行业的网格计算,它们一般使用自组网系统(ad-hoc ),多通过选举算法完成。这种模式在军事领域中使用得非常多,例如敌后穿插时不同单位的士兵集合到一起后重新组成临时指挥系统,就是通过军衔作为规则实现选举的。

另外一些场景下,他们的主从关系是提前设定的。比如数据库的主从关系、负载均衡等。在团队管理中,团队的关键人员是由上级委派和从其他地方调拨,而不是就地选拔。

效率更高的系统

通过这两个模型,可以分别优化系统效率。

在主从模型中,我们可以使用认知管理模型。也就是让认知能力强的人来承担 dispatcher, dispatcher 负责设定工作方式和流程,然后由认知能力弱的人来作为 worker。在团队中,人的认知能力会随工作时间成长,因此一般选工作时间长的人作为 dispatcher。

在反馈调节模型中,需要引入调节者来干预市场,防止庄家的出现,庄家会给系统带来风险和效率降低。

系统的稳健性

这两者模型都有一定几率崩溃,但是组织和团队崩溃的原因是多种多样的。外部原因让这两种模型崩溃没有分析价值(比如投资中断等),这里只分析内部原因。

在主从模型中,系统崩溃的原因有:

  • 系统混乱,dispatcher 没有能力或者无法让 worker 继续工作
  • 无上升通道,内部矛盾积累过多,个体会选择退出系统
  • dispatcher 权力无法被制约,造成战略失误或一意孤行

在反馈调节模型中,系统崩溃的原因有:

  • 庄家的形成,造成局部资源枯竭
  • 调节者被裹挟,资源分配不均衡,失去整理竞争力

让系统的规则显性化

俗话说,不成文的规则才是真的规则,但是健康的系统应当尽可能让规则显性化。

在主从模型中 dispatcher 需要尽可能地把工作方式梳理的规范化、明确化,大多数情况下 worker 可以依靠规则行事,在少量的情况中 dispatcher 人为干预,是系统高效的表现。

在反馈调节模型中,竞争规则需要明确,否则调节机制将会失效,破窗效应会让问题进一步恶化。

对个体的启示

当然,从站在个体的角度理解这两个模型,也会让自己受益。

竞争力

在主从调度模型中,个体需要想办法完成调度者给出的任务。他的竞争力来自于:

  1. 强调个人在相应领域的专业能力,专业性越强竞争力越大。
  2. 任务和自己专业能力的匹配性,在越匹配和擅长的岗位上竞争力越大。
  3. 工作输出的稳定性和效率,能源源不断的完成调度者给出的任务,想法过多反而不利。

在市场模型中,参与的玩家需要想办法满足市场的需求,扩大自己的生态位。他的竞争力来自于:

  1. 对市场的敏锐嗅觉,识别市场上的需求。
  2. 找到自己的生态位和生存空间。
  3. 达到市场的支配地位。

权力的来源

权力的流动是我们思考这两种模型中很重要的一部分。

主从调度模型中,权力来自上级的授予,而非来自于团队成员的支持,因此需要注意平衡这两者的关系。例如,在某些政策执行中,可能会为团队成员增加额外的工作量,因此需要 dispatcher 平衡利害关系。

在反馈调节的模型中,权力来自市场中的话语权,具有优势地位的玩家,可以获得更多的权力,最经典的是市场定价权。

上升通道

主从调度模型中,worker 可以上升为 dispatcher。它背后的逻辑往往是先成为提高自己的工作效率,协助完成一些 dispatcher 的工作,成为 dispatcher 后备力量。

在反馈调节的模型中,个体(玩家团队中的 dispatcher 或者 worker)需要成为一个玩家,需要从把关注点放到需求和服务上,识别到市场中微小的需求,想办法满足它。 #本文为作者个人观点,仅供参考

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-12-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 ThoughtWorks洞见 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
万字总结 分布式系统的38个知识点
天天说分布式分布式,那么我们是否知道什么是分布式,分布式会遇到什么问题,有哪些理论支撑,有哪些经典的应对方案,业界是如何设计并保证分布式系统的高可用呢?
一灰灰blog
2022/08/23
6980
关于分布式系统共识的思考
在前面的文章里,我们分析了分布式系统在业务上的一致性技术,即分布式事务,它的结果导向是面向用户的。然而在我们的系统内部,有时也需要面对来自软件架构等更高层次上的一致性要求,比如 Redis 的哨兵模式,Zookeeper 的选举过程等。它们所考虑的一致性更多的是服务节点之间一个共识的达成,当共识达成之后,就可以以此为指导原则,展开更多的协同操作。
lincoln
2021/12/26
5700
关于分布式系统共识的思考
如何学习分布式系统?一文全Get!
image.png 本文来自作者在GitChat(ID:GitChat_Club)上分享「如何学习分布式系统?」,CSDN独家合作发布。 分布式系统在互联网公司中的应用已经非常普遍,开源软件层出不穷。hadoop生态系统,从hdfs到hbase,从mapreduce到spark,从storm到spark streaming, heron, flink等等,如何在开源的汪洋中不会迷失自己?本文将从基本概念、架构并结合自己学习工作中的感悟,阐述如何学习分布式系统。由于分布式系统理论体系非常庞大,知识面非常广博
CSDN技术头条
2018/02/08
1.7K0
如何学习分布式系统?一文全Get!
Replication(上):常见的复制模型&分布式系统的挑战
总第530篇 2022年 第047篇 分布式系统设计是一项十分复杂且具有挑战性的事情。其中,数据复制与一致性更是其中十分重要的一环。数据复制领域概念庞杂、理论性强,如果对应的算法没有理论验证大概率会出错。如果在设计过程中,不了解对应理论所解决的问题以及不同理论之间的联系,势必无法设计出一个合理的分布式系统。 本系列文章分上下两篇,以《数据密集型应用系统设计(DDIA)》(下文简称《DDIA》)为主线,文中的核心理论讲解与图片来自于此书。在此基础上,加入了日常工作中对这些概念的理解与个性化的思考,并将它们映
美团技术团队
2022/08/26
7710
Replication(上):常见的复制模型&分布式系统的挑战
分布式系统中的一致性管理:构建可靠的分布式世界
嗨,大家好!作为一名在分布式系统领域摸爬滚打了一段时间的技术爱好者,我想跟大家聊聊分布式系统中的一致性管理这个超级重要的话题。你想啊,在我们现在这个到处都是分布式系统的时代,从大型的数据中心到我们日常使用的各种互联网服务,一致性就像是那根把所有东西都串起来的线,如果这根线乱了,那整个系统可就麻烦大了。今天,我就想把我对分布式系统一致性管理的理解和经验分享给大家。
Echo_Wish
2025/01/08
1820
分布式系统中的一致性管理:构建可靠的分布式世界
分布式系统核心问题
随着摩尔定律碰到瓶颈,越来越多的系统要依靠分布式集群架构来实现海量数据处理和可扩展计算能力。
efonfighting
2019/12/17
7630
分布式系统核心问题
零基础读懂分布式系统
而不理解区块链的麻烦,在于会陷入到对「去中心化」、 「无需许可」等等概念以及「TPS」、「安全」等等问题失去语境的讨论中去。这不仅无助于我们去准确地分析和判断一个区块链项目,也让我们无法认清区块链在技术上的可能的发展路线。
Java帮帮
2019/09/25
3920
零基础读懂分布式系统
分布式系统架构(一)——Master-Workers 架构
Master-Workers 架构(粗译为主从架构)是分布式系统中常见的一种组织方式,如 GFS 中的 Master、ChunkServers;MapReduce 中的 Master、Workers。面对分布式系统中一堆分离的机器资源,主从架构是一种最自然、直白的组织方式——就像一群人,有个说了算 leader 进行组织、协调,才能最大化这群人的对外输出能力。
木鸟杂记
2021/09/26
1.5K0
分布式系统中如何保证数据一致?
在分布式系统中,保证数据一致性是一个复杂而关键的问题。由于系统的分布性,不同节点上的数据可能会发生变化,而系统需要采取一些机制来确保数据的一致性。以下是一些常见的方法:
孟斯特
2023/12/29
1.2K0
分布式系统中如何保证数据一致?
分布式协同(万字长文)
分布式协同,也叫分布式协调,是在计算机网络中,不同的硬件或软件组件完成各自的任务,然后通过协同工作来解决问题。
明志德道
2023/12/05
1.5K0
分布式系统 概念 高可用 高并发 学习笔记
分布式系统是由一组通过网络进行通信、为了完成共同的任务而协调工作的计算机节点组成的系统。分布式系统的出现是为了用廉价的、普通的机器完成单个计算机无法完成的计算、存储任务。其目的是利用更多的机器,处理更多的数据。
大鹅
2020/06/28
8700
分布式系统 概念 高可用 高并发 学习笔记
分布式系统如何设计,看看Elasticsearch是怎么做的
分布式系统类型多,涉及面非常广,不同类型的系统有不同的特点,批量计算和实时计算就差别非常大。这篇文章中,重点会讨论下分布式数据系统的设计,比如分布式存储系统,分布式搜索系统,分布式分析系统等。
Bug开发工程师
2019/07/12
6940
分布式系统如何设计,看看Elasticsearch是怎么做的
1.1.3 Spark架构与单机分布式系统架构对比
传统的单机系统,虽然可以多核共享内存、磁盘等资源,但是当计算与存储能力无法满足大规模数据处理的需要时,面对自身CPU与存储无法扩展的先天限制,单机系统就力不从心了。 1.分布式系统的架构 所谓的分布式系统,即为在网络互连的多个计算单元执行任务的软硬件系统,一般包括分布式操作系统、分布式数据库系统、分布式应用程序等。本书介绍的Spark分布式计算框架,可以看作分布式软件系统的组成部分,基于Spark,开发者可以编写分布式计算程序。 直观来看,大规模分布式系统由许多计算单元构成,每个计算单元之间松耦合。同时,每
Albert陈凯
2018/04/04
9240
分布式系统的介绍(2)--分布式系统&中间件从入门到精通(二)
上篇文章我们说了分布系统存在的意义,基础的线程进程运行模式,进程之间内存是相互独立的,多线程是在进程内部,共享同一个进程里的内存,进程之间也可以共享对象,但是就有了序列化和反序列化的开销。网络通信知识有BIO/NIO/AIO、java通常用的NIO非阻塞,把出现的事件交给event handler处理,不需要一个socket分配一个线程,一个线程可以处理多个socket套接字工作。
用户9919783
2022/07/29
3500
如何系统性地学习分布式系统?
作者 | 伴鱼技术团队 本文的缘起是回答知乎圆桌会议「分布式系统之美」的问题「如何系统性地学习分布式系统?」,后面稍微整理了一下,形成了这一篇文章(知乎 ID:kylin)。 前
深度学习与Python
2020/10/23
3360
浅谈分布式系统
用户11369558
2024/11/20
1230
浅谈分布式系统
分布式系统常用思想和技术
感谢该作者的总结,转载地址:http://blog.arganzheng.me/  本人将重点进行加粗,便于大家一起查阅学习
用户3003813
2018/09/06
7270
分布式系统常用思想和技术
分布式集群中为什么会有 Master?
在现代的分布式系统中,Master 节点扮演着关键的角色,确保集群的稳定性和高可用性。我们将在本文中详细解释 Master 节点的作用、其在分布式系统中的应用、以及如何实现一个简单的示例。
疯狂的KK
2023/09/27
8580
分布式集群中为什么会有 Master?
推荐一个分布式系统的学习课程
介绍下Martin Kleppmann博士在剑桥上开的课程Distributed Systems。这个课程可以认为是Martin Kleppmann对《数据密集型应用系统设计》这本书的一个补充。感兴趣的可以关注:
哒呵呵
2021/03/16
1.2K0
分布式系统的一致性再思考
如今使用的几乎所有软件都是分布式系统的一部分,手机上的应用程序与托管在云中的服务一起工作,托管服务本身就是大规模的分布式系统,通常运行在遍布全球的机器上,大数据系统和大规模数据库分布在许多机器上,大多数科学计算和机器学习系统在多个处理器上并行工作,即使是传统的桌面操作系统以及诸如电子表格和文字处理器之类的应用程序也在与分布式后端服务紧密集成。分布式系统中,多台不可靠的机器并行运行,通过具有任意延迟的网络链路彼此发送消息。怎么能确信这些系统在混乱的情况下能够做到我们想要的呢?
半吊子全栈工匠
2022/03/29
3150
分布式系统的一致性再思考
相关推荐
万字总结 分布式系统的38个知识点
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档