调度系统设计精要
设计原理
核心问题
调度系统面对的就是资源的需求和供给不平衡的问题。
需求分析
- 调研调度系统的应用场景,深入研究场景中待执行的任务(Work)和能用来执行任务的资源(Resource)的特性;
- 分析调度系统的目的,可能是成本优先、质量优先、最大化资源的利用率等,调度目的一般都是动态的,会随着需求的变化而转变;
应用场景
- 任务是否有截止日期,必须在某个时间点之前完成;
- 任务是否支持抢占,抢占的具体规则是什么;
- 任务是否包含前置的依赖条件;
- 任务是否只能在指定的资源上运行;
- …
架构设计
调度器内部
一般由两部分构成:用于收集状态的状态模块和负责做决策的决策模块。
状态模块
资源的信息: 进程池的情况
决策模块
Scheduler根据状态来做决策
- 通过优先级、任务创建时间等信息确定不同任务的调度顺序;
- 通过过滤和打分两个阶段为任务选择合适的资源;
- 不存在满足条件的资源时,选择牺牲的抢占对象;
Reference
title: "调度系统设计精要 - 面向信仰编程"
image: "https://img.draveness.me/2020-02-02-15805807759135-system-design-and-scheduler.png"
description: "系统设计精要是一系列深入研究系统设计方法的系列文章,文中不仅会分析系统设计的理论,还会分析多个实际场景下的具体实现。这是一个季更或者半年更的系列,如果你有想要了解的问题,可以在文章下面留言。"
url: "https://draveness.me/system-design-scheduler/"