schedule

package
v0.0.0-...-f0fce53 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 20, 2021 License: Apache-2.0 Imports: 24 Imported by: 0

README

任务调度

任务调度顾名思义与任务关联, 完成任务的调度与执行, 主要分为两个部分: 调度器与工作器.

调度器会持续侦听数据库中任务的变更情况. 在任务创建时寻找空闲的工作器, 并将任务分配给工作器执行: 在任务删除时, 发送中断信号给工作器的上下文,指引其终止执行任务.

工作器会根据调度器所分配的任务, 在任务目录下以任务的.metadata.uid为目录名称生成一个任务工作目录, 在其中生成如下配置文件:

  • ansible.cfg --- ansible配置
  • ansible.log --- ansible运行日志
  • inventory.X.common.yml --- 全局参数
  • inventory.X.inventory.yml --- inventory组及其参数
  • playbook.yml --- ansible脚本

根据任务配置生成对应的执行命令,运行脚本并将日志输出到控制台和任务工作目录的ansible.log中.

工作流程

sequenceDiagram
    调度器->>ETCD数据库: 侦听任务创建
    loop 检查空闲工作器
        调度器->>调度器: 没有空闲工作器则将任务推入等待队列
    end
    调度器-->>工作器: 分配任务到空闲的工作器
    Note right of 工作器: 1. 创建任务目录<br/>2. 生成ansible配置<br/>3. 生成ansible脚本<br/>4. 执行playbook脚本<br/>5. 记录执行日志
    调度器->>ETCD数据库: 侦听任务删除
    调度器-->>工作器: 关闭工作器上下文
    工作器-->>调度器: 返回任务执行结果
    调度器-->>ETCD数据库: 更新任务状态

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Scheduler

type Scheduler struct {
	// contains filtered or unexported fields
}

Scheduler 任务调度器

func NewScheduler

func NewScheduler() *Scheduler

func (*Scheduler) Run

func (s *Scheduler) Run(ctx context.Context)

Run 运行任务调度器

type Worker

type Worker struct {
	Hash string
	// contains filtered or unexported fields
}

func (Worker) IsBusy

func (w Worker) IsBusy() bool

func (*Worker) Run

func (w *Worker) Run(ctx context.Context, job *v2.Job) error

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL