【分布式系统遨游】分布式资源调度

今天我们来讨论分布式资源调度。为什么需要资源调度从计算机演化说起我们知道,计算机的出现很大程度上是为了分担人类的工作的。所以,整个计算机体系架构的演化的过程,都离不开对任务与资源这两个因素的考虑。如何利用最少的资源,运行最多的任务,且耗时最短,这是一直以来伴随我们以及科学家的难题。对于单机系统来说,从最早的单道程序设计技术、到多道程序设计技术、到现在的多核并行架构,解决方案正在逐步进化,也就...
摘要由CSDN通过智能技术生成

今天我们来讨论分布式资源调度。

为什么需要资源调度

从计算机演化说起

我们知道,计算机的出现很大程度上是为了分担人类的工作的。所以,整个计算机体系架构的演化的过程,都离不开对任务与资源这两个因素的考虑。如何利用最少的资源,运行最多的任务,且耗时最短,这是一直以来伴随我们以及科学家的难题。对于单机系统来说,从最早的单道程序设计技术、到多道程序设计技术、到现在的多核并行架构,解决方案正在逐步进化,也就是我们最直观的感受:计算机处理任务变快了。

从操作系统进程调度到分布式资源调度

我们可以类比一下操作系统的概念。相比于分布式资源调度,操作系统其实就是一种微观上的资源调度。我们把任务与任务相关的一系列上下文(包括程序代码与数据),统统抽象为进程。进程就是任务。在单核CPU架构下,由于只有一个CPU核,所以我们只能同时对一个任务进行处理。
但是,我们的任务数量不只会有1个,而是会远远超出CPU的数量,即“僧多粥少”的局面,所以,操作系统的进程调度算法出现了,比如时间片轮转调度算法,即一段时间内,CPU快速在多个任务之间快速切换、交替执行,故对每个任务内部来说,好像自己在独占CPU一样,这就是所谓的并发。除此之外,还有高优先级、高响应比、多级反馈队列调度等等任务调度算法,都在力图在单核CPU基础上解决这个问题。但是,我们一定不会满足,为了追求更高程度的并发,即在同一时刻允许多个任务同时运行。所以,多核CPU就这样诞生了,即实现了所谓的并行。那么同理,分布式系统也同样需要这种资源与任务的调度机制,来协调资源与任务之间的关系。
分布式系统存在的意义之一,就是解决单体架构执行任务时的性能瓶颈,所以,我们找来了一堆机器,来分担原来一台机器上的计算任务。但是,资源是多了,但是我们要如何利用呢?这里面就涉及到资源如何公平公正的分给每一个计算任务,让整个集群合理的利用硬件资源,短时、高效、公平的完成一系列的计算任务,而不至于某个任务被饿死或者撑死。所以,需要一个宏观上的“操作系统”,来合理的将无穷多个计算任务,分配到m个集群节点的计算资源上去执行。这,就是为什么需要分布式资源调度机制。

单体调度

对于操作系统进程调度来说,资源只有一份,那就是当前操作系统所在的计算机硬件资源;而任务有很多,资源:任务 = 1:N的关系,操作系统在进行任务调度之前,只需要收集它所在的计算机的硬件资源即可。而对于一个分布式系统中的集群,计算资源分布在多个节点上,任务还是有很多,他们之间是M:N的关系。所以,分布式系统的工作稍微复杂些,它需要收集所有节点上的资源信息而非仅仅一个节点,然后对所有收集来的资源信息做一个统筹规划。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值