分布式任务调度设计的要求
了解任务调度程序的功能和非功能要求。
要求
我们从以下角度来了解设计任务调度器的功能和非功能要求。
功能要求
分布式任务调度器的功能要求如下:
- 提交任务:系统应允许用户提交任务以进行执行。
- 分配资源:系统应能够为每个任务分配所需的资源。
- 移除任务:系统应允许用户取消已提交的任务。
- 监听任务执行:应适当地监视任务执行并在任务执行失败时重新安排任务。
- 有效的资源利用:必须在时间、成本和公平性方面有效地使用资源(CPU 和内存)。效率意味着我们不会浪费资源。例如,如果我们将重型资源分配给可以在便宜的资源上轻松执行的轻型任务,则意味着我们未有效地利用我们的资源。公平性是所有租户在某个成本类别中平等概率获得资源的能力。
- 释放资源:成功执行任务后,系统应该将分配给任务的资源收回。
- 显示任务状态:系统应向用户显示任务的当前状态。
非功能要求
分布式任务调度器的非功能要求如下:
- 可用性:系统应高度可用以安排和执行任务。
- 持久性:系统接收的任务应具有持久性,并且不应丢失。
- 可伸缩性:系统应能够安排和执行每天不断增加的任务数。
- 容错性:系统必须具有容错性,在一个或多个组件出现故障时仍能提供不间断的服务。
- 有界等待时间:这是任务在开始执行之前需要等待的时间。我们不应比预期的执行时间晚执行任务。用户不应无限期地处于等待状态。如果用户的等待时间超过一定阈值,则应通知他们。
到目前为止,在本课程中,我们已经了解了任务调度程序的一般情况,并区分了集中式和分布式任务调度程序。最后,我们列出了分布式任务调度器系统的要求。
我们将使用的构建块
在设计任务调度系统时,我们将利用以下构建块:
- 速率限制器 用于限制任务的数量,以使我们的系统可靠。
- 序列号生成器 用于唯一标识任务。
- 数据库 用于存储任务信息。
- 分布式队列 用于按执行顺序排列任务。
- 监测 对于检查资源的运行状况以及检测失败的任务以向用户提供可靠的服务至关重要。
我们已确定任务调度程序的要求。在下一课中,我们将根据这些要求设计任务调度系统。