阿里新一代分布式任务调度平台Schedulerx2.0破土而出
1. 產品簡介
Schedulerx2.0是阿里中間件自研的基于Akka架構的新一代分布式任務調度平臺,提供定時、任務編排、分布式跑批等功能。使用Schedulerx2.0,您可以在控制臺配置管理您的定時任務,查詢歷史執行記錄,查看運行日志。借助Schedulerx2.0,您還可以通過工作流進行任務編排和數據傳遞。Schedulerx2.0還提供了簡單易用的分布式編程模型,簡單幾行代碼就可以將海量數據分布式到多臺機器上執行。
Schedulerx2.0提供了任務調度與執行的一整套解決方案,在阿里巴巴集團內部廣泛使用并久經考驗,具有高可靠、海量任務、秒級別調度等能力。
上線時間:2019-04-30
釘釘群號:23103656
2. 背景
Schedulerx2.0是Schedulerx1.0(DTS)的下一代產品,采用全新的架構,是全新自研的下一代分布式任務調度平臺,不但解決了老產品的性能瓶頸,還提供了更多更快更強的能力。
- 更多:支持多種時間表達式,任務編排,支持更多的業務場景。單集群支持上千萬任務,一天上十億次調度,支持更多的任務數。
- 更快:支持秒級別調度,處理準實時業務。
- 更強:支持日志查詢、原地重跑、重刷數據等多種操作,提供更強的運維能力和排錯手段,解決為什么沒跑,為什么失敗,為什么跑得慢等問題。
3. 功能
3.1 強大的定時調度器
3.1.1 Crontab
支持unix crontab表達式,不支持秒級別。
3.1.2 Fixed rate
眾所周知,crontab必須被60整除,比如想每隔40分鐘跑一次,cron不支持。Fixed rate專門用來做定期輪詢,表達式簡單,不支持秒級別。
3.1.3 Fixed delay
適合對實時性要求比較高的業務,比如每次執行完成隔10秒再跑,那么second delay非常適合你。并且second delay能支持到秒級別。
3.1.4 日歷
支持多種日歷,還可以自定義導入日歷。比如金融業務需要在每個交易日執行。
3.1.5 時區
跨國的業務,需要在每個國家的時區定時執行某個任務。
3.2 任務編排
支持工作流(DAG)進行任務編排,操作簡單,前端直接單手操作拖拖拽拽即可。詳細的任務狀態圖能一目了然看到下游任務為什么沒跑。
3.3 任務類型
支持多種任務類型,可以無限擴展。
- java:可以跑在用戶進程中,也可以上傳jar包動態加載。
- shell:前端直接寫shell腳本。
- python:前端直接寫python腳本,需要機器有python環境。
- go:前端直接寫go腳本,需要機器有go環境。
- 自定義:用戶甚至可以自定義任務類型,然后實現一個plugin就行了。
3.4 執行方式&分布式編程模型
3.4.1 執行方式
- 單機:隨機挑選一臺機器執行
- 廣播:所有機器同時執行且等待全部結束
- 并行計算:map/mapreduce模型,1~300個子任務,有子任務列表。
- 內存網格:map/mapreduce模型,10W以下子任務,無子任務列表,基于內存計算,比網格計算快。
- 網格計算:map/mapreduce模型,100W以下子任務,無子任務列表,基于文件H2計算。
3.4.2 分布式編程模型
- Map模型:類似于hadoop mapreduce里的map。只要實現一個map方法,簡單幾行代碼就可以將海量數據分布式到客戶自己的多臺機器上執行,進行跑批。
- MapReduce模型:MapReduce模型是Map模型的擴展,新增reduce接口,所有子任務完成后會執行reduce方法,可以在reduce方法中返回該任務實例的執行結果,或者回調業務。
3.5 強大的運維能力
- 數據大盤:控制臺提供了執行記錄大盤和執行列表,可以看到每個任務的執行歷史,并提供操作。
- 查看日志:每條執行記錄,都可以詳情中的日志頁面實時看到日志。如果任務運行失敗了,前端直接就能看到錯誤日志,非常方便。
- 原地重跑:任務失敗,修改完代碼發布后,可以點擊原地重跑。
- 標記成功:任務失敗,如果后臺把數據處理正確了,重跑又需要好幾個小時,直接標記成功就好了。
- Kill:實現JobProcessor的kill()接口,你就可以在前端kill正在運行的任務,甚至子任務。
3.6 數據時間
Schedulerx2.0可以處理有數據狀態的任務。創建任務的時候可以填數據偏移。比如一個任務是每天00:30運行,但是實際上要處理上一天的數據,就可以向前偏移一個小時。運行時間不變,執行的時候通過context.getDataTime()獲得的就是前一天23:30。
3.7 重刷數據
既然任務具有了數據時間,一定少不了重刷數據。比如一個任務/工作流最終產生一個報表,但是業務發生變更(新增一個字段),或者發現上一個月的數據都有錯誤,那么就需要重刷過去一個月的數據。
通過重刷數據功能,可以重刷某些任務/工作流的數據(只支持天級別),每個實例都是不同的數據時間。
3.8 失敗自動重試
- 實例失敗自動重試:在任務管理的高級配置中,可以配置實例失敗重試次數和重試間隔,比如重試3次,每次間隔30秒。如果重試3次仍舊失敗,該實例狀態才會變為失敗,并發送報警。
- 子任務失敗自動重試:如果是分布式任務(并行計算/內網網格/網格計算),子任務也支持失敗自動重試和重試間隔,同樣可以通過任務管理的高級配置進行配置。
3.9 支持原生Spring
之前的老產品Schedulerx1.0(DTS)和spring的結合非常暴力,對bean的命名有強要求,經常遇到注入失敗的問題。Schedulerx2.0支持原生spring語法,接入更加的方便。
3.10 報警監控
- 失敗報警
- 超時報警
- 報警方式:短信
原文鏈接
本文為云棲社區原創內容,未經允許不得轉載。
總結
以上是生活随笔為你收集整理的阿里新一代分布式任务调度平台Schedulerx2.0破土而出的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 阿里云李刚:下一代低延时的直播CDN
- 下一篇: 蚂蚁金服开源 SOFAJRaft:生产级