云计算中的资源调度解析

——————

云计算中的资源调度

云计算经过十多年的发展,已经成为当前重要的信息基础设施。国内外纷纷涌现了很多云服务商,如谷歌、亚马逊、微软、阿里、华为、腾讯等,呈现百家争鸣的局面。与传统的应用模式相比,云计算具有按需自助服务、弹性可扩展、性价比高、可靠性高等优点。资源调度是指在特定的资源环境下,根据一定的资源使用规则,在不同的资源使用者之间进行资源调整的过程。在云计算集群中通过资源调度可以提高服务质量,从而进一步提高用户服务水平。云计算中的资源调度按照目标的不同可以分为不同的类型:比如按照调度的目标,可以分为降低能耗的调度算法、完成目标的调度算法、面向负载均衡的调度算法等;如果按照调度的对象划分,可以分为面向CPU、网络、存储等基础资源的调度算法;如果按照调度策略来划分,可以分为资源分配负载均衡和动态调度策略等。

资源调度问题存在于各类云计算环境中,包括IaaS、PaaS、SaaS和CaaS(容器即服务)等不同云计算服务模式。IaaS服务商通常部署IaaS集群管理系统,如OpenStack等;Paas服务商部署分布式计算平台,如Hadoop等来提供服务;CaaS服务商部署容器编排系统,如Kubernetes和Docker Swarm。在每个平台中都集成了一个调度器,负责在计算集群上调度用户的任务或服务。调度器的作用是根据用户的需求将调度单元(如虚拟机、容器)分配给资源单元(如物理机、资源容器),调度器的目标是效率、性能和公平。下表列举了在不同场景下的调度系统。

在数据中心,各种计算资源的调度是在一系列的约束条件下进行的,如分配约束、位置约束、相互依赖约束和截止日期约束。

分配约束:分配约束包括用户对特定计算资源 类型的偏好,如用户可能会要求一台具有特定内核版本、软件环境或特殊硬件要求的机器。

位置约束:用户可能会要求节点位于同一机架上或虚拟机位于特定地理位置。

依赖约束:一些作业之间具有相互依赖关系,如Hadoop作业由map和reduce任务组成,reduce任务大多在map任务完成后启动。

亲和性和反亲和性约束:亲和性约束要求将属于同一用户的任务或VM实例放置在同一节点或机架上,以减少网络流量;反亲和性约束要求将任务或VM实例放置在不同的节点或机架上,以避免干扰。

——————

云计算中的资源调度架构分类

云计算集群调度按照调度结构可以分为四类:集中调度、分层调度、分布式调度和混合调度。

1 集中调度

IaaS系统通常采用集中式调度这种架构,例如OpenStack-Nova。集中调度指的是使用中心化的方式管理资源和调度任务。也就是说,调度器本身在系统中只存在单个实例,所有的资源请求和任务调度都通过这一个实例进行。下图展示了集中式调度器的一般模型。可以看到,资源的使用状态和任务的执行状态都由中央调度器管理。

云计算中的资源调度解析

在集中调度架构中,包括三个主要的组件,分别是节点管理组件、作业管理组件和集群资源管理组件。

节点管理组件:部署在每个节点上,汇报节点状态并管理执行的任务。

作业管理组件:对作业进行调度和生命周期管理。

集群资源管理组件:接受作业管理的服务请求,根据更新和集群全局视图在集群间分配资源。

集中调度分为两个具体的类型:基于队列的调度和基于流的调度。基于队列的调度为不同用户建立任务队列,然后基于全局的公平性、容量、延时等策略完 成分配;基于流的调度通过求解最小开销的问题来进行调度。

集中调度的优缺点如下:

  • 适合吞吐量较大、运行时间较长的任务。

  • 调度算法只能全部内置在核心调度器当中,缺乏灵活性和可扩展性。

  • 状态同步比较容易且稳定,这是因为资源使用和任务执行的状态被统一管理,降低了状态同步和并发控制的难度。

  • 由于所有的资源和任务请求都要由中央调度器处理,集中式调度器的可扩展性较差,容易成为分布式系统吞吐量的瓶颈。

