數(shù)據(jù)倉庫運維探索實踐
?一、背景與挑戰(zhàn)
隨著銀行數(shù)據(jù)業(yè)務(wù)的飛速發(fā)展,傳統(tǒng)數(shù)據(jù)倉庫也經(jīng)受著越來越多的挑戰(zhàn),數(shù)據(jù)量爆發(fā)式增漲,底層資源不斷擴張,業(yè)務(wù)對數(shù)據(jù)的時效性要求提升。同時,新技術(shù)不斷涌現(xiàn),技術(shù)架構(gòu)由單一數(shù)倉集群轉(zhuǎn)向功能化拆分,即:將單一數(shù)據(jù)倉庫經(jīng)過拆分,分解成不同的功能定位的倉庫集群,以達到提前感知業(yè)務(wù)變化、快速應(yīng)對,精準利用資源等目的。
對數(shù)據(jù)倉庫的運維來說,“一個數(shù)據(jù)倉庫容納全行業(yè)務(wù)數(shù)據(jù)”、“只需維護一個數(shù)據(jù)倉庫”的日子一去不返,傳統(tǒng)的“人肉運維”滿足不了當前以及未來的運維需求。傳統(tǒng)運維工具在某些場景下可以實現(xiàn)對已知問題和故障的快速處置、恢復(fù)生產(chǎn),但終究還是屬于被動運維的范疇。當前在數(shù)據(jù)倉庫不斷擴展、業(yè)務(wù)訴求不斷提升的大背景下,業(yè)務(wù)中斷越來越不被接受,最終的結(jié)果將是被動運維疲于奔命。在數(shù)據(jù)倉庫發(fā)展的大背景下保證業(yè)務(wù)的正常開展、保障業(yè)務(wù)的連續(xù)性將是數(shù)據(jù)倉庫運維的首要職責。
二、應(yīng)對與方案
運維是保障業(yè)務(wù)的正常運行和開展,不是發(fā)生問題之后的“堵窟窿”,盡管運維的經(jīng)歷告訴我們:由于各種天災(zāi)人禍,“堵窟窿”的事情肯定少不了,但是很大一部分的事故故障都是有先兆的。正如海恩法則所示,一起重大事故的產(chǎn)生,經(jīng)由29次輕微事故,300個事故苗頭以及1000個事故隱患,如果能做到變被動為主動,主動捕捉到事故苗頭以及事故隱患,提前發(fā)現(xiàn)運維堤壩的薄弱、隱患環(huán)節(jié),制定完備的應(yīng)對方案,就提前進行加固處置,消除隱患。
伴隨銀行數(shù)據(jù)倉庫的不斷發(fā)展,運維的思路也在不斷的演進,逐漸由被動運維向主動運維轉(zhuǎn)變,結(jié)合既有運維的經(jīng)驗,推動數(shù)據(jù)倉庫領(lǐng)域的主動運維。經(jīng)過近幾年的經(jīng)驗積累,G行建設(shè)形成了一套相對成熟的數(shù)倉運維方案,即主動運維與應(yīng)急處置相結(jié)合,“主動運維”提前發(fā)現(xiàn)問題、消滅隱患,應(yīng)急處置在問題發(fā)生時快速響應(yīng)、恢復(fù)業(yè)務(wù),實現(xiàn)對數(shù)據(jù)業(yè)務(wù)的保駕護航。
三、數(shù)倉運維落地實踐
與傳統(tǒng)的業(yè)務(wù)庫不同,數(shù)據(jù)倉庫擁有得天獨厚的條件,數(shù)據(jù)倉庫是所有業(yè)務(wù)數(shù)據(jù)存儲、分析、處理的核心。數(shù)據(jù)倉庫可以通過就地取材,將自身所有的運行數(shù)據(jù)進行采集、歸納、匯總、入倉,通過數(shù)據(jù)倉庫的數(shù)據(jù)存儲、分析、加工的能力,將數(shù)據(jù)倉庫的各項運行數(shù)據(jù)進行歸集處理,最終形成有效的數(shù)據(jù)倉庫運行數(shù)據(jù),將數(shù)據(jù)倉庫運維轉(zhuǎn)向數(shù)字化。
G行數(shù)據(jù)倉庫運維探索實踐,始終以保障業(yè)務(wù)連續(xù)性,釋放人力資源,精準故障定位、快速業(yè)務(wù)恢復(fù)等為目標,立足日常的生產(chǎn)運維需求場景,如容量管理、故障處置等。將應(yīng)用業(yè)務(wù)運行、底層資源消耗、數(shù)據(jù)倉庫運行監(jiān)測等多方面的運行數(shù)據(jù)進行采集,建立多維數(shù)據(jù)倉庫運行模型,能夠精準的記錄各個時點,多個維度的運行狀態(tài)。
全面的運行數(shù)據(jù)采集包括底層資源數(shù)據(jù)、數(shù)據(jù)倉庫系統(tǒng)運行數(shù)據(jù)、業(yè)務(wù)運行數(shù)據(jù)等眾多方面。
底層資源數(shù)據(jù):既包括CPU、內(nèi)存、IO、網(wǎng)絡(luò),還包括系統(tǒng)層各項進程的資源消耗,尤其是底層資源的橫向?qū)Ρ?。?shù)據(jù)倉庫的最大特點就是集中,而集中的最大的故障隱患就是牽一發(fā)而動全身,資源節(jié)點瓶頸很大的概率就會將整個數(shù)據(jù)倉庫的處理性能拉低。就運維經(jīng)驗而言,除了全局性的性能問題,大概率的性能突降等問題或由“木桶效應(yīng)”局部故障引起的整體性能下降,而局部故障能從全局底層資源的橫向?qū)Ρ然驓v史資源消耗縱向比對,快速的定位局部,進而快速的處理,恢復(fù)業(yè)務(wù)生產(chǎn)。
數(shù)據(jù)倉庫運行數(shù)據(jù):數(shù)據(jù)倉庫運行與常規(guī)的數(shù)據(jù)庫運行不同,常規(guī)數(shù)據(jù)庫運行可根據(jù)QPS、TPS等指標綜合判斷,而數(shù)據(jù)參倉庫受限于運行的業(yè)務(wù)場景特點萬難梳理一兩個指標來判斷整理運行狀態(tài),而由于處理數(shù)據(jù)規(guī)模及場景的復(fù)雜,通常一個常規(guī)SQL也將會導(dǎo)致整體的數(shù)據(jù)倉庫運行壓力飆升。這也就是數(shù)據(jù)倉庫運行與業(yè)務(wù)數(shù)據(jù)庫運行的不同之處。
業(yè)務(wù)運行數(shù)據(jù):業(yè)務(wù)運行數(shù)據(jù)同樣是不可或缺的一部分。不同于單一的業(yè)務(wù)系統(tǒng)數(shù)據(jù)庫,數(shù)據(jù)倉庫往往立足于復(fù)雜的多業(yè)務(wù)場景,必須適應(yīng)所有接入的業(yè)務(wù)。通過對業(yè)務(wù)運行數(shù)據(jù)的監(jiān)測,發(fā)現(xiàn)業(yè)務(wù)場景的變化,能夠有效的快速的定位問題。由果尋因,業(yè)務(wù)發(fā)展變化往往是數(shù)據(jù)倉庫運行變化的根因,將業(yè)務(wù)運行數(shù)據(jù)采集監(jiān)控并納入數(shù)據(jù)倉庫的整體運行監(jiān)測是必須的。
G行在探索實踐過程中,各項數(shù)據(jù)采集監(jiān)測告警指標項100多項,其中底層資源采集指標20余項,除常規(guī)的CPU、內(nèi)存、IO等資源更關(guān)注可能對數(shù)倉運行產(chǎn)生影響明細項,如磁盤壞塊數(shù)量,負載波動,進程資源消耗,文件系統(tǒng)文件數(shù),內(nèi)存分頁效率,句柄使用量,僵尸、殘留進程等明細指標項;數(shù)據(jù)庫運行等采集指標50余項,包括庫執(zhí)行效率,實時訪問量、訪問時長,阻塞排隊,庫實例級資源消耗,傾斜SQL,低效節(jié)點,Xlog同步、數(shù)據(jù)頁讀取效率等;業(yè)務(wù)相關(guān)指標采集10余項,時點業(yè)務(wù)并發(fā),單項任務(wù)時長、累計時長,完成任務(wù)占比等;其他采集指標項20多項。隨著業(yè)務(wù)發(fā)展,運維場景不斷豐富,所需的采集指標項也不斷完善,簡而言之“與時俱進”。將運行數(shù)據(jù)終以圖形呈現(xiàn),全面檢測,快速識別異常。
立足于數(shù)據(jù)倉庫的各類運行數(shù)據(jù),根據(jù)生產(chǎn)運行場景以及日常運維需求,形成有針對性的監(jiān)測模型,通過模型來監(jiān)測發(fā)現(xiàn)運行異常,運行變化等問題。同時,在運行模型基礎(chǔ)上再通過實際結(jié)果的反饋,逐步優(yōu)化監(jiān)測模型,進而優(yōu)化各項監(jiān)測采集指標,形成一個可行性極高的閉環(huán)系統(tǒng)。通過場景模型上線、反饋優(yōu)化,不斷的完善反饋,逐步形成數(shù)據(jù)倉庫的數(shù)字化運維平臺。
隨著運行分析模型的建立和完善,除了在一定程度上實現(xiàn)潛在運行故障的提前預(yù)判、突發(fā)運行故障的快速定位之外,還有一種重要的運維場景:故障回溯。所以在很多故障發(fā)生時,往往不可能有充足的時間分析定位問題,而有些問題又隱藏的很深,一旦發(fā)生影響生產(chǎn)的事件,一般采用強制手段恢復(fù)生產(chǎn),強制手段很大程度升就破壞的現(xiàn)場,而全面的運行數(shù)據(jù)采集保留,能夠在一定程度上實現(xiàn)保留現(xiàn)場,為后續(xù)的故障分析定位提供運行數(shù)據(jù)的支撐。
數(shù)據(jù)倉庫運行數(shù)據(jù)采集的基礎(chǔ)建立后,可向上逐步衍生,實現(xiàn)運維功能自動化。G行數(shù)據(jù)倉庫運維平臺建設(shè)本著建立自動化,標準化,數(shù)字化的原則,建立在兼顧運維成本、運維質(zhì)量和運維效率基礎(chǔ)上,包括如下五個方面功能:
業(yè)務(wù)診斷:通過實施業(yè)務(wù)運行跟蹤監(jiān)測,實施探查業(yè)務(wù)運行狀態(tài);通過歷史故障分析模型對實時提交的業(yè)務(wù)進行分析,發(fā)現(xiàn)模型匹配的異常業(yè)務(wù)訪問進行自動處理;在針對實時業(yè)務(wù)進行監(jiān)測的同時,經(jīng)運行信息做歷史留存,為后續(xù)故障定位、場景分析、業(yè)務(wù)回溯做好準備。
健康監(jiān)測:實時監(jiān)測應(yīng)用狀態(tài),基礎(chǔ)資源使用情況,模擬業(yè)務(wù)場景不間斷進行平臺監(jiān)測,做到實時健康監(jiān)測,運行出現(xiàn)偏差立即響應(yīng)。
閉環(huán)優(yōu)化:包括應(yīng)用業(yè)務(wù)優(yōu)化和數(shù)倉自優(yōu)化,應(yīng)用業(yè)務(wù)優(yōu)化通過采集的業(yè)務(wù)運行信息,進行梳理將低效的業(yè)務(wù)信息以及優(yōu)化建議自動推送給相關(guān)人員,敦促進行整改,提升業(yè)務(wù)體驗;數(shù)倉自優(yōu)化通過檢測訪問連接、并發(fā),底層資源使用情況進行動態(tài)調(diào)整資源分配情況。
容量評估:通過對數(shù)倉各個集群的算力、空間、業(yè)務(wù)運行時效等多個維度進行綜合容量評估,每日、每周、每月形成報告推送,能夠快捷有效的進行數(shù)倉容量監(jiān)測評估,實現(xiàn)有計劃的進行數(shù)倉容量管理。
隨著G行各項運行指標數(shù)據(jù)采集的積累沉淀,立足于業(yè)務(wù)以及運維需求場景,利用每天幾十GB的運行數(shù)據(jù),根據(jù)不同需求場景建立支撐模型,利用日趨完善的數(shù)字化、自動化框架,實現(xiàn)快速需求響應(yīng)。
四、數(shù)據(jù)倉庫運維展望
我們相信,隨著運維技術(shù)的不斷演進與發(fā)展以及運維經(jīng)驗的不斷積累、工具化、自動化的深入發(fā)展,量變會引起質(zhì)變,數(shù)據(jù)倉庫運維的智能化也將在不久的將來實現(xiàn)。