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