Serverless 應用引擎 SAE(Serverless App Engine)支持Spring Task低改造遷移,您無需修改任何代碼和配置,即可將Spring Task部署至SAE Job。本文介紹如何將Spring Task部署至SAE。
背景信息
SAE Job以任務為中心,當前聚焦支持單機廣播、并行分片模型的任務,同時支持事件驅動、并發策略和超時重試等特性,提供低成本、多規格、高彈性的資源實例來滿足短時任務的執行。
借助Spring Task,您可以通過注解快速實現對指定方法的周期性執行,支持多種周期性策略。Spring Task在使用過程中存在以下痛點:
默認為單線程執行,若前一個任務執行時間較長會導致后續任務阻塞,需要您自行配置線程池。
各個節點獨立運行,存在單點風險,無分布式協調機制,需要考慮禁止并發執行。
隨著定時任務規模增多,無統一視角對其進行任務進度的追蹤和管控,難以維護。
功能過于簡單,沒有超時、重試和阻塞等任務高級特性。
可觀測能力差,問題排查定位困難。
任務常駐,當無任務執行時造成不必要的資源成本浪費。
在Spring Task低改造遷移的過程中,您只需聚焦任務代碼和簡單配置,比如任務模板、并發重試等,由SAE負責無侵入地進行任務調度和管控。
將Spring Task部署到SAE將解決上述痛點,并提供降本提效的核心價值。具體體現如下。
降本:如果采用原有的Spring Task,為了保持其高可用,至少需N*ECS的常駐費用;而部署到SAE上,則只需要為其任務執行具體業務邏輯所消耗的CPU與內存付費,即SAE實際的資源消耗量。
提效:SAE提供了全托管面運維的體驗,降低了整體運維復雜度,提升了應用可用性。
操作步驟
在SAE控制臺左側導航欄,單擊任務模板列表,在頂部菜單欄選擇地域。
在任務模板列表頁面,單擊創建任務模板。
在任務基本信息配置向導頁面,配置模板名稱、網絡與內存等信息,單擊下一步:部署配置。
在部署配置配置向導頁面,配置相關信息,單擊下一步:任務設置。
按需選擇技術棧語言和任務部署方式,并配置相關信息。
在環境變量設置區域,標識任務需執行的Handler和參數。
參數示例值說明如下:
類型
變量名稱
變量值/變量引用
說明
自定義
JOB_TYPE
springtask
框架類型為Spring Task。
EXECUTOR_NAME
demoTest
@Scheduled所標識的方法名。
在日志收集服務區域,打開開通日志收集到SLS日志服務功能開關,并配置相關信息。更多信息,請參見日志管理。
在任務設置配置向導頁面,配置相關信息,單擊下一步:確認規格。
在任務基本設置區域,設置定時規則與并發實例數。
展開任務高級設置區域,打開啟用任務分片開關。
可選:單擊編輯任務分片名稱,在編輯任務分片名稱面板,修改分片名前綴與分片名稱,單擊關閉圖標。
在確認規格配置向導頁面,確認信息并單擊確認創建。
任務創建成功后,會自動跳轉至任務模板詳情頁面。
復制任務
如果要創建新的任務模板,您可以基于現有的任務模板,使用復制功能快速創建任務模板,只需修改差異化配置。若與已創建的任務使用相同的部署包,可在選擇部署包時選擇引用部署包,這樣新的任務模板將與被引用任務共用同一部署包,做到只需一次部署即可同步更新。
在任務模板列表頁面,單擊目標任務模板操作列的復制。
在任務基本信息配置向導頁面,按需修改配置,單擊下一步:部署配置。
在部署配置配置向導頁面,配置相關信息,單擊下一步:任務設置。
本示例僅列舉關鍵步驟,以部署Java語言的JAR包為例,其他語言操作類似。
技術棧語言選擇Java,任務部署方式選擇JAR包部署。
在配置JAR包區域,文件上傳方式選擇引用其他任務模板JAR包,引用任務模板選擇已創建的任務模板名稱。
在任務設置配置向導頁面,單擊下一步:確認規格。
在確認規格配置向導頁面,單擊確認創建。
查看任務詳情
在任務模板詳情頁面,單擊手動執行任務,然后在任務記錄頁面,單擊目標任務ID進入任務詳情頁面。
任務執行過程中,您可以查看實例的運行狀態,來判斷任務是否成功運行。您還可以單擊實時日志,查看目標實例的標準輸出日志。更多信息,請參見日志管理。