前言
Schedulerx2.0是阿裡中間件自研的基于Akka架構的新一代分布式任務排程平台,提供定時、任務編排、分布式跑批等功能,具有高可靠、海量任務、秒級排程等能力。
Schedulerx2.0在公有雲公測2年,服務超過1000家公司,積累了豐富的經驗,穩定性也得到了足夠的驗證。為了提供更優質的服務,于2021.9.1正式商業化,同時也會帶來更加強大的能力。
強大功能
定時排程
Crontab
- 支援可視化的crontab表達式
- 支援時間偏移,可以通過資料時間做跨天的業務
- 支援時區,可以做國際化的定時任務

Fixed rate
衆所周知,crontab必須被60整除,比如想每隔40分鐘跑一次,cron不支援。Fixed rate專門用來做定期輪詢,表達式簡單。

秒級别排程
通過second_delay表達式可以支援秒級别排程,适合不停執行的實時業務,業務不能中斷。

任務編排
schedulerx2.0支援工作流(DAG)進行任務編排,操作簡單,前端直拖拖拽拽即可。詳細的任務狀态圖能一目了然看到下遊任務為什麼沒跑,如下圖:

schedulerx2.0的工作流還支援上下遊資料傳遞
輕量級分布式程式設計模型
支援單機、廣播、分片、MapReduce多種分布式執行模型。
- 單機模型:業務多節點部署時,保證不重複執行。
- 廣播模型:所有節點都執行同一邏輯,全部執行完還可以由一台機器回調一次postProcess方法,常用在批量運維,批量清理日志、緩存。
- 分片模型:支援類似elastic-job的分片模型,常用在分庫分表的跑批。
- MapReduce模型:Schedulerx2.0自創的輕量級分布式程式設計模型,隻需要實作map和reduce方法,就可以将海量資料分布式到多台機器運作,相對于傳統大資料跑批:
-
- 成本低:直接複用線上應用的機器,不需要額外計算資源
- 速度快:不需要資料導入導出,直接跑批線上資料庫、oss等,可以作為實時業務的跑批
- 學習簡單:不需要大資料的知識,會java就行
- 可以處理負責的業務:線上業務處理往往邏輯很複雜,傳統大資料跑批sql無法滿足,使用java進階語言可以處理複雜邏輯,還可以直接複用業務接口。
多語言
除了java語言,schedulerx還支援多種語言的任務類型

其中http任務是serverless,不需要注冊用戶端就能執行。Schedulerx的http任務支援簽名認證,防止使用者的http接口被惡意攻擊。
豐富的任務運維能力
- 支援對堵塞任務的手動停止、逾時自動停止。
- 支援對失敗任務的原地重跑、标記成功。
- 支援重刷資料:通過資料時間+重刷資料,可以重刷曆史上的資料,把漏跑的任務重新執行。
商業化報警
- 報警通道支援短信、釘釘機器人、郵件

- 報警類型支援失敗報警、逾時報警、無可用機器報警等
- 每個任務都可以單獨配置報警聯系人,也可以使用應用的報警聯系人組
全新的權限體系
本次商業化帶來了全新的權限體系,支援阿裡雲RAM權限,支援讀寫等細粒度權限控制。
新增站點
本次商業化,新增了香港、新加坡、德國、美國、日本站點。
使用者有其他站點的需求,可以提工單給我們,我們會盡量滿足。
未來規劃
日志收集
收集用戶端的任務排程日志,甚至是應用日志,可以直接在控制台看到日志,分析任務失敗的原因。
彈性擴縮容
離線任務分布式跑批的時候,可以動态擴容機器加快處理速度。跑批結束,可以縮容,節省機器成本。
一次性任務
一個任務隻在未來某個時刻點執行一次,執行完自動銷毀。