2 分层调度

集中调度的主要缺点在于可扩展性较差,容易成为性能瓶颈。在一般的数据密集型应用当中,解决这一问题的主要方法是分层,如Apache Mesos。下图是双层调度器的一般模型:

云计算中的资源调度解析

在双层调度器当中,资源的使用状态同时由分区调度器和中央调度器管理,但是中央调度器一般只负责宏观的大规模的资源分配,因此业务压力较小。分区调度器负责管理自己分区的所有资源和任务,一般只有当所在分区资源无法满足需求时,才将任务上升到中央调度器处理。

相比集中式调度器,分层调度器某一分区内的资源分配和作业安排可以由具体的任务本身进行定制, 因此大大增强了使用的灵活性,可以同时对高吞吐和低延迟的两种场景提供良好的支持。每个分区可以独立运行,降低了单点故障导致系统崩溃的概率,增加了可用性和可扩展性。但是反过来也导致状态同步和维护变得比较困难。

3 分布式调度

分布式调度由运行在各个节点上的独立调度单元构成,没有中心化的调度管理器。这类调度系统,可以分为两大类:状态共享系统和完全独立分布式系统。

状态共享调度器基本上沿袭了集中式调度器的模式,通过将中央调度器肢解为多个服务以提供更好的伸缩性。这种调度器的核心是共享的集群状态,因此可以被称为共享状态调度器。下图是共享状态调度器的一般模型:

云计算中的资源调度解析

状态共享调度器在支持多种任务类型的同时,还能拥有全局的资源状态信息。要做到这一点,这种调度架构的多个调度器需要共享集群状态,包括资源状态和任务状态等。具体来说就是:State Storage 模块(资源维护模块)负责存储和维护资源及任务状态,以便 Scheduler 查询资源状态和调度任务;Resource Pool 即为多个节点集群,接收并执行 Scheduler 调度的任务;而 Scheduler 只包含任务调度操作,而不是像单体调度器那样还需要管理集群资源等。

完全独立分布式调度系统中,每个调度器根据集群内部的资源情况独立地进行调度,如Sparrow。这类系统存在以下几个缺点:无法实现全局目标,如保证资源分配的公平性等;分布式系统只能满足简单的分配要求而无法满足复杂要求;由于缺乏各个调度器之间的协调,在高负载情况下,会影响执行效率。

4 混合式调度

混合式调度系统由集中调度系统和分布式调度系统构成,可以分为三类:完全混合、共享状态混合和双调度器混合。完全混合调度系统由一个中心资源管理器和一组分布式调度器构成,调度系统运行在一个长期运行和具有高优先权的集 群中,每种不同类型的任务运行在不同类型的集群上。这种调度方式可以同时兼备集中调度和分布式调度的优点,但同时也存在以下不足:无法确定任务类型的划分标准,例如是按照运行的时长或其他因素。共享混合式调度系统允许各个调度节点部分使用中心调度器共享的状态信息来进行作业分配。双调度器则是通过构建两个不同的调度器:一个中心调度器来处理长作业,另一个分布式调度器则处理其他作业。

——————

总结

云计算集群调度架构的演化受到作业异构性和扩展性两个因素的影响,从发展的过程看,集群资源的调度正在由集中调度向混合和分布式调度演化。然而,集中调度在实际中仍有大量应用,可以实现集群内部的调度,同时也可实现复杂的调度限制。下图总结了常见的云资源调度系统的结构和目标。

云计算中的资源调度解析

++++

文章作者:何晓忠

手绘插画:岳   媛

原创文章,作者:EBCloud,如若转载,请注明出处:https://www.sudun.com/ask/32763.html

(0)
EBCloud's avatarEBCloud
上一篇 2024年4月2日 下午3:28
下一篇 2024年4月2日 下午3:28

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注