高精度、可用的定時任務管理工具 cknit 開源啦

←手機掃碼閱讀     admin @ 2019-07-11 , reply:0

cknit

cknit 是一款開源高可用定時多任務管理工具,定時精度為秒級別 ( 相比cron增加了秒的取值 ),能夠確保高效、穩定的處理多任務。 定時精度隨任務量的變化如下所示 ( 測試平台OSX ):

任務數量 定時精度偏差
1000 0.01s
100000 1s

支持平台

目前支持 Linuxmac 兩大平台,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

安裝

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"
}




[admin ]

來源:OsChina
連結:https://www.oschina.net/news/108132/cknit-open-source
高精度、可用的定時任務管理工具 cknit 開源啦已經有40次圍觀

http://coctec.com/news/all/show-post-209545.html