当前位置: 首页 > 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;要…...

大数据学习栈记——Neo4j的安装与使用

本文介绍图数据库Neofj的安装与使用&#xff0c;操作系统&#xff1a;Ubuntu24.04&#xff0c;Neofj版本&#xff1a;2025.04.0。 Apt安装 Neofj可以进行官网安装&#xff1a;Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...

Ubuntu系统下交叉编译openssl

一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机&#xff1a;Ubuntu 20.04.6 LTSHost&#xff1a;ARM32位交叉编译器&#xff1a;arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...

树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频

使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...

C++:std::is_convertible

C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...

FFmpeg 低延迟同屏方案

引言 在实时互动需求激增的当下&#xff0c;无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作&#xff0c;还是游戏直播的画面实时传输&#xff0c;低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架&#xff0c;凭借其灵活的编解码、数据…...

【第二十一章 SDIO接口(SDIO)】

第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...

在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module

1、为什么要修改 CONNECT 报文&#xff1f; 多租户隔离&#xff1a;自动为接入设备追加租户前缀&#xff0c;后端按 ClientID 拆分队列。零代码鉴权&#xff1a;将入站用户名替换为 OAuth Access-Token&#xff0c;后端 Broker 统一校验。灰度发布&#xff1a;根据 IP/地理位写…...

论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)

笔记整理&#xff1a;刘治强&#xff0c;浙江大学硕士生&#xff0c;研究方向为知识图谱表示学习&#xff0c;大语言模型 论文链接&#xff1a;http://arxiv.org/abs/2407.16127 发表会议&#xff1a;ISWC 2024 1. 动机 传统的知识图谱补全&#xff08;KGC&#xff09;模型通过…...

实现弹窗随键盘上移居中

实现弹窗随键盘上移的核心思路 在Android中&#xff0c;可以通过监听键盘的显示和隐藏事件&#xff0c;动态调整弹窗的位置。关键点在于获取键盘高度&#xff0c;并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...

代码规范和架构【立芯理论一】(2025.06.08)

1、代码规范的目标 代码简洁精炼、美观&#xff0c;可持续性好高效率高复用&#xff0c;可移植性好高内聚&#xff0c;低耦合没有冗余规范性&#xff0c;代码有规可循&#xff0c;可以看出自己当时的思考过程特殊排版&#xff0c;特殊语法&#xff0c;特殊指令&#xff0c;必须…...