ElasticJob分布式調(diào)度解決方案
ElasticJob 是面向互聯(lián)網(wǎng)生態(tài)和海量任務(wù)的分布式調(diào)度解決方案,由兩個(gè)相互獨(dú)立的子項(xiàng)目 ElasticJob-Lite 和 ElasticJob-Cloud 組成。 它通過彈性調(diào)度、資源管控、以及作業(yè)治理的功能,打造一個(gè)適用于互聯(lián)網(wǎng)場(chǎng)景的分布式調(diào)度解決方案,并通過開放的架構(gòu)設(shè)計(jì),提供多元化的作業(yè)生態(tài)。 它的各個(gè)產(chǎn)品使用統(tǒng)一的作業(yè) API,開發(fā)者僅需一次開發(fā),即可隨意部署。
ElasticJob 已于 2020 年 5 月 28 日成為 Apache ShardingSphere 的子項(xiàng)目。 歡迎通過郵件列表參與討論。
使用 ElasticJob 能夠讓開發(fā)工程師不再擔(dān)心任務(wù)的線性吞吐量提升等非功能需求,使他們能夠更加專注于面向業(yè)務(wù)編碼設(shè)計(jì); 同時(shí),它也能夠解放運(yùn)維工程師,使他們不必再擔(dān)心任務(wù)的可用性和相關(guān)管理需求,只通過輕松的增加服務(wù)節(jié)點(diǎn)即可達(dá)到自動(dòng)化運(yùn)維的目的。
ElasticJob-Lite
定位為輕量級(jí)無中心化解決方案,使用 jar 的形式提供分布式任務(wù)的協(xié)調(diào)服務(wù)。
Elastic-Job-Cloud
采用自研 Mesos Framework 的解決方案,額外提供資源治理、應(yīng)用分發(fā)以及進(jìn)程隔離等功能。
| ElasticJob-Lite | ElasticJob-Cloud | |
|---|---|---|
| 無中心化 | 是 | 否 |
| 資源分配 | 不支持 | 支持 |
| 作業(yè)模式 | 常駐 | 常駐 + 瞬時(shí) |
| 部署依賴 | ZooKeeper | ZooKeeper + Mesos |
功能列表
-
彈性調(diào)度
- 支持任務(wù)在分布式場(chǎng)景下的分片和高可用
- 能夠水平擴(kuò)展任務(wù)的吞吐量和執(zhí)行效率
- 任務(wù)處理能力隨資源配備彈性伸縮
-
資源分配
- 在適合的時(shí)間將適合的資源分配給任務(wù)并使其生效
- 相同任務(wù)聚合至相同的執(zhí)行器統(tǒng)一處理
- 動(dòng)態(tài)調(diào)配追加資源至新分配的任務(wù)
-
作業(yè)治理
- 失效轉(zhuǎn)移
- 錯(cuò)過作業(yè)重新執(zhí)行
- 自診斷修復(fù)
-
作業(yè)依賴(TODO)
- 基于有向無環(huán)圖(DAG)的作業(yè)間依賴
- 基于有向無環(huán)圖(DAG)的作業(yè)分片間依賴
-
作業(yè)開放生態(tài)
- 可擴(kuò)展的作業(yè)類型統(tǒng)一接口
- 豐富的作業(yè)類型庫,如數(shù)據(jù)流、腳本、HTTP、文件、大數(shù)據(jù)等
- 易于對(duì)接業(yè)務(wù)作業(yè),能夠與 Spring 依賴注入無縫整合
-
可視化管控端
- 作業(yè)管控端
- 作業(yè)執(zhí)行歷史數(shù)據(jù)追蹤
- 注冊(cè)中心管理
