×

作业服务在云环境中调度和执行任务。独立的服务实现这些任务,这些任务可以通过任何支持的交互模式启动,包括 HTTP 调用或 Knative 事件交付。

在 OpenShift Serverless Logic 中,作业服务负责控制定时触发的动作的执行。因此,您可以在工作流中使用的所有基于时间的状态都由工作流与作业服务的交互来处理。

例如,每当工作流执行到达具有配置超时时间的某个状态时,就会在作业服务中创建一个相应的作业,并且当超时时间达到时,就会执行 HTTP 回调以通知工作流。

作业服务的主要目标是管理活动作业,例如需要执行的计划作业。当作业到达其最终状态时,作业服务会将其删除。为了将作业信息保留在永久存储库中,作业服务会生成状态更改事件,这些事件可以由外部服务(例如数据索引服务)记录。

如果您使用 OpenShift Serverless 运算符部署工作流,则无需手动安装或配置作业服务。运算符会自动处理这些任务,并管理每个工作流与之连接所需的所有必要配置。

作业服务领导者选举过程

作业服务作为一个单例服务运行,这意味着只有一个活动实例可以调度和执行作业。

为了防止在可能运行多个实例的云环境中部署服务时发生冲突,作业服务支持领导者选举过程。只有当选为领导者的实例才能管理外部通信以接收和调度作业。

非领导者实例保持非活动状态,但继续尝试通过选举过程成为领导者。当新实例启动时,它不会立即承担领导角色。相反,它会进入领导者选举过程以确定它是否可以接管领导者角色。

如果当前领导者无响应或已关闭,则另一个正在运行的实例将接管领导者角色。

此领导者选举机制使用底层持久性后端,目前仅在 PostgreSQL 实现中受支持。