cknit 是一款開源高可用定時多任務管理工具,定時精度為秒級別 ( 相比cron增加了秒的取值 ),能夠確保高效、穩定的處理多任務。 定時精度隨任務量的變化如下所示 ( 測試平台OSX ):
任務數量 | 定時精度偏差 |
---|---|
1000 | 0.01s |
100000 | 1s |
目前支持 Linux、mac 兩大平台,mac 平台使用 select 系統調用,Linux平台使用 Posix (timer),因此 Linux 平台性能比 mac 平台稍高,任務調度精度更佳
標準格式:
* * * * * * *
列 | 含義 | 取值範圍 | 特殊值含義 |
---|---|---|---|
1 | 秒 | 0-60 | 正常含義 |
2 | 分 | 0-59 | 正常含義 |
3 | 時 | 0-23 | 0:表示午夜12點 |
4 | 日 | 1-31 | 正常含義 |
5 | 月 | 0-11 | 0:表示一月 |
6 | 周 | 0-6 | 0:表示周日 |
/
: 斜線表示每隔多少區間,例如:
*/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
安裝完成後,訪問:
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" } ] }
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" } ]
POST http://127.0.0.1:9898/monitors { "command": "php ~/Desktop/index.php", "period": "* * * * * * */2" }
響應回答如下:
{ "message": "Success", "code": "true", "operation": "Add task" }
PUT http://127.0.0.1:9898/monitors { "id": 998, "data": { "status":0, "period": "* * * 11 * */2", } }
響應回答如下:
{ "message": "Success", "code": "true", "operation": "Modify task" }
[admin
]