批量運維實踐與思考
一、批量定義及常見故障場景
批量(Batch)通常指信息系統(tǒng)中對數(shù)據(jù)、文件或其他對象進行一系列周期性的計算加工或處理。在信息系統(tǒng)中,尤其是金融行業(yè)中,批量在業(yè)務(wù)處理流程中有著不可或缺的作用。每日的賬務(wù)計算、指標統(tǒng)計、數(shù)據(jù)同步、文件清理等各式各樣的業(yè)務(wù)流程均可由批量任務(wù)實現(xiàn)。
在信息系統(tǒng)運營過程中,批量故障的現(xiàn)象屢見不鮮。常見的批量異常現(xiàn)象包括:批量執(zhí)行時間超時、批量執(zhí)行或返回結(jié)果異常等。根據(jù)批量的功能區(qū)分,批量故障的影響輕則為文件清理失敗、備份失敗等技術(shù)類故障,這些異常場景的影響和風(fēng)險相對可控。但如果故障批量涉及賬務(wù)處理、重要業(yè)務(wù)名單加工、關(guān)鍵交互文件或報送數(shù)據(jù)生成,相關(guān)批量的“延”和“誤”則可對系統(tǒng)的運行甚至企業(yè)的經(jīng)營造成巨大的風(fēng)險。為保持信息系統(tǒng)的業(yè)務(wù)順利開展,在實際生產(chǎn)運行中,部分批處理任務(wù)的故障處置既要具備高時效性,又要保證處理結(jié)果的準確性。批量故障的場景千變?nèi)f化,一些常見的批量處置思路沉淀有利于我們對批量故障預(yù)案編寫及處置效率的提升。本文通過一些批量處理經(jīng)驗分享,與各位探討如何快、準、穩(wěn)地發(fā)現(xiàn)并處理批量故障。
二、批量標準化處置三板斧
對于運維人員,“重啟、切換、隔離”是常見故障的標準化處置動作,然而這些處置動作對于批處理異常場景適用度有限。結(jié)合批量運行特征,針對于批量常見的故障,在結(jié)合業(yè)務(wù)影響評估和適當控制風(fēng)險,批量標準化處置動作可以歸納為的“重試、跳過、延時”。
1.批量重試
批量重試主要適用于批量執(zhí)行先決條件不具備;批量執(zhí)行過程中因相關(guān)組件、數(shù)據(jù)庫等基礎(chǔ)軟件或設(shè)施服務(wù)異常而中途中斷;批處理邏輯及處理場景異常導(dǎo)致中途退出。運維人員在完成相關(guān)的依賴檢查或相關(guān)組件狀態(tài)檢查,并按需修改相關(guān)的配置或邏輯后,可對批量進行重試處置。在重試前,運維人員需格外關(guān)注批量重新執(zhí)行是否會造成賬務(wù)金額或數(shù)據(jù)錯亂,以免造成批處理結(jié)果的異常。
2.批量跳過
批量跳過一般是指在批處理遇到故障或異常時,運維人員評估批量略過對本系統(tǒng)及下游影響可控而選擇摒棄批量中未執(zhí)行的步驟。常見的例如文件清理、無下游使用的數(shù)據(jù)同步或狀態(tài)檢查等批量報錯可在評估后選擇跳過方式進行處置。在進行批量跳過前,運維人員需對批量任務(wù)的功能和下游關(guān)聯(lián)影響審慎評估,以免因略過相關(guān)批量而產(chǎn)生空加工文件或異常中間結(jié)果集,并對下游關(guān)聯(lián)業(yè)務(wù)系統(tǒng)產(chǎn)生二次影響。
3.批量延時
延時主要適用于批量超時的故障場景,此場景多見于批量前置條件延遲具備,或系統(tǒng)運行容量或性能不足導(dǎo)致批處理時長超過預(yù)期。在評估相關(guān)的執(zhí)行時長并檢查上游依賴條件后,運維人員可根據(jù)執(zhí)行時長預(yù)估批量完成所需時間,并進行相關(guān)的延時處置。同時,在延時后運維人員需持續(xù)關(guān)注批量運行狀態(tài),確保在處置后執(zhí)行完成。
三、批量監(jiān)控思路
完善的批量監(jiān)控策略有利于運維人員及時發(fā)現(xiàn)生產(chǎn)系統(tǒng)的異常,并迅速定位分析和處置。批量監(jiān)控覆蓋的廣度、深度及監(jiān)控策略的有效性、完善性將影響著運維人員對于批量運行的洞察及掌控。
1.批量全生命周期監(jiān)控覆蓋
從批量監(jiān)控廣度考慮,完善的批量監(jiān)控需覆蓋批量運行的全生命周期。在批量運行前,需根據(jù)跑批條件(依賴文件或前置任務(wù))是否具備,相關(guān)前置條件的合法性及正確性等信息進行監(jiān)控檢查,并對批量如期是否調(diào)起增加探查。在批量運行過程中,需對批量的運行時長、運行效率進行階段性檢查監(jiān)控,以及時發(fā)現(xiàn)批量超時、夯死或異常波動等異常場景。在批量運行結(jié)束后,批量腳本的執(zhí)行返回值、批量產(chǎn)生文件的正確性等輸出結(jié)果需被設(shè)定為監(jiān)控指標,以保證批量運行后的產(chǎn)出符合預(yù)期。
2.監(jiān)控策略穿透性下鉆
在監(jiān)控縱深角度,批量運行監(jiān)控需穿透批量的運行時長、腳本返回碼等表象,下鉆至腳本執(zhí)行日志、數(shù)據(jù)庫、操作系統(tǒng)資源層面,從而在批量異常場景下,有力地發(fā)現(xiàn)最接近故障根源的直接問題點,從而提升排查和處置效率,加快整體故障處置時效。例如“主鍵重復(fù)”或“數(shù)據(jù)庫空間不足”等更詳細更深層的直接報錯原因,要比“批量返回值不為0”這類批量運行表象的報錯信息更有利于運維人員定位根因并快速處置。
3.批量監(jiān)控設(shè)計導(dǎo)向
隨著信息系統(tǒng)與業(yè)務(wù)融合的不斷加深,傳統(tǒng)的運維監(jiān)控已無法滿足愈發(fā)豐富的運營異常感知要求。在批量監(jiān)控設(shè)置導(dǎo)向方面,我們應(yīng)從監(jiān)控設(shè)計方面做出進一步的積極應(yīng)對。
監(jiān)控視角方面,從技術(shù)視角到業(yè)務(wù)視角:除腳本執(zhí)行結(jié)果返回值、系統(tǒng)資源、執(zhí)行計劃等技術(shù)層面監(jiān)控外,批量加工結(jié)果的準確性、賬務(wù)處理批量的金額及交易筆數(shù),或加工結(jié)果明細的條數(shù)、統(tǒng)計經(jīng)營指標的異常波動也應(yīng)納入批量監(jiān)控范疇。
監(jiān)控場景方面也需要補充:在傳統(tǒng)的監(jiān)控中,我們更多關(guān)注批量執(zhí)行失敗、批量超時等場景,這些現(xiàn)象往往直接意味著信息系統(tǒng)的運行故障。然而在實際的生產(chǎn)運行中,運行風(fēng)險和隱患也可能在一些過度良好的運行現(xiàn)象中初現(xiàn)端倪。批量執(zhí)行過快、交易量筆數(shù)過多、交易金額過大等場景也可能預(yù)示著系統(tǒng)存在相關(guān)運行異常或運行風(fēng)險。
監(jiān)控目的方面,從發(fā)現(xiàn)故障轉(zhuǎn)化為發(fā)現(xiàn)運行波動:批量功能及運行場景錯綜復(fù)雜,開發(fā)及運維人員難以在故障發(fā)生前窮舉所有批量異常場景,并事先增加對應(yīng)的監(jiān)控項。在此背景下,我們應(yīng)建立相關(guān)的多維運行基線,將批量監(jiān)控報警提示目的從“直接發(fā)現(xiàn)批量故障”轉(zhuǎn)為“發(fā)現(xiàn)批量運行的波動”而引導(dǎo)運維、開發(fā)人員排查分析,并判斷系統(tǒng)運行是否存在異常。
四、批量處置友好性設(shè)計思路
除滿足業(yè)務(wù)需求外,友好的處置設(shè)計會直接影響處置效率及維護便利性。批量的適度分割、批量的容錯健壯設(shè)計、跨系統(tǒng)的數(shù)據(jù)及質(zhì)量控制、關(guān)鍵批量的識別和特殊調(diào)度都是我們提升批量維護能力的有效方法。
1.批量拆分粒度
在實際業(yè)務(wù)數(shù)據(jù)處理場景中,業(yè)務(wù)流程可能包含多個步驟。從批量粒度設(shè)計角度考慮,業(yè)務(wù)流與批量流的對應(yīng)關(guān)系會直接影響我們的分析和處置效率。例如,如果一套完整的業(yè)務(wù)流被設(shè)計為一整個批量,并通過單一腳本處理,那么當故障出現(xiàn)時,開發(fā)及運維人員需從批量開始排查,并逐個分析中間臨時結(jié)果,在定位問題后,也需從頭重試批量,從而影響整體的處置時長。但如果該業(yè)務(wù)流程按步驟合理拆分成多個細粒度批量,或在關(guān)鍵業(yè)務(wù)處理節(jié)點增設(shè)斷點,在處置及異常場景處理下,人工排查范圍及處理時長、處置影響也會大幅減少。同時,批量合理拆分也有利于進行并行處理,上下游緊耦合調(diào)起,以提升整體業(yè)務(wù)流程處理效率。
2.批量容錯健壯性及批量自愈
在批量設(shè)計階段,需預(yù)先考慮批量異常觸發(fā)場景,并根據(jù)相關(guān)處置預(yù)案豐富批量容錯能力。例如,為應(yīng)對常見的上游前置條件不滿足、上游文件延遲等場景,我們可以在批量設(shè)計階段增加輪詢掃描等待;為應(yīng)對數(shù)據(jù)庫或底層環(huán)境異常中斷可增加自動重試機制;應(yīng)對常見的上游文件格式異常可在滿足業(yè)務(wù)要求的場景下摒棄部分數(shù)據(jù)或文件內(nèi)容。批量健壯性的完善意味著運維能力的前移,一些原本在故障后的處置操作被提前至故障發(fā)生前,并融入系統(tǒng)及批量設(shè)計中。當然,批量的容錯并不意味著在任何情況下可兼容處理各種異常或意外場景,我們更應(yīng)從上下游鏈路及業(yè)務(wù)聯(lián)動視角分析,并結(jié)合實際場景設(shè)計批量容錯能力。相信在不遠的未來,結(jié)合智能化運維發(fā)展,越來越多的批量故障場景可被智能運維能力識別覆蓋,批量故障處置可通過人工預(yù)授權(quán)等機制自動實現(xiàn)批量自愈。
3.跨系統(tǒng)聯(lián)動和數(shù)據(jù)質(zhì)量控制
批量加工導(dǎo)出的數(shù)據(jù)或生成的標識文件等作為批量的產(chǎn)出,在很多場景中承擔(dān)了上下游橋接交互的作用。在實際運行中,因業(yè)務(wù)功能的不同側(cè)重,上下游對于交互文件的理解及要求難免存在一些偏差脫節(jié),從而導(dǎo)致系統(tǒng)間批量交互故障或下游數(shù)據(jù)異常。為緩釋相關(guān)風(fēng)險,系統(tǒng)間的聯(lián)動校驗及質(zhì)量管控尤為重要。上游批量結(jié)束后需根據(jù)下游使用方對于數(shù)據(jù)要求作為校驗規(guī)則的輸入,并對批量輸出結(jié)果進行校驗控制。下游批量也應(yīng)在跑批前提前對數(shù)據(jù)內(nèi)容進行檢查,并在文件或數(shù)據(jù)不符合預(yù)期時終止退出。這些串聯(lián)上下游的質(zhì)量控制校驗可以及時發(fā)現(xiàn)交互異常,并在故障場景縮小問題數(shù)據(jù)影響范圍。
4.關(guān)鍵批量的標識及分級調(diào)度處理
隨著批量規(guī)模的不斷增加,單純的人工運維經(jīng)驗已難以覆蓋海量的批量任務(wù)信息。批量任務(wù)的業(yè)務(wù)影響、時效要求、上下游關(guān)聯(lián)系統(tǒng)等配置信息逐漸成為了運維人員描述批量任務(wù)的畫像。重要性標識和分級分類管理有利于運維人員在故障發(fā)生時迅速評估影響,并集中資源提升處置緊迫性。一些例如業(yè)務(wù)開門準備類批量、換日前賬務(wù)處理或報送類批量有著較高的時效性要求,為保障這些任務(wù)在故障情況下仍可按時完成,批量的優(yōu)先調(diào)度、算力動態(tài)分配能力是我們處置的有力手段。提級調(diào)度和彈性算力等未雨綢繆的運維處置工具建設(shè)為關(guān)鍵批量的提速提供了有效的保障。
五、結(jié)語
批量在信息系統(tǒng)中的重要性要求著我們不輟努力地從設(shè)計、開發(fā)、測試、維護等各個環(huán)節(jié)提升運行強壯性、完善預(yù)案及運行監(jiān)控,并不斷提升異常場景下的處置能力。我們正經(jīng)歷著數(shù)據(jù)和信息的爆炸性發(fā)展,也在逐步適應(yīng)批量任務(wù)的海量級和實時化轉(zhuǎn)型。在迎接這些新挑戰(zhàn)的路程中,除能力更加豐富的批量維護平臺和調(diào)度平臺等的運維工具建設(shè)外,批量維護人員的運維思路及運維理念亦需要同步緊跟時代發(fā)展的步伐。
誠然,信息系統(tǒng)的建設(shè)從來不是一蹴而就的。作為批量維護的運維人員,我親身經(jīng)歷過因批量監(jiān)控敏感度過高而引起的監(jiān)控誤報,也經(jīng)歷過批量操作處置不當導(dǎo)致更大的生產(chǎn)運行隱患。當我們回頭看來,那每一個我們精心設(shè)計并準確發(fā)現(xiàn)運行問題的監(jiān)控策略、每一次符合故障預(yù)案場景的迅速處置、每一次成功的容錯自動處理看似是運維工作中平淡,但都會變成坎坷建設(shè)道路后最美好的回報。
作者:陳棟
負責(zé)G行數(shù)據(jù)倉庫及集市的應(yīng)用運維工作。以防微杜漸之智扼殺隱患苗頭,持一絲不茍之態(tài)雕琢每個細節(jié),筑牢成功與安全的基石。希望繼續(xù)與各位讀者前輩共同探討深耕數(shù)據(jù)系統(tǒng)運行維護。
圖片