VOL 134
12
2020-06
今天距2021年202天
這是ITester軟件測試小棧第134次推文
點擊上方藍字“ITester軟件測試小棧“關注我,每周一、三、五早上 07:30准時推送。
微信公眾號后台回復“資源”、“測試工具包”領取測試資源,回復“21天打卡”一起學習成長,打怪升級。
本文2657字,閱讀約需7分鍾
在系統需要運行大量耗時定時任務的場景下,單使用類似Quartz或者Spring Task等定時任務框架無法滿足對並發處理性能、監控管理及運維拓展的要求,以下,介紹公司使用過的分布式定時任務調度框架Saturn。
一
Saturn簡介
1
簡介
Saturn
任務調度系統是唯品會開源的一個分布式任務調度平台,取代傳統的Linux Cron/Spring Batch Job的方式,做到全域統一配置,統一監控,任務高可用以及分片並發處理,更重要的是其還支持容器化技術,同時Saturn中的任務不僅支持Java,還支持Shell腳本,目前Saturn已經在Github上開源。
2
架構
Saturn定時任務調度的最小單位是分片,即任務的一個並行執行單元。Saturn的基本任務就是將任務分成多個分片,並將每個分片通過算法調度到對應的Executor上去執行。
3
特性
支持多種語言作業,語言無關(Java/Go/C++/PHP/Python/Ruby/shell);
支持秒級調度;
支持作業分片並行執行;
支持依賴作業串行執行;
支持作業高可用和智能負載均衡;
支持異常檢測和自動失敗轉移;
支持多個集群部署;
支持彈性動態擴容;
支持優先級和權重設置;
支持docker容器,容器化友好;
支持cron時間表達式;
支持多個時間段暫停執行控制;
支持超時告警和超時強殺控制;
支持灰度發布;
支持異常、超時和無法高可用作業監控告警和簡易的故障排除;
支持失敗率最高、最活躍和負荷最重的各域各節點TOP10的作業統計;
4
專業術語
組織名
:每個namespace可以屬於一個組織。
作業
(Job)和作業分片
:作業(Job)是可以獨立運行的腳本(shell作業)或者具備某項功能的函數實現(java、消息作業)。作業可並發執行在多個執行節點(Executor)上,作業分片定義了作業並發執行的數量以及執行編號。
域
(Namespace):代表一組特定的執行結點和作業,作業必須而且只能屬於某一個特定的域。一個域下通常有若干個執行結點,執行結點必須而且只能屬於某一個特定的域。域下的全部執行結點功能是對等的,域下的任何一下執行結點均有能力執行域下的全部作業,換言之,作業可以在域下任何一個執行結點執行。
執行結點
(Executor):是調用並執行作業的程序,它通過定時(quartz)驅動來觸發調用事件,並最終調用作業的執行入口(shell腳本或者函數實現),執行結點只會處理指派給它的作業分片。
控制台
(Console):統一配置界面,可以使用控制台來查看作業狀態,執行結點狀態和執行日志,添加、刪除作業,修改作業屬性。
二
Saturn架構
1
原理
Saturn的基本原理是將作業在邏輯上划分為若干個作業分片,通過作業分片調度器將作業分片指派給特定的執行結點。執行結點通過quartz觸發執行作業的具體實現(以shell為例,則為shell腳本),在執行的時候,會將分片序號和參數作為參數傳入(見圖1)。作業的實現邏輯需分析分片序號和分片參數,並以此為依據來調用具體的實現(比如一個批量處理數據庫的作業,可以划分0號分片處理1-10號數據庫,1號分片處理11-20號數據庫)。
2
場景
有時候由於測試業務的需要,我們需要按照工作流的方式去調度作業:JobA調度成功后調度 JobB, JobB調度成功后調度 JobC。Saturn提供這個能力,我們稱之為作業編排。作業編排將作業形成一個有向無環圖,按照圖的順序依次調用。
3
組成
Saturn包括兩大部分,Saturn Console和Saturn Executor。
Saturn Console
是一個GUI,用於作業/Executor管理,統計報表展現,系統配置等功能。它是整個調度系統的大腦:將作業任務分配到各Executor。為了實現Console的高可用性。希望Console有多台服務器所組成,只需要在多台不同的服務器的環境變量中指定相同的VIP_SATURN_CONSOLE_CLUSTER即可,至於VIP_SATURN_CONSOLE_CLUSTER的值可以自行指定,只是一個集群標識而已。
Saturn Executor
是執行任務的Worker:按照作業配置的要求去執行部署於Executor所在容器或物理機當中的作業腳本和代碼。
今日問題:在電商項目中,你是如何進行壓力測試的?
(歡迎在下方留言區發表你的看法)
留言福利:
抽取截止至6月14日留言點贊最多的一位幸運er,可獲得:漫畫算法:小灰的算法之旅(Python篇)
(幸運er名單將在下周一推文的置頂留言處公布)
以上
That‘s all
更多系列文章
敬請期待
ITester軟件測試小棧
往期內容寵幸
2.Python接口自動化-接口基礎(二)
3.Python接口自動化-requests模塊之get請求
4.Python接口自動化-requests模塊之post請求
5.Python接口自動化之cookie、session應用
想獲取更多最新干貨內容
快來星標 置頂 關注我
每周一、三、五 07:30見
<< 滑動查看下一張圖片 >>
后台 回復"資源"取干貨
回復"21天打卡"一起打怪升級
測試交流Q群:727998947
點亮一下在看,你更好看