將本地的改動極速同步到遠程服務端,並自動生效,掌握此技能,開發調試會更高效 ### 歡迎訪問我的GitHub > 這裡分類和彙總了欣宸的全部原創(含配套源碼):[https://github.com/zq2599/blog_demos](https://github.com/zq2599/blog_ ...
什麼是 Openjob? Openjob 基於Akka架構的新一代分散式任務調度框架。支持多種定時任務、延時任務、工作流設計,採用無中心化架構,底層使用一致性分片演算法,支持無限水平擴容。
- 完善的任務日誌存儲,支持 H2/Mysql/oracle/Postgresql/Elasticsearch
- 任務運行堆棧功能可詳細記錄任務運行過程,幫助管理員快速排查問題
- 報警與許可權功能也極為重要,它提供任務事件監控報警,以及詳細的報警歷史記錄
- 管理員可以使用企業微信、飛書、webhook等渠道接收報警信息。
- 命名空間方式設計,支持按鈕級別許可權管理,輕鬆應對複雜的項目管理。
- 支持多種編程語言,如 Java,Go,PHP 和 Python,各個語言的支持度都非常友好。
- 普通定時任務,支持Unix Crontab 表達式。
- 秒級定時任務,適用於對實時性要求比較高的業務,例如執行間隔為3秒的定時調度任務。
- 固定頻率任務,Crontab 必須被 60 整除,不支持其它數量級時間間隔的任務,一般用於定期輪詢場景。
- 基於 Redis 實現高性能延時任務,一體化解決定時任務和延時任務,同時提供豐富的報表與統計。
- 單機,隨機選擇一臺機器完成任務執行。
- 廣播,應用所有機器同時執行且等待全部結束。
- Map模型,類似於 Hadoop 的Map。只需簡單實現一個Map方法,就可以將海量數據分佈到多台機器上執行。
- MapReduce模型,MapReduce模型是Map模型的擴展。所有子任務執行完成後執行Reduce方法,可以在Reduce方法中處理任務運行結果和數據。
- 靜態分片,類似Elastic-Job模型,控制台配置分片數,可以按照分片分配到不同的客戶端執行,支持多語言版本。
- 普通執行器,普通函數或類的方式執行任務
- HTTP,定時請求固定的地址。
- Shell,定時執行 shell 腳本
- 任務儀錶盤,豐富的任務統計和報表。
- 任務歷史執行記錄,任務執行歷史追溯。
- 任務運行日誌,完善的任務日誌存儲(H2/Mysql/Elasticsearch)
- 任務運行堆棧,詳細記錄任務運行堆棧信息。
- 提供任務事件監控報警,以及詳細的報警歷史,同時支持企業微信、飛書、webhook觸達通知。
- 命名空間方式設計,支持按鈕級別許可權管理,輕鬆應對複雜的項目管理。
- Java 及其衍生框架,原生支持。
- Go 支持 go mod 方式安裝依賴,以及常見框架整合(Gin)。
- PHP 支持通過 Golang agent 方式執行 PHP 任務。基於 Swoole 衍生框架(Swoft),支持 Composer 安裝依賴直接使用。
- Python 支持通過 Golang agent,方式執行 Python 任務。
項目 | Quartz | Elastic-Job | XXL-JOB | Openjob |
定時調度 | Cron | Cron | Cron |
|
延時任務 | 不支持 | 不支持 | 不支持 | 基於 Redis 實現分散式高性能延時任務,實現定時與延時一體化 |
任務編排 | 不支持 | 不支持 | 不支持 | 通過圖形化編排任務(workflow) |
分散式計算 | 不支持 | 靜態分片 | 廣播 |
|
多語言 | Java |
|
|
|
可視化 | 無 | 弱 |
|
|
可運維 | 無 | 啟用、禁用任務 |
|
|
報警監控 | 無 | 郵件 | 郵件 |
|
性能 | 每次調度通過DB搶鎖,對DB壓力大 | ZooKeeper是性能瓶頸 | 由Master節點調度,Master節點壓力大。 | 任務採用分片演算法,每個節點都可以調度,無性能瓶頸,支持無限水平擴展,支持海量任務調度。 |
[root@openjob ~]$ java -jar openjob-agent-java-xxx.jar -h Usage: Openjob-agent-java [-hV] [-s=<serverAddress>] [--worker-app-name=<workerAppName>] [--worker-heartbeat-fail-times=<heartbeatFailTimes>] [--worker-heartbeat-interval=<heartbeatInterval>] [--worker-host=<workerHost>] [--worker-port=<workerPort>] -h, --help Show this help message and exit. -s, --server-address=<serverAddress> Server address, default is `http://localhost:8080` -V, --version Print version information and exit. --worker-app-name=<workerAppName> Application name, default is `openjob` --worker-heartbeat-fail-times=<heartbeatFailTimes> Worker heartbeat fail times, default is `2` --worker-heartbeat-interval=<heartbeatInterval> Worker heartbeat interval, default is `5` --worker-host=<workerHost> Worker host, default is local IP --worker-port=<workerPort> Worker port, default is `25588`
新增
- [#agent] 新增 Agent
- [#137] 客戶端心跳異常退出
- [#137] unix 平臺終止 Kettle
- [#139] 任務實例狀態上報
- [#139] 延時實例狀態上報
- 線上體驗: https://demo.openjob.io
- openjob
- openjob.io
- QQ交流群: 849015265