发布时间:2023-02-13 文章分类:编程知识 投稿人:赵颖 字号: 默认 | | 超大 打印

调度框架:单体调度

什么是调度?

分布式系统架构的目的是将多个服务器资源管理起来,对外提供服务。调度是指为用户任务寻找合适的服务器的过程,它是分布式系统中一个非常重要的组件,提供了多种调度策略,负责完成具体的调度工作。

什么是单体调度?

分布式系统中的单体调度是指一个集群中只有一个节点在运行调度进程,该节点对集群中的其他节点具有访问权限,可以对其他节点的资源信息、节点状态进行统一管理,同时根据用户下发的任务对资源的需求,在调度器中进行任务和资源匹配,然后根据匹配结果将任务指派给合适的节点。

单体调度器具有全局资源视图和全局任务,可以实现对任务的约束并实施全局性的调度策略。

在单体调度框架中,多个Node节点会将本节点的State上报给Master节点。Master节点将Node State信息记录在Cluster State模块中,Cluster State模块用于管理集群中节点的资源等状态。Master节点中的Scheduling Logic模块用于进行Tasks与节点资源的匹配。当Master需要下发任务时,Cluster State模块会将节点的资源状态传送给Scheduling Logic模块,以便Scheduling Logic模块进行Tasks与资源匹配,并根据匹配结果将Task发送给匹配到的节点。

具体结构和流程如下图。
《分布式技术原理与算法解析》学习笔记Day10

单体调度的特征:

  1. 单体调度器可以很容易实现对作业的约束并实现全局性的调度策略,因此适合作为批处理任务和吞吐量较大、运行时间较长的任务。
  2. 单体调度系统的状态同步比较容易且稳定。
  3. 调度算法只能全部内置到核心调度器当中,因此调度框架的灵活性和可扩展性不高。
  4. 单体调度存在单点故障发生的可能性。

Borg调度设计

Borg是典型的集中式集群管理系统,Scheduler是它的核心组件。

Borg系统中包括作业(Job)和任务(Task):

一个作业可以包含多个任务,作业类似于用户在一次事务处理或计算过程中要求计算机所做工作的总和,而任务就是一项具体的工作。

多个任务可以在多台机器上同时运行,从而提高系统的并行程度,调度器会来负责将任务分配给合适的机器。

Borg中的调度是以任务为单位的,不是以作业为单位。

Borg调度算法的核心思想是“筛选可行,评分取优”。它分为两个阶段:

两种不同的匹配算法:

一般来说,对于资源紧缺,且业务流量比较规律,基本不会出现突发情况的场景,可以选择最佳匹配算法, 如果资源比较丰富,且业务流量会经常出现突发情况的场景,可以选择最差匹配算法。

Borg的任务部署机制支持优先级高的任务抢占优先级低的任务资源,如果评分算法选中的机器上没有足够的资源来运行新任务,Borg会抢占该机器上已部署的低优先级任务的资源,从最低优先级的任务开始,逐级向上抢占任务资源,直到可用资源足够运行新任务。其中,被强占的任务会放回到调度器的等待队列中。