当前位置: 首页 > news >正文

【分布式理论15】分布式调度1:分布式资源调度的由来与过程

文章目录

    • 一、操作系统的资源调度:从单核到多核
    • 二、 分布式系统的资源调度:从单台服务器到集群
    • 三、 固定资源映射
    • 四、 动态资源分配:灵活的任务-资源匹配
    • 五、 资源调度过程:从申请到执行

本文主要讨论主题:

  1. 从操作系统到分布式系统,资源调度的复杂性随着计算需求的增长而不断增加。操作系统的进程调度关注单台机器的任务执行,而分布式系统的资源调度则需要考虑多台机器、多种计算任务以及任务与资源之间的灵活匹配。
  2. 通过引入资源调度器,分布式系统可以实现更高效、更灵活的资源管理与任务调度,使得计算任务能够在更大规模的集群中平稳运行。而动态资源分配,不仅提高了资源的利用率,还为系统的扩展性、弹性和可维护性提供了保障。

 

一、操作系统的资源调度:从单核到多核

在操作系统中,资源调度的基本单位是进程。当计算任务较少,且只有一个CPU时,操作系统只能一次处理一个任务。在这种情况下,操作系统依赖进程调度算法来控制计算任务的顺序。最初的调度方式是 时间片轮转,即将CPU的使用时间划分为小片段,多个计算任务交替执行,从而使得每个任务都有机会“看起来”像是独占CPU。

随着计算需求的增加,单核CPU无法满足大量计算任务的需求,于是多核CPU应运而生。与单核不同,多核CPU可以同时执行多个任务,操作系统需要更为复杂的调度算法来协调这些核之间的工作。

 

二、 分布式系统的资源调度:从单台服务器到集群

分布式系统则是对传统操作系统调度的“扩展”。通过水平扩展,多个服务器通过网络连接起来,共同处理更高并发的计算任务。这就引出了如何在多个服务器之间有效地调度资源的问题。在传统的操作系统中,调度的是单台机器上的资源(如CPU、内存),而在分布式系统中,需要调度的资源包括了多个节点上的 CPU、内存、硬盘、网络等资源

 

三、 固定资源映射

在分布式系统中,静态资源分配是最简单的资源管理方式。静态分配将计算任务与资源节点绑定,即每个计算任务都有固定的资源节点执行。例如,在一个资源集群中,我们可以把Spark、MapReduce、Storm等计算任务分别分配到3个不同的资源节点上,每个任务都只有自己专属的节点。这样,资源节点1至3就专门用来运行Spark任务,资源节点4至6专门处理MapReduce任务。

然而,这种方式也有它的缺点。比如,当某些资源节点出现故障或者不可用时,其他任务可能无法获得足够的资源。即使有其他资源节点空闲,这些空闲节点也无法被其他计算任务使用。静态资源分配的这一局限性使得资源利用率降低,并且无法应对集群规模的动态变化。

 

四、 动态资源分配:灵活的任务-资源匹配

相比静态资源分配,动态资源分配更加灵活,它不再要求计算任务和资源节点一一绑定,而是通过一个资源调度器动态地将任务和资源进行匹配。在动态分配中,计算任务向资源调度器提出请求,调度器根据各资源节点的使用情况,决定将任务分配给哪些节点。

动态资源分配的优势在于:

  • 资源利用率提高:空闲的资源也可以被分配给其他任务。
  • 弹性扩展性:如果集群规模需要扩展,只需增加新的资源节点,资源调度器会自动将新节点纳入管理,实现资源的平滑扩展。
  • 解耦计算任务与资源:动态资源分配解耦了计算任务与资源之间的绑定关系,允许多个计算框架(如Spark、MapReduce、Storm等)共享相同的资源。这种方式能够适应各种不同的计算需求,提升了系统的灵活性和可维护性。

 

五、 资源调度过程:从申请到执行

调度策略包含所需的任务调度策略,也就是对资源和计算任务进行匹配的算法。资源池是对收集起来的硬件资源进行存储和管理的地方。资源收集器,顾名思义就是对资源节点上报的资源进行收集和汇总。

