OhMyScheduler分布式調(diào)度平臺&計算框架
OhMyScheduler是基于Akka架構(gòu)的新一代分布式調(diào)度與計算框架,能讓您輕松完成作業(yè)的調(diào)度與繁雜任務(wù)的分布式計算。
項(xiàng)目介紹
產(chǎn)品特性
OhMyScheduler是基于Akka架構(gòu)的一款分布式調(diào)度與計算框架(對標(biāo) Alibaba SchedulerX2.0),其主要功能特性如下:
- 使用簡單:提供前端Web界面,允許開發(fā)者可視化地完成調(diào)度任務(wù)的管理(增、刪、改、查)、任務(wù)運(yùn)行狀態(tài)監(jiān)控和運(yùn)行日志查看等功能。
- 定時策略完善:支持CRON表達(dá)式、固定頻率、固定延遲和API四種定時調(diào)度策略。
- 執(zhí)行模式豐富:支持單機(jī)、廣播、Map、MapReduce四種執(zhí)行模式,其中Map/MapReduce處理器能使開發(fā)者寥寥數(shù)行代碼便獲得集群分布式計算的能力。
- 執(zhí)行器支持廣泛:支持Spring Bean、內(nèi)置/外置Java類、Shell、Python等處理器,應(yīng)用范圍廣。
- 運(yùn)維便捷:支持在線日志功能,執(zhí)行器產(chǎn)生的日志可以在前端控制臺頁面實(shí)時顯示,降低debug成本,極大地提高開發(fā)效率。
- 依賴精簡:最小僅依賴關(guān)系型數(shù)據(jù)庫(MySQL/Oracle/MS SQLServer...),擴(kuò)展依賴為MongoDB(用于存儲龐大的在線日志)。
- 高可用&高性能:調(diào)度服務(wù)器經(jīng)過精心設(shè)計,一改其他調(diào)度框架基于數(shù)據(jù)庫鎖的策略,實(shí)現(xiàn)了無鎖化調(diào)度。部署多個調(diào)度服務(wù)器可以同時實(shí)現(xiàn)高可用和性能的提升(支持無限的水平擴(kuò)展)。
- 故障轉(zhuǎn)移與恢復(fù):任務(wù)執(zhí)行失敗后,可根據(jù)配置的重試策略完成重試,只要執(zhí)行器集群有足夠的計算節(jié)點(diǎn),任務(wù)就能順利完成。
在線試用地址 試用應(yīng)用名稱:oms-agent-test
適用場景
- 有定時執(zhí)行需求的業(yè)務(wù)場景:如每天凌晨全量同步數(shù)據(jù)、生成業(yè)務(wù)報表等。
- 有需要全部機(jī)器一同執(zhí)行的業(yè)務(wù)場景:如使用廣播執(zhí)行模式清理集群日志。
- 有需要分布式處理的業(yè)務(wù)場景:比如需要更新一大批數(shù)據(jù),單機(jī)執(zhí)行耗時非常長,可以使用Map/MapReduce處理器完成任務(wù)的分發(fā),調(diào)動整個集群加速計算。
同類產(chǎn)品對比
| QuartZ | xxl-job | SchedulerX 2.0 | OhMyScheduler | |
| 定時類型 | CRON | CRON | CRON、固定頻率、固定延遲、OpenAPI | CRON、固定頻率、固定延遲、OpenAPI |
| 任務(wù)類型 | 內(nèi)置Java | 內(nèi)置Java、GLUE Java、Shell、Python等腳本 | 內(nèi)置Java、外置Java(FatJar)、Shell、Python等腳本 | 內(nèi)置Java、外置Java(容器)、Shell、Python等腳本 |
| 分布式任務(wù) | 無 | 靜態(tài)分片 | MapReduce動態(tài)分片 | MapReduce動態(tài)分片 |
| 在線任務(wù)治理 | 不支持 | 支持 | 支持 | 支持 |
| 日志白屏化 | 不支持 | 支持 | 不支持 | 支持 |
| 調(diào)度方式及性能 | 基于數(shù)據(jù)庫鎖,有性能瓶頸 | 基于數(shù)據(jù)庫鎖,有性能瓶頸 | 不詳 | 無鎖化設(shè)計,性能強(qiáng)勁無上限 |
| 報警監(jiān)控 | 無 | 郵件 | 短信 | 郵件,提供接口允許開發(fā)者擴(kuò)展 |
| 系統(tǒng)依賴 | MySQL | MySQL | 人民幣(公測期間免費(fèi),哎,幫打個廣告吧) | 任意Spring Data Jpa支持的關(guān)系型數(shù)據(jù)庫(MySQL、Oracle...) |
| DAG工作流 | 不支持 | 不支持 | 支持 | 支持 |
基本概念
本節(jié)將闡述本框架所涉及的專有名詞概念,幫助開發(fā)者更好的理解與使用框架。
分組概念:
- appName:應(yīng)用名稱,建議與用戶實(shí)際接入OhMyScheduler的應(yīng)用名稱保持一致,用于業(yè)務(wù)分組與隔離。
核心概念:
- 任務(wù)(Job):描述了需要被OhMyScheduler調(diào)度的任務(wù)信息,包括任務(wù)名稱、調(diào)度時間、處理器信息等。
- 任務(wù)實(shí)例(JobInstance,簡稱Instance):任務(wù)(Job)被調(diào)度執(zhí)行后會生成任務(wù)實(shí)例(Instance),任務(wù)實(shí)例記錄了任務(wù)的運(yùn)行時信息(任務(wù)與任務(wù)實(shí)例的關(guān)系類似于類與對象的關(guān)系)。
- 作業(yè)(Task):任務(wù)實(shí)例的執(zhí)行單元,一個JobInstance存在至少一個Task,具體規(guī)則如下:
-
- 單機(jī)任務(wù)(STANDALONE):一個JobInstance對應(yīng)一個Task
- 廣播任務(wù)(BROADCAST):一個JobInstance對應(yīng)N個Task,N為集群機(jī)器數(shù)量,即每一臺機(jī)器都會生成一個Task
- Map/MapReduce任務(wù):一個JobInstance對應(yīng)若干個Task,由開發(fā)者手動map產(chǎn)生
- 工作流(Workflow):由DAG(有向無環(huán)圖)描述的一組任務(wù)(Job),用于任務(wù)編排。
- 工作流實(shí)例(WorkflowInstance):工作流被調(diào)度執(zhí)行后會生成工作流實(shí)例,記錄了工作流的運(yùn)行時信息。
擴(kuò)展概念
- 容器:以Maven工程項(xiàng)目的維度組織一堆Java文件(開發(fā)者開發(fā)的眾多Java處理器),可以通過oms-server動態(tài)發(fā)布并被執(zhí)行器(worker)加載,具有極強(qiáng)的擴(kuò)展能力和靈活性。
- OpenAPI:允許開發(fā)者通過接口來完成手工的操作,讓系統(tǒng)整體變得更加靈活。開發(fā)者可以基于API便捷地擴(kuò)展OhMyScheduler原有的功能。
評論
圖片
表情
