高精度、可用的定时任务管理工具 cknit 开源啦

cknit

cknit 是一款开源高可用定时多任务管理工具,定时精度为秒级别 ( 相比cron增加了秒的取值 ),能够确保高效、稳定的处理多任务。 定时精度随任务量的变化如下所示 ( 测试平台OSX ):

任务数量定时精度偏差10000.01s1000001s

支持平台

目前支持 Linuxmac 两大平台,mac 平台使用 select 系统调用,Linux平台使用 Posix (timer),因此 Linux 平台性能比 mac 平台稍高,任务调度精度更佳

时间间隔格式

标准格式:

* * * * * * *

可选模式:

  • / : 斜线表示每隔多少区间,例如:
  • */3 * * * * *
  • 表示每隔三秒执行一次任务
  • , :逗号表示可选值,例如:
  • */3 1,2,5,10 * * * *
  • 表示在第1、2、5、10分钟每隔3秒执行一次任务
  • - :表示区间范围,区间取值是包含边界值,例如:
  • * 1-10,15,30-35 * * * *
  • 表示在第1到10分钟、15分钟、30到35分钟的每一秒都执行一次任务

上面三种模式可以任意组合

设计架构

安装

cknit 采用 cmake 编译系统,因此需要目标机器安装 cmake 3.13 及以上版本

1、下载源码

git clone https://gitee.com/josinli/cknit.git

2、编译

mkdir build
cd build
cmake ..
make && make install
cknit

APIs管理

安装完成后,访问:

http://127.0.0.1:9898

响应如下:

{
"message": "Welcome use cknit",
"code": "ok",
"version": "1.0",
"port": 9898,
"APIs": [
{
"name": "Get all monitors tasks",
"method": "GET",
"protocol": "HTTP/1.1",
"url": "http://127.0.0.1:9898/monitors"
},
{
"name": "Add one monitors tasks",
"method": "POST",
"protocol": "HTTP/1.1",
"url": "http://localhost:9898/monitors"
},
{
"name": "Modify one monitors tasks",
"method": "PUT",
"protocol": "HTTP/1.1",
"url": "http://localhost:9898/monitors"
}
]
}

API: 获取当前所有的任务

GET http://127.0.0.1:9898/monitors

响应回答如下:

[
{
"command": "php ~/Desktop/index.php",
"period": "* 1,2,3,10-20 * * * *",
"id": 1,
"status": 0
},
{
"command": "php ~/Desktop/index.phpd",
"period": "* * * * * * */2"
}
]

API: 在线添加任务

POST http://127.0.0.1:9898/monitors
{
"command": "php ~/Desktop/index.php",
"period": "* * * * * * */2"
}

响应回答如下:

{
"message": "Success",
"code": "true",
"operation": "Add task"
}

API: 在线修改已存任务(id是系统自动分配的)

PUT http://127.0.0.1:9898/monitors
{
"id": 998,
"data": {
"status":0,
"period": "* * * 11 * */2",
}
}

响应回答如下:

{
"message": "Success",
"code": "true",
"operation": "Modify task"
}
发表评论
留言与评论(共有 0 条评论)
   
验证码:

相关文章

推荐文章

'); })();