资源调度器在动态资源分配中起到了核心作用。具体来说,资源调度的过程可以分为以下几个步骤:

  1. 资源的组织与管理:分布在不同网络节点上的资源(如CPU、内存等)由节点管理器管理。节点管理器定期向资源收集器汇报每个节点的资源使用情况。这些信息进入资源池,用于后续的任务调度。

  2. 计算任务的组织与管理:当有计算任务需要调度时,任务被放入任务队列。资源调度器根据队列中的任务和资源池中的资源,利用调度策略(如FIFO、公平调度、能力调度等)来决定资源分配的优先级和方式。

  3. 资源调度策略:资源调度策略决定了任务和资源的匹配方式。根据不同的策略,可以选择FIFO策略(先进先出)、能力策略(按任务需求分配资源)等。

  4. 任务执行与资源回收:当资源被分配给任务后,计算任务在资源节点上执行。任务执行完毕后,资源调度器回收资源,空闲资源会重新进入资源池等待下一次分配。
    ![[Pasted image 20250219092738.png]]

 

《分布式架构原理与实践 - 崔皓》

相关文章:

【分布式理论15】分布式调度1:分布式资源调度的由来与过程

文章目录 一、操作系统的资源调度:从单核到多核二、 分布式系统的资源调度:从单台服务器到集群三、 固定资源映射四、 动态资源分配:灵活的任务-资源匹配五、 资源调度过程:从申请到执行 本文主要讨论主题: 从操作系统…...

Python常见面试题的详解12

1. hasattr ()、getattr ()、setattr () 函数是如何使用的? 要点 这三个函数用于对对象的属性进行检查、获取和设置操作,是 Python 中进行对象属性动态操作的重要工具。 hasattr():用于检查对象是否具有指定属性或方法。 getattr()&#x…...

未来AI方向落地场景:小语言模型,super_private_agent

未来AI方向落地场景:小语言模型,super_private_agent 目录 未来AI方向落地场景:小语言模型,super_private_agent小语言模型super - private - agent(注重隐私的智能代理)碳基生命和硅基生命交互界面面向agent的专用交互协议和数据接口从web平台经济到网络平台举例说明社交…...

使用 PyTorch 实现标准卷积神经网络(CNN)

卷积神经网络(CNN)是深度学习中的重要组成部分,广泛应用于图像处理、语音识别、视频分析等任务。在这篇博客中,我们将使用 PyTorch 实现一个标准的卷积神经网络(CNN),并介绍各个部分的作用。 什…...

开题报告——基于Spring Boot的垃圾分类预约回收系统

关于本科毕业设计(论文)开题报告的规定 为切实做好本科毕业设计(论文)的开题报告工作,保证论文质量,特作如下规定: 一、开题报告是本科毕业设计(论文)的必经过程,所有本科生在写作毕业设计(论文)之前都必须作开题报告。 二、开题报告主要检验学生对专业知识的驾驭能…...

YOLOv5 目标检测优化:降低误检与漏检

1. 引言 在目标检测任务中,误检(False Positive, FP)和漏检(False Negative, FN)是影响检测性能的两个主要问题。误检意味着模型检测到了不存在的目标,而漏检则指模型未能检测到真实存在的目标。本文将介绍…...

网络安全治理模型

0x02 知识点 安全的目标是提供 可用性 Avialability机密性 confidentiality完整性 Integrity真实性 Authenticity不可否认性 Nonrepudiation 安全治理是一个提供监督、问责和合规性的框架 信息安全系统 Information Security Management System ISMS 策略,工作程…...

网络原理-

文章目录 协议应用层传输层网络层 数据链路层 协议 在网络通信中,协议是非常重要的概念.协议就是一种约定. 在网络通信过程中,对协议进行了分层 接下来就按照顺序向大家介绍每一种核心的协议. 应用层 应用层是咱们程序员打交道最多的一层协议.应用层里有很多现成的协议,但…...

HTML/CSS中交集选择器

1.作用:选中同时符合多个条件的元素 交集就是或的意思 2.语法:选择器1选择器2选择器3......选择器n{} 3.举例: /* 选中:类名为beauty的p元素,此种写法用的非常的多 */p.beauty{color: red;}/* 选中:类名包含rich和beauty的元素 */.rich.beauty{color: blue;} 4.注意: 1.有标签…...

机器学习(1)安装Pytorch

1.安装命令 pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 2.安装过程Log: Looking in indexes: https://download.pytorch.org/whl/cu118 Co…...

Spring Boot过滤器链:从入门到精通

文章目录 一、过滤器链是什么?二、为什么需要过滤器链?三、Spring Boot中的过滤器链是如何工作的?(一)过滤器的生命周期(二)过滤器链的执行流程 四、如何在Spring Boot中定义自己的过滤器&#…...

vue3之echarts3D圆柱

vue3之echarts3D圆柱 效果&#xff1a; 版本 "echarts": "^5.1.2" 核心代码&#xff1a; <template><div ref"charts" class"charts"></div><svg><linearGradient id"labColor" x1"0&q…...

Redux中间件redux-thunk和redux-saga的具体区别是什么?

