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