Openjob,分布式任務(wù)調(diào)度框架
1 什么是Openjob
Openjob是一種基于Akka的新分布式任務(wù)調(diào)度框架。支持多種cronjob、延遲任務(wù)和工作流,使用一致性分片算法,具備無限的水平擴(kuò)展。
2 特性
Openjob不僅支持基本的cronjob,還支持延遲任務(wù)、分布式計(jì)算和工作流。
2.1 Cronjob
Openjob支持Cronjob任務(wù)調(diào)度,具備以下特點(diǎn):
- 支持Unix Crontab表達(dá)式
- 秒級別,執(zhí)行周期小于60秒
- 固定頻率,以分鐘為單位執(zhí)行任務(wù)
2.2 延遲任務(wù)
Openjob支持基于Redis的分布式高性能延遲任務(wù),并提供豐富的報(bào)告和統(tǒng)計(jì)信息,這種延遲任務(wù)能夠保證高效、可靠地執(zhí)行。
2.3 分布式計(jì)算
Openjob支持分布式計(jì)算,可實(shí)現(xiàn)以下功能:
- 獨(dú)立執(zhí)行:任務(wù)可在工作客戶端上獨(dú)立執(zhí)行。
- 廣播執(zhí)行:任務(wù)可在所有工作客戶端上廣播執(zhí)行。
- 映射執(zhí)行:映射函數(shù)可以將大數(shù)據(jù)分發(fā)到多臺機(jī)器上執(zhí)行,類似于Hadoop map
- MapReduce:MapReduce是Map的擴(kuò)展。在所有Map子任務(wù)完成后,執(zhí)行Reduce方法,可以在Reduce方法中處理任務(wù)執(zhí)行的結(jié)果和數(shù)據(jù)。
- 分片:類似于Elastic-Job模型,在管理上配置分片數(shù),可以通過分片調(diào)度到不同的客戶端,并支持多種語言。
2.4 處理器
Openjob提供處理器功能,可通過函數(shù)或類執(zhí)行任務(wù),支持Java、Golang和PH語言。同時,還支持以下處理器類型:
- HTTP:可用于定期請求HTTP。
- Shell:可用于執(zhí)行shell腳本。
2.5 可視化操作
Openjob提供可視化操作功能,包含以下內(nèi)容:
- 儀表板:提供豐富的任務(wù)統(tǒng)計(jì)和報(bào)告功能,方便用戶對任務(wù)執(zhí)行情況進(jìn)行實(shí)時監(jiān)控和分析。
- 任務(wù)歷史記錄:記錄任務(wù)執(zhí)行的歷史記錄,方便用戶查看任務(wù)的執(zhí)行情況和結(jié)果。
- 任務(wù)日志:提供完整的任務(wù)日志,并支持存儲到H2、Mysql、Elasticsearch等多種數(shù)據(jù)庫中,方便用戶查詢和分析任務(wù)執(zhí)行的詳細(xì)信息。
- 任務(wù)運(yùn)行棧:詳細(xì)記錄任務(wù)執(zhí)行的棧信息,方便用戶排查任務(wù)執(zhí)行中的問題和錯誤。
2.6 警報(bào)和權(quán)限
Openjob提供警報(bào)和權(quán)限管理功能,包括以下內(nèi)容:
- 提供任務(wù)事件監(jiān)控警報(bào)、詳細(xì)的警報(bào)歷史記錄,并支持微信、飛書和Webhook觸發(fā)器通知。
- 設(shè)計(jì)有命名空間,支持按按鈕級別訪問控制,方便用戶對復(fù)雜項(xiàng)目進(jìn)行管理和維護(hù)。
2.7 多種語言
Openjob支持多種語言和框架,包括以下內(nèi)容:
- Java和其框架:原生支持。
- Go:支持使用go mod install命令來管理Go語言的依賴。
- PHP:支持使用Golang代理以shell模式執(zhí)行任務(wù),同時支持Swoole框架的composer install命令。
- Python支持使用Golang代理以shell模式執(zhí)行任務(wù),方便用戶使用Python語言編寫任務(wù)。
3 應(yīng)用場景
Openjob非常適用于具有任務(wù)調(diào)度和延遲任務(wù)的業(yè)務(wù)場景,例如每天清理數(shù)據(jù)和生成報(bào)告。它還適用于輕量級計(jì)算,通過Map/MapReduce可以方便地進(jìn)行大數(shù)據(jù)計(jì)算。對于復(fù)雜的任務(wù)流或工作流,Openjob也提供了相應(yīng)的UI設(shè)計(jì)工具,方便用戶進(jìn)行可視化的流程設(shè)計(jì)和管理。因此,Openjob是一個功能強(qiáng)大、靈活性高的分布式任務(wù)調(diào)度框架,適用于各種規(guī)模和類型的業(yè)務(wù)場景。