Redux 中间件是增强 Redux 功能的重要工具&#xff0c;redux-thunk 和 redux-saga 是两个常用的中间件&#xff0c;它们在处理异步操作和副作用时提供了不同的方式和理念。以下是两者的具体区别&#xff1a; 1. 概念与设计理念 redux-thunk 简洁&#xff1a;redux-thunk 是一…...

代码随想录算法训练营第四十三天| 动态规划06

322. 零钱兑换 如果求组合数就是外层for循环遍历物品&#xff0c;内层for遍历背包。 如果求排列数就是外层for遍历背包&#xff0c;内层for循环遍历物品。 这句话结合本题 大家要好好理解。 视频讲解&#xff1a;动态规划之完全背包&#xff0c;装满背包最少的物品件数是多少&…...

UI自动化教程 —— 元素定位技巧:精确找到你需要的页面元素

引言 在UI自动化测试中&#xff0c;准确地定位页面元素是至关重要的。无论是点击按钮、填写表单还是验证页面内容&#xff0c;都需要首先找到相应的页面元素。Playwright 提供了多种方法来实现这一点&#xff0c;包括使用CSS选择器和XPath进行元素定位&#xff0c;以及利用文本…...

MySQL六大日志的功能介绍。

前言 首先&#xff0c;MySQL的日志应该包括二进制日志&#xff08;Binary Log&#xff09;、错误日志&#xff08;Error Log&#xff09;、查询日志&#xff08;General Query Log&#xff09;、慢查询日志&#xff08;Slow Query Log&#xff09;、重做日志&#xff08;Redo …...

二级指针略解【C语言】

以int** a为例 1.二级指针的声明 a 是一个指向 int*&#xff08;指向整型的指针&#xff09;的指针&#xff0c;即二级指针。 通俗的讲&#xff0c;a是一个指向指针的指针&#xff0c;对a解引用会是一个指针。 它可以用于操作动态分配的二维数组、指针数组或需要间接修改指针…...

鸿蒙状态管理概述

状态管理 状态管理之v1LocalStorageLocalStorageLink的框架行为LocalStorageProp的框架行为LocalStorage使用场景 AppStorageStorageLink的框架行为StorageProp的框架行为AppStorage的使用场景 PersistentStorageEnvironmentEnvironment内置参数 WatchWatch的使用场景 $$语法$$…...

【核心算法篇十三】《DeepSeek自监督学习:图像补全预训练方案》

引言:为什么自监督学习成为AI新宠? 在传统监督学习需要海量标注数据的困境下,自监督学习(Self-Supervised Learning)凭借无需人工标注的特性异军突起。想象一下,如果AI能像人类一样通过观察世界自我学习——这正是DeepSeek图像补全方案的技术哲学。根据,自监督学习通过…...

由浅入深学习大语言模型RLHF(PPO强化学习- v1浅浅的)

最近&#xff0c;随着DeepSeek的爆火&#xff0c;GRPO也走进了视野中。为了更好的学习GRPO&#xff0c;需要对PPO的强化学习有一个深入的理解&#xff0c;那么写一篇文章加深理解吧。纵观网上的文章&#xff0c;要么说PPO原理&#xff0c;各种复杂的公式看了就晕&#xff0c;要…...

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…...

Chapter03-Authentication vulnerabilities

文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...

SciencePlots——绘制论文中的图片

文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了&#xff1a;一行…...

遍历 Map 类型集合的方法汇总

1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...

渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止

<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet&#xff1a; https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...

条件运算符

C中的三目运算符&#xff08;也称条件运算符&#xff0c;英文&#xff1a;ternary operator&#xff09;是一种简洁的条件选择语句&#xff0c;语法如下&#xff1a; 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true&#xff0c;则整个表达式的结果为“表达式1”…...

家政维修平台实战20:权限设计

目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系&#xff0c;主要是分成几个表&#xff0c;用户表我们是记录用户的基础信息&#xff0c;包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题&#xff0c;不同的角色&#xf…...

Rust 异步编程

Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...

【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)

升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点&#xff0c;但无自动故障转移能力&#xff0c;Master宕机后需人工切换&#xff0c;期间消息可能无法读取。Slave仅存储数据&#xff0c;无法主动升级为Master响应请求&#xff…...

今日科技热点速览

&#x1f525; 今日科技热点速览 &#x1f3ae; 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售&#xff0c;主打更强图形性能与沉浸式体验&#xff0c;支持多模态交互&#xff0c;受到全球玩家热捧 。 &#x1f916; 人工智能持续突破 DeepSeek-R1&…...