阿里巴巴數(shù)據(jù)穩(wěn)定性治理實踐
一、阿里在數(shù)據(jù)穩(wěn)定性保障中遇到的問題
1、阿里大數(shù)據(jù)工作開展架構(gòu)
阿里大數(shù)據(jù)計算的離線數(shù)據(jù)處理部分,主要是基于MaxCompute引擎+DataWorks大數(shù)據(jù)開發(fā)治理平臺來完成日常的數(shù)據(jù)開發(fā)管理工作。平臺產(chǎn)品方在響應(yīng)數(shù)據(jù)研發(fā)、數(shù)據(jù)管理等團(tuán)隊的數(shù)據(jù)治理需求過程中,通過沉淀的相關(guān)規(guī)范和方法論,逐步積累落地到平臺產(chǎn)品模塊中,形成了完整的大數(shù)據(jù)開發(fā)治理鏈路。
阿里內(nèi)部通過這樣一套統(tǒng)一的大數(shù)據(jù)計算技術(shù)體系,來支撐不同的業(yè)務(wù)的發(fā)展和創(chuàng)新。從最早的淘寶、天貓電商業(yè)務(wù),到后續(xù)的優(yōu)酷、高德、菜鳥等板塊,業(yè)務(wù)的蓬勃發(fā)展,帶來了單日EB級的數(shù)據(jù)處理量,DataWorks上單日千萬級別的數(shù)據(jù)處理調(diào)度實例數(shù),以及高達(dá)50多種的復(fù)雜業(yè)務(wù)依賴關(guān)系。
高并發(fā)的數(shù)據(jù)任務(wù)背后,是上萬名平臺數(shù)據(jù)工作者,進(jìn)行日常的數(shù)據(jù)加工與運維管理分析,以滿足業(yè)務(wù)對于各種場景下的數(shù)據(jù)要求以及各類數(shù)據(jù)治理需求。
2、數(shù)據(jù)穩(wěn)定性問題的常見表現(xiàn)
通常業(yè)務(wù)方對于數(shù)據(jù)的基本要求為每天能夠準(zhǔn)時看到正確的數(shù)據(jù),越重視數(shù)據(jù)即時交互與用戶體驗的應(yīng)用場景,對于數(shù)據(jù)穩(wěn)定性的要求也越高。因此數(shù)據(jù)團(tuán)隊除了進(jìn)行本身的數(shù)據(jù)研發(fā)以外,最關(guān)鍵的問題是保障數(shù)據(jù)的穩(wěn)定產(chǎn)出。
面對如此大規(guī)模的數(shù)據(jù)處理任務(wù)、如此復(fù)雜的處理鏈路與層次結(jié)構(gòu),數(shù)據(jù)團(tuán)隊在穩(wěn)定性保障方面也面臨不小的壓力,數(shù)據(jù)運維機制應(yīng)運而生。最直接的方式是用人力來保障數(shù)據(jù)產(chǎn)出。針對數(shù)據(jù)問題,平臺提供了各類告警方式,比如通過短信、電話、郵件、釘釘?shù)瓤焖俚匕l(fā)送告警信息。
但在人力保障過程中,一方面,大量的離線處理在夜間執(zhí)行,出現(xiàn)問題后值班人員需要整夜盯盤和響應(yīng)異常;另一方面,問題處理可能需依賴上下游協(xié)調(diào),跨團(tuán)隊、跨業(yè)務(wù)的協(xié)作排查效率較低;有的還需等待集群計算資源,這導(dǎo)致值班工作變成辛苦、低效且耗時很長的過程。
同時,這種運維值班加單任務(wù)負(fù)責(zé)人問題響應(yīng)機制并沒有在本質(zhì)上解決數(shù)據(jù)穩(wěn)定性問題,數(shù)據(jù)產(chǎn)出失敗、產(chǎn)出延遲、數(shù)據(jù)異常等問題依然屢屢發(fā)生。這些問題通常由多種因素引起,有可能是代碼本身或配置錯誤,有可能是平臺資源的問題,也有可能是上游源頭側(cè)的級聯(lián)問題,甚至是人員誤操作、系統(tǒng)誤識別及誤報等問題。
以上圖中的真實案例為例,問題的解決也常常面臨著責(zé)任機制、優(yōu)先級分配、上下游協(xié)作機制等現(xiàn)實資源瓶頸問題,導(dǎo)致處理效果不佳。所引起的客戶投訴和資損故障,在不斷地提醒數(shù)倉團(tuán)隊重視數(shù)據(jù)穩(wěn)定性問題。
二、阿里數(shù)據(jù)穩(wěn)定性治理方案
1、數(shù)據(jù)穩(wěn)定性治理原則
實際上,數(shù)據(jù)穩(wěn)定性保障的問題根源在于人力資源及計算資源是有限的,大量的數(shù)據(jù)交互與人員交互又是不可避免的。為了解決復(fù)雜數(shù)據(jù)鏈路系統(tǒng)里的這些問題,數(shù)據(jù)團(tuán)隊在不斷地升級優(yōu)化數(shù)據(jù)穩(wěn)定性治理方案?;跀?shù)據(jù)是服務(wù)于業(yè)務(wù)的前提,結(jié)合業(yè)務(wù)方對于客戶的承諾,以及業(yè)務(wù)的優(yōu)先級來評估需要投入的運維力量,設(shè)置對應(yīng)的數(shù)據(jù)產(chǎn)出約定。
數(shù)據(jù)穩(wěn)定性治理的原則,即為,通過合理的人力協(xié)作及治理工作,高效保障業(yè)務(wù)所需的重點數(shù)據(jù),能及時、準(zhǔn)確產(chǎn)出,滿足數(shù)據(jù)對業(yè)務(wù)的約定。實現(xiàn)重要數(shù)據(jù)重點保障,嚴(yán)重問題優(yōu)先處理,故障機制掛鉤責(zé)任機制。
2、如何定義重點數(shù)據(jù)
首先要定義出重點數(shù)據(jù)。通過對業(yè)務(wù)部門的應(yīng)用進(jìn)行盤點,劃分應(yīng)用等級,數(shù)據(jù)資產(chǎn)的話也會根據(jù)其支撐的業(yè)務(wù)應(yīng)用去評定資產(chǎn)等級,高等級資產(chǎn)一般會配備高等級的穩(wěn)定性保障。有了這樣的級別標(biāo)簽之后,則可以建立配套的故障等級機制。一般來說,數(shù)據(jù)異常時長越久、資產(chǎn)等級越高,對應(yīng)的故障級別越高。故障會有對應(yīng)的責(zé)任團(tuán)隊去認(rèn)領(lǐng)、復(fù)盤,以及保障運維資源。
3、如何保障重點數(shù)據(jù)的及時性與準(zhǔn)確性
那么如何去保障數(shù)據(jù)重點數(shù)據(jù)的及時性和準(zhǔn)確性呢?以單點運維保障機制來講,建設(shè)初期的時候,數(shù)據(jù)節(jié)點少,數(shù)據(jù)鏈路少,可以通過責(zé)任人做監(jiān)控運維的方式,對每個節(jié)點進(jìn)行監(jiān)控。但是在數(shù)據(jù)鏈路復(fù)雜了之后,不同的角色都要對自己負(fù)責(zé)的單點任務(wù)或者單點表去進(jìn)行梳理和運維,導(dǎo)致在配置單點監(jiān)控告警時,配置邏輯繁雜,且基于人肉識別的方式難以準(zhǔn)確地完成監(jiān)控運維保障。傳統(tǒng)的單任務(wù)監(jiān)控機制只適用于小規(guī)模團(tuán)隊的監(jiān)控配置。
真正面向于應(yīng)用去做對應(yīng)的監(jiān)控配置時,穩(wěn)定性治理方案的最大轉(zhuǎn)變,其實就是把單任務(wù)監(jiān)控轉(zhuǎn)為全鏈路的基線監(jiān)控。按照業(yè)務(wù)優(yōu)先級,結(jié)合全鏈路數(shù)據(jù)血緣梳理出與最終產(chǎn)出節(jié)點相關(guān)聯(lián)的數(shù)據(jù)任務(wù)節(jié)點。如上圖示例,圖中的K節(jié)點和L節(jié)點為分別給到不同業(yè)務(wù)方的產(chǎn)出節(jié)點,通過血緣可以梳理出數(shù)據(jù)工作流。對應(yīng)的監(jiān)控,只需要在 DataWorks里面配置我們稱之為基線監(jiān)控的兩條鏈路就可以?;€針對核心應(yīng)用對應(yīng)的任務(wù)組,包括產(chǎn)出的上下游所有節(jié)點。通過基線能提高對業(yè)務(wù)或產(chǎn)品整體運行情況的認(rèn)知,并前瞻性的予以優(yōu)化以保障其穩(wěn)定。
基線鏈路信息中包含了產(chǎn)出時間要求、告警余量、報警方式、接收人等。系統(tǒng)就會根據(jù)基線鏈路設(shè)定的基線優(yōu)先級,識別穩(wěn)定性保障重要程度,分配計算資源與調(diào)度資源。
基線可保障核心任務(wù)資源穩(wěn)定。按照優(yōu)先級為核心數(shù)據(jù)產(chǎn)出進(jìn)行重要性分級,高優(yōu)先級任務(wù)會獲得更多的調(diào)度與計算資源。平臺每隔30秒會識別目前的資源情況,進(jìn)行資源向重點任務(wù)傾斜與自動調(diào)整,減輕相關(guān)責(zé)任人的告警處理工作量。那如果在系統(tǒng)自動調(diào)整的情況下,基線任務(wù)還是沒有辦法按時產(chǎn)出,則會通知到當(dāng)日的值班人員,提前干預(yù)延遲任務(wù)來保障最終的基線不會破線引起故障。
在穩(wěn)定性治理方案中,除了對數(shù)據(jù)及時性的保障,還需要對數(shù)據(jù)準(zhǔn)確性進(jìn)行治理?;谝酝?jīng)驗,數(shù)據(jù)準(zhǔn)確性的問題,大概40%來自于數(shù)據(jù)源頭方的變動和一些數(shù)據(jù)質(zhì)量問題,因此數(shù)據(jù)鏈路源頭側(cè)的業(yè)務(wù)數(shù)據(jù)也應(yīng)引入到整體的保障機制里。通過DataWorks數(shù)據(jù)質(zhì)量規(guī)則保障重點數(shù)據(jù)的準(zhǔn)確性,在數(shù)據(jù)引入層設(shè)置好對應(yīng)的監(jiān)控數(shù)據(jù)穩(wěn)定性相關(guān)的質(zhì)量規(guī)則,如果出現(xiàn)了問題,則通過數(shù)據(jù)質(zhì)量的強規(guī)則機制提前去阻斷任務(wù),讓基線監(jiān)控告警提前暴露出風(fēng)險。
4、如何實現(xiàn)合理的團(tuán)隊協(xié)同
基于數(shù)據(jù)穩(wěn)定性治理研發(fā)協(xié)作流程,穩(wěn)定性治理團(tuán)隊基于基線協(xié)調(diào)各環(huán)節(jié)保障。在研發(fā)過程中,數(shù)據(jù)研發(fā)和數(shù)據(jù)測試需要對數(shù)據(jù)的穩(wěn)定性進(jìn)行事前保障,研發(fā)類角色與運維類角色進(jìn)行事中監(jiān)控,事后再與質(zhì)量團(tuán)隊協(xié)同進(jìn)行問題的復(fù)盤,共同建立各角色、各流程中有共識的數(shù)據(jù)穩(wěn)定性保障規(guī)則。
同時需完善角色設(shè)置與責(zé)任認(rèn)定機制。設(shè)置基線評審委員會和基線評審小組來確定基線的合理性,評審基線的等級是否合理;設(shè)置基線負(fù)責(zé)人角色,作為基線的第一責(zé)任人,進(jìn)行基線的整體管理,關(guān)注基線的風(fēng)險,推動任務(wù)責(zé)任人與質(zhì)量負(fù)責(zé)人以及平臺的資源運維方去評估風(fēng)險,解決問題;設(shè)置任務(wù)負(fù)責(zé)人角色,了解運維保障的機制和規(guī)范,保障任務(wù)問題能夠及時響應(yīng)和處理;基線保障的業(yè)務(wù)方負(fù)責(zé)人,需為業(yè)務(wù)訴求的合理性做背書,輔助基線負(fù)責(zé)人推動基線優(yōu)化落地;計算平臺側(cè)負(fù)責(zé)人,則需要關(guān)注資源情況是否符合基線的穩(wěn)定性要求,執(zhí)行應(yīng)急運維的操作,如資源的擴(kuò)容、優(yōu)先級調(diào)整等。
三、阿里數(shù)據(jù)穩(wěn)定性治理實踐
基于DataWorks的常見分析和處理手段,最直接的產(chǎn)品工具界面其實就是基線下鏈路運行的甘特圖。甘特圖展現(xiàn)了節(jié)點任務(wù)的先后順序,每個單點任務(wù)的實際運行時間和預(yù)估運行時間、預(yù)警時間與破線時間?;诨€運維的告警一般分為兩類,一是執(zhí)行之前的提前預(yù)警,二是執(zhí)行之后的即時告警。通過甘特圖可對影響產(chǎn)出的超長任務(wù)、調(diào)度依賴配置錯誤、單點運行失敗、全鏈路運行緩慢等問題進(jìn)行識別與預(yù)警。下面是幾個實例。
上圖是一個超長任務(wù)的例子,在基線實例已經(jīng)生成,但還未運行前,就對破線風(fēng)險進(jìn)行了預(yù)警。
上圖是一個調(diào)度依賴配置錯誤的例子。
上圖是實際運行中的排查,一個單點運行失敗的例子。如果在歷史產(chǎn)出時間節(jié)點前還沒有處理好,就會有一些應(yīng)急手段來保證數(shù)據(jù)產(chǎn)出。
上圖反應(yīng)的是全鏈路的運行變慢,但沒有特別突出的問題,通常是集群資源不足導(dǎo)致的,需要及時進(jìn)行資源優(yōu)化和擴(kuò)容操作。
基線應(yīng)用團(tuán)隊總結(jié)歸納了實際運維中的常用應(yīng)急操作,比如停止任務(wù)、重跑、續(xù)跑、解除依賴、置成功等操作。
針對上游業(yè)務(wù)、數(shù)倉流程和平臺引擎在日常的基線告警治理過程中出現(xiàn)的問題,進(jìn)行了梳理和分類,找到問題根因和對應(yīng)的優(yōu)化方式,形成了《故障處理手冊》。
評估穩(wěn)定性治理的效果,兩個核心指標(biāo)就是基線的破線率和運維人員的起夜率。若破線率和起夜率在逐步下降,或者穩(wěn)定在很低值的時候,則可以說明數(shù)據(jù)穩(wěn)定性是做得較好的。
以內(nèi)部某數(shù)倉團(tuán)隊為例,經(jīng)過穩(wěn)定性治理后,破線率和起夜率都大幅下降。整體數(shù)據(jù)運維和研發(fā)的效率都有了大幅提升,這就是穩(wěn)定性治理的意義所在。
四、事前穩(wěn)定性治理探索
穩(wěn)定性問題更重要的是能在事前就進(jìn)行預(yù)防和消除。治理工作在數(shù)據(jù)研發(fā)的全鏈路中,將實踐中沉淀下來的主動化治理手段融入到各個環(huán)節(jié)中去,構(gòu)建主動規(guī)范建模、主動規(guī)范校驗、自動質(zhì)量監(jiān)控等治理策略。
事前的主動規(guī)范數(shù)據(jù)建模,需要在數(shù)據(jù)建模系統(tǒng)中,先設(shè)定數(shù)據(jù)標(biāo)準(zhǔn),形成模型評審機制,明確數(shù)據(jù)指標(biāo)對應(yīng)的標(biāo)準(zhǔn)規(guī)范、口徑與質(zhì)量要求。
有了明確的標(biāo)準(zhǔn)要求后,可基于DataWorks數(shù)據(jù)治理中心內(nèi)置檢查項,對于治理問題的新增引入進(jìn)行自動預(yù)防攔截,提升事前問題攔截率。
數(shù)據(jù)穩(wěn)定性治理的目標(biāo)為打造主動式,可量化、可持續(xù)的全鏈路數(shù)據(jù)治理。將DataWorks的數(shù)據(jù)治理融入開發(fā)流程,拋棄“先開發(fā)后治理”的模式,保障DataWorks的數(shù)據(jù)治理成效可量化、可持續(xù)運營,避免“應(yīng)對式治理”。
我們也已將穩(wěn)定性治理的經(jīng)驗提供給了阿里云上的用戶來使用,歡迎大家來參與DataWorks相關(guān)的試用活動,希望能幫助更多企業(yè)找到更好的可落地的數(shù)據(jù)治理方案。