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