(資料圖)
1 什么是OpenjobOpenjob是一種基于Akka的新分布式任務(wù)調(diào)度框架。支持多種cronjob、延遲任務(wù)和工作流,使用一致性分片算法,具備無限的水平擴展。
2 特性Openjob不僅支持基本的cronjob,還支持延遲任務(wù)、分布式計算和工作流。
2.1 CronjobOpenjob支持Cronjob任務(wù)調(diào)度,具備以下特點:
支持Unix Crontab表達式秒級別,執(zhí)行周期小于60秒固定頻率,以分鐘為單位執(zhí)行任務(wù)2.2 延遲任務(wù)Openjob支持基于Redis的分布式高性能延遲任務(wù),并提供豐富的報告和統(tǒng)計信息,這種延遲任務(wù)能夠保證高效、可靠地執(zhí)行。
2.3 分布式計算Openjob支持分布式計算,可實現(xiàn)以下功能:
獨立執(zhí)行:任務(wù)可在工作客戶端上獨立執(zhí)行。廣播執(zhí)行:任務(wù)可在所有工作客戶端上廣播執(zhí)行。映射執(zhí)行:映射函數(shù)可以將大數(shù)據(jù)分發(fā)到多臺機器上執(zhí)行,類似于Hadoop mapMapReduce:MapReduce是Map的擴展。在所有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)計和報告功能,方便用戶對任務(wù)執(zhí)行情況進行實時監(jiān)控和分析。任務(wù)歷史記錄:記錄任務(wù)執(zhí)行的歷史記錄,方便用戶查看任務(wù)的執(zhí)行情況和結(jié)果。任務(wù)日志:提供完整的任務(wù)日志,并支持存儲到H2、Mysql、Elasticsearch等多種數(shù)據(jù)庫中,方便用戶查詢和分析任務(wù)執(zhí)行的詳細信息。任務(wù)運行棧:詳細記錄任務(wù)執(zhí)行的棧信息,方便用戶排查任務(wù)執(zhí)行中的問題和錯誤。2.6 警報和權(quán)限Openjob提供警報和權(quán)限管理功能,包括以下內(nèi)容:
提供任務(wù)事件監(jiān)控警報、詳細的警報歷史記錄,并支持微信、飛書和Webhook觸發(fā)器通知。設(shè)計有命名空間,支持按按鈕級別訪問控制,方便用戶對復(fù)雜項目進行管理和維護。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ù)和生成報告。它還適用于輕量級計算,通過Map/MapReduce可以方便地進行大數(shù)據(jù)計算。對于復(fù)雜的任務(wù)流或工作流,Openjob也提供了相應(yīng)的UI設(shè)計工具,方便用戶進行可視化的流程設(shè)計和管理。因此,Openjob是一個功能強大、靈活性高的分布式任務(wù)調(diào)度框架,適用于各種規(guī)模和類型的業(yè)務(wù)場景。