分布式技术原理与算法解析
聂鹏程
智载云帆 CTO,前华为分布式 Lab 资深技术专家
39663 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 43 讲
分布式技术原理与算法解析
15
15
1.0x
00:00/00:00
登录|注册

11 | 分布式调度架构之单体调度:物质文明、精神文明一手抓

Google Borg是采用什么技术实现的资源隔离?
单体调度存在的问题和解决方案
单体调度结构的灵活性和策略的可扩展性
单体调度器的特征
将多个集群联合起来工作,增加一个控制中心,由它提供统一对外接口
集群联邦的概念
调度器的核心部分和调度算法
作业和任务的定义及关系
调度的初衷是为作业或任务寻找合适的计算资源
每个节点都有本地的资源管理模块“Resource Manager”
调度器模块包括记录全局资源信息的“Resource State”模块、负责任务调度的“Task Scheduling”模块
适合作为批处理任务和吞吐量较大、运行时间较长的任务
拥有全局资源视图和全局任务
负责集群资源管理和任务调度
单体调度是指一个集群中只有一个节点运行调度进程
思考题
总结
知识扩展:多个集群/数据中心如何实现单体调度呢?
Borg调度设计
单体调度设计
什么是单体调度?
如何理解分布式领域的单体调度

该思维导图由 AI 生成,仅供参考

你好,我是聂鹏程。今天,我来继续带你打卡分布式核心技术。
在前两篇文章中,我和你分析了云资源管理的集中式架构和非集中式架构。可以看出,分布式系统架构的目的是,将多个服务器资源管理起来,寻找合适的服务器去执行用户任务。
那,什么是合适的服务器呢?衡量一个服务器是否合适会涉及很多条件或约束,比如在一些场景下,任务存在优先级,那当我们需要执行多个任务的时候,通常需要满足优先级高的任务优先执行的条件。但在这些条件中,服务器资源能够满足用户任务对资源的诉求是必须的。
而为用户任务寻找合适的服务器这个过程,在分布式领域中叫作调度在分布式系统架构中,调度器就是一个非常重要的组件。它通常会提供多种调度策略,负责完成具体的调度工作。
当然,不同的分布式架构的调度器原理也不一样,最常见或最直观的是单体调度,就是任务和分布式系统中的空闲资源直接进行匹配调度。也就是说,调度器同时管理任务和资源,如果把资源比作“物质文明”,把任务比作“精神文明”,那么单体调度就是“物质文明和精神文明一手抓”。
接下来,我带你一起打卡分布式调度架构之单体调度。
首先,让我们先了解一下什么是单体调度。

什么是单体调度?

分布式系统中的单体调度是指,一个集群中只有一个节点运行调度进程,该节点对集群中的其他节点具有访问权限,可以对其他节点的资源信息、节点状态等进行统一管理,同时根据用户下发的任务对资源的需求,在调度器中进行任务与资源匹配,然后根据匹配结果将任务指派给合适的节点。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

分布式系统中的单体调度是指一个集群中只有一个节点运行调度进程,该节点对集群中的其他节点具有访问权限,可以对其他节点的资源信息、节点状态等进行统一管理,同时根据用户下发的任务对资源的需求,在调度器中进行任务与资源匹配,然后根据匹配结果将任务指派给合适的节点。单体调度器拥有全局资源视图和全局任务,可以很容易地实现对任务的约束并实施全局性的调度策略。在单体调度框架中,多个Node节点会将本节点的State上报给Master节点。Master节点将Nodes State信息记录在Cluster State模块,Cluster State模块用于管理集群中节点的资源等状态。Master节点中的Scheduling Logic模块用于进行Tasks与节点资源的匹配。当Master需要下发任务时,Cluster State模块会将节点的资源状态传送给Scheduling Logic模块,以便Scheduling Logic模块进行Tasks与资源匹配,并根据匹配结果将Task发送给匹配到的节点。在Borg和Kubernetes这两个典型的集中式集群管理系统中,Scheduler是它们的核心。而Kubernetes又是Borg的开源版本。调度的初衷是为作业或任务寻找合适的计算资源,也就是说作业或任务是调度的对象。一个Borg 作业(job)的属性通常包括作业名称、作业产生者和作业包含的任务数量。作业可以有一些约束来限制作业中的任务(task)运行在指定的机器上,比如机器ID、任务所需数据所在机器等属性。一个任务对应的是一组Linux进程,运行在一台机器上的一个容器内或直接运行在节点上。调度器在扫描队列时,按照任务的优先级顺序,从高到低进行选择;且高优先级未被分配的任务可以抢占低优先级已被分配的任务。同优先级的任务则以轮询的方式处理。这样的任务分配次序,可以保证任务的公平,并避免队首的大型任务阻塞队列。 Borg调度算法的核心思想是“筛选可行,评分取优”,具体包括两个阶段:可行性检查和评分。在可行性检查阶段,调度器会找到一组满足任务需求,且有足够可用资源的机器。在评分阶段,调度器确定每台可行机器的适宜性。Borg的评分机制有很多种,但是不同的评分机制,都是针对可行性检查阶段中筛选出的机器,从这些可行的机器中根据评分机制进行打分,从而选出最适合调度的一台机器。Borg的任务部署机制支持优先级高的任务抢占低优先级任务的资源。集群联邦

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《分布式技术原理与算法解析》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(15)

  • 最新
  • 精选
  • luffy
    borg只在google内部使用,为什么不以kubernate为例呢

    作者回复: kubernate是google borg的开源版本,但borg论文已发布,因此选择了以borg进行介绍。

    2020-05-31
    2
    1
  • 亢(知行合一的路上)
    单体调度设计起来相对简单,降低了状态同步和并发控制的难度,那核心在调度算法是否满足业务需求?也就需要深刻理解业务特点,选择合适的算法。 如果调度的任务种类少,设计起来也比较简单,那怎么算设计得好呢?

    作者回复: 除了任务种类,还和具体任务类型相关,以及对资源的需求,比如主要是CPU类型,还是Mem类型。是否设计得好,也和具体的需求有关,比如有些要求充分利用资源,有些要求任务亲和性,有些要求负载均衡等。

    2020-03-07
    1
  • leslie
    只记得Kubernetes课程中张磊老师提到的隔离就是通过linux Control Group去进行资源限制。
    2019-10-16
    5
  • 安排
    最佳匹配策略不利于有突发负载的应用,而且对申请少量 CPU 的批处理作业也不友好,因为这些作业申请少量 CPU 本来就是为了更快速地被调度执行,并可以使用碎片资源。 申请少量cpu的批处理作业不太理解,最佳匹配策略不利于使用碎片资源吗?
    2019-10-16
    5
    4
  • Jackey
    Borg的资源隔离不知道是不是也是使用容器技术,通过在os层面做虚拟机来实现容器间及容器与主机的隔离? ps:亲和性策略就是我跟谁玩的好去找谁玩;反亲和性就是我跟谁不好就坚决不跟他玩。
    2019-10-16
    1
    3
  • mickey
    Google Borg 是采用Namespace技术实现的资源隔离。
    2021-03-23
    1
  • mickey
    Borg 的任务部署机制是支持优先级高的任务抢占低优先级任务,请问老师,低优先级任务被抢占资源后是怎样保护现场和恢复现场的呢?
    2021-03-23
  • Geek_a1d0be
    borg的分布式阻塞队列,是怎么做的。作者能扩展将下吗?
    2021-01-03
  • abc
    这篇干货
    2020-12-12
  • dkwongchn2018
    如果是以任务为调度到位,那么作业的完成时间会不会拖长?
    2020-03-22
收起评论
显示
设置
留言
15
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部