Jobs 概述

Jobs API 构建块概述

许多应用程序需要作业调度,或者需要在将来执行某个操作。Jobs API 是一个编排器,用于调度这些未来的作业,可以在特定时间或特定间隔执行。

Jobs API 不仅帮助你调度作业,而且在内部,Dapr 使用 Scheduler 服务来调度 actor reminders。

Dapr 中的 Jobs 由以下部分组成:

查看示例场景。

显示 Scheduler 控制平面服务和 jobs API 的图表

工作原理

Jobs API 是一个作业调度器,而不是运行作业的执行器。该设计保证至少一次作业执行,优先考虑持久化和水平扩展而非精确性。这意味着:

  • 保证: 作业永远不会在计划时间之前被调用。
  • 不保证: 在到期时间之后调用作业的时间上限。

所有计划作业的作业详细信息和用户关联数据都存储在 Scheduler 服务中的嵌入式 Etcd 数据库中。

你可以使用 jobs 来:

  • 延迟你的发布订阅消息 你可以在未来的特定时间发布消息(例如:从今天起一周后,或特定的 UTC 日期/时间)。
  • 调度应用程序之间的服务调用方法调用。

场景

作业调度在以下场景中可能很有用:

  • 自动化数据库备份: 确保数据库每天备份以防止数据丢失。安排备份脚本每天凌晨 2 点运行,这将创建数据库备份并将其存储在安全位置。

  • 定期数据处理和 ETL(提取、转换、加载): 处理和转换来自各种来源的原始数据并将其加载到数据仓库中。安排 ETL 作业在特定时间运行(例如:每小时、每天)以获取新数据、处理它,并用最新信息更新数据仓库。

  • 电子邮件通知和报告: 通过电子邮件接收每日销售报告和每周绩效摘要。安排一个作业生成所需的报告,并通过电子邮件发送,每天报告在每天早上 6 点发送,每周摘要在每周一早上 8 点发送。

  • 维护任务和系统更新: 执行定期维护任务,如清除临时文件、更新软件和检查系统运行状况。安排各种维护脚本在非高峰时段运行,例如周末或深夜,以最大程度减少对用户的干扰。

  • 金融交易的批处理: 处理大量需要批处理并在每个工作日结束时进行结算的交易。安排批处理作业在每个工作日下午 5 点运行,汇总当天的交易并执行必要的结算和对账。

Dapr 的 jobs API 确保这些场景中代表的任务始终如一且可靠地执行,无需手动干预,从而提高效率并降低错误风险。

功能

Jobs API 的主要功能允许你创建、检索和删除计划作业。默认情况下,当你创建一个名称已存在的作业时,操作会失败,除非你显式地将 overwrite 标志设置为 true。这确保现有作业不会被意外修改或覆盖。

跨多个副本调度作业

当你创建一个作业时,它不会替换同名的现有作业,除非你显式设置 overwrite 标志。这意味着每次创建作业时,它都会重置计数,并且只在该作业的嵌入式 etcd 中保留 1 条记录。因此,你不必担心创建和触发多个作业——只有最新的作业被记录和执行,即使你的所有应用程序在启动时都调度相同的作业。

Scheduler 服务使作业的调度能够跨多个副本扩展,同时保证作业仅由 1 个 Scheduler 服务实例触发。

试用 jobs API

你可以在你的应用程序中试用 jobs API。在安装 Dapr后,你就可以开始使用 jobs API,从操作指南:调度作业指南开始。

后续步骤