Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/dpwgc/smallscheduler

一个基于Go+MySQL的分布式任务调度平台
https://github.com/dpwgc/smallscheduler

cron go http job mysql scheduler server task vue

Last synced: about 18 hours ago
JSON representation

一个基于Go+MySQL的分布式任务调度平台

Awesome Lists containing this project

README

        

# Small Scheduler

## 一个基于 Go + MySQL 的分布式定时任务调度平台

### 特点

* 无状态分布式服务,只依赖 `MySQL` 数据库,部署流程简单,通过乐观锁控制并发,确保同一时刻同一任务只会被一个服务实例执行
* 使用HTTP Webhook触发任务,无代码侵入,支持`GET`、`POST`、`PUT`、`PATCH`、`DELETE`方法,支持自定义请求体与请求头
* 自带网页控制台,可视化配置定时任务,支持设置调度失败重试规则(最大重试次数、重试间隔时间)及备用HTTP调度地址
* 支持存储与查询各任务的调度记录,按年月划分,自动分表
* 支持健康检查及平滑关闭服务

![index](./image/index.png)
![task](./image/task.png)
![record](./image/record.png)

***

## 使用方式
* 编辑项目配置文件 `config.yaml`,一般只用改数据库配置,其他配置默认即可
* 运行 `main.go` 启动程序,默认http服务端口为9088
* 访问网页控制台 http://localhost:9088/v1/web/
* 在网页上配置与管理定时任务

***

## 编译并运行

### 源代码编译

```
go build main.go
```

#### 将编译后生成的可执行文件main与配置文件config.yaml、页面文件夹web放在同一目录下

* 运行目录
* main
* config.yaml
* web
* css
* js
* index.html

### Mac/Linux环境下运行

cd 到运行目录,执行命令

```
./main
```

### Windows环境下运行

双击`main.exe`运行程序

***

## 后台接口

### 实例健康检查接口

> `GET` http://localhost:9088/v1/health

* 正常情况:HTTP状态码返回`200`
* 正在等待关闭服务:HTTP状态码返回`400`

### 平滑关闭实例接口

> `GET` http://localhost:9088/v1/shutdown?wait=10

* 该接口仅限本机调用(只能使用`localhost`、`127.0.0.1`、`0.0.0.0`这三个hostname访问)
* 参数 `wait` : 等待关闭时间(单位-秒),必须大于0
* 调用`shutdown`接口后,会在等待一段时间后关闭该实例,等待期间只会继续执行那些已经在执行过程中的任务,不会再加载新的任务(避免正在运行的任务突然被打断)