根據你的需求,以下是一些基于 Akka 實現的分布式定時任務框架,以及相關的 GitHub 項目推薦:
1. Openjob
Openjob 是一個基于 Akka 架構的新一代分布式任務調度框架,支持多種定時任務、延時任務、工作流設計,采用無中心化架構,底層使用一致性分片算法,支持無限水平擴容。
-
特性:
-
高可靠:分布式無狀態設計,支持多樣的數據庫(H2/MySQL/PostgreSQL/Oracle/TiDB)。
-
高性能:底層使用一致性分片算法,全程無鎖化設計,任務調度精確到秒級別,支持輕量級分布式計算、無限水平擴容。
-
定時調度:支持分布式定時任務、固定頻率任務、高性能秒級任務、一次性任務定時調度。
-
分布式計算:支持單機、廣播、Map、MapReduce 和分片多種分布式編程模型,輕松實現大數據分布式計算。
-
延時任務:基于 Redis 實現高性能延時任務,底層實現任務多級存儲,提供豐富的統計和報表。
-
工作流:內置工作流調度引擎,支持可視化 DAG 設計,簡單高效實現復雜任務調度。
-
權限管理:完善的用戶管理,支持菜單、按鈕以及數據權限設置,靈活管理用戶權限。
-
報警監控:全面的監控指標,豐富及時的報警方式,便于運維人員快速定位和解決線上問題。
-
跨語言:原生支持 Java/Go/PHP/Python 多語言,以及 Spring Boot、Gin、Swoft 等框架集成。
-
-
GitHub 項目地址:Openjob GitHub 。
2. k-job
k-job 是一個基于 PowerJob 重寫和重構的分布式任務框架,支持定時任務、負載均衡和 OpenAPI 異步調用。
-
特性:
-
支持定時任務頻繁創建和任務參數頻繁動態變動的場景。
-
支持大量定時任務并發執行,實現負載均衡。
-
主要針對小型任務,無需過多配置,不對任務實例進行操作。
-
-
技術選型:
-
通信:gRPC(基于 Netty 的 NIO)。
-
序列化:Protobuf 編碼格式。
-
負載均衡:自實現的注冊中心 NameServer。
-
消息隊列:自實現的簡易消息隊列,支持異步發送、超時重試和多級延時隊列。
-
定時調度:時間輪算法。
-
-
GitHub 項目地址:k-job GitHub 。
3. Akka Quartz Scheduler
Akka Quartz Scheduler 是一個為 Akka 添加定時任務管理的工具,基于 Quartz 調度器實現。
-
特性:
-
結合 Akka 的 Actor 模型和 Quartz 的調度功能,實現定時任務的管理。
-
支持復雜的調度策略和任務持久化。
-
-
GitHub 項目地址:Akka Quartz Scheduler GitHub 。
4. ShedLock
雖然 ShedLock 不是基于 Akka 的,但它是一個輕量級的分布式鎖解決方案,可以與 Spring 的 @Scheduled
注解配合使用,確保分布式環境下的任務只被一個實例執行。
-
特性:
-
支持多種數據庫(如 MySQL、PostgreSQL 等)作為鎖存儲。
-
簡單易用,與 Spring 的
@Scheduled
注解無縫集成。 -
支持鎖的超時機制,防止任務執行時間過長導致的鎖無法釋放。
-
-
GitHub 項目地址:ShedLock GitHub 。
5. Elastic-Job
Elastic-Job 是一個分布式調度解決方案,基于 Quartz 和 Zookeeper 實現。
-
特性:
-
分布式調度協調、彈性擴容縮容、失效轉移、錯過執行作業重觸發等。
-
支持任務分片,確保同一分片在分布式環境中僅一個執行實例。
-
提供豐富的作業類型和運維平臺。
-
-
GitHub 項目地址:Elastic-Job GitHub 。
推薦
如果你正在尋找一個高性能、支持多種任務類型(包括定時任務、延時任務、工作流設計)的分布式任務調度框架,Openjob 是一個不錯的選擇。它基于 Akka 架構,支持無限水平擴容,提供了豐富的功能和良好的擴展性。