劉壯飛
摘 要隨著我國IT系統(tǒng)建設(shè)取得階段性成果,IT的發(fā)展由普遍建設(shè)向普遍運(yùn)維轉(zhuǎn)型,面對通信行業(yè)多級、分域、面向社會(huì)服務(wù)的特性,同時(shí)運(yùn)營商的相關(guān)業(yè)務(wù)發(fā)展數(shù)據(jù)也日趨龐大,如何向用戶提供高性能、高并發(fā)、高可用的應(yīng)用,成了需要面對的問題。采用分布式數(shù)據(jù)庫用以應(yīng)對高并發(fā)、高性能的業(yè)務(wù)要求,這是一個(gè)比較理想的途徑,而分布式數(shù)據(jù)庫的數(shù)據(jù)修復(fù)則是其中一個(gè)重點(diǎn)難題,因此系統(tǒng)上線的同時(shí)必須充分考慮數(shù)據(jù)維護(hù)的運(yùn)維手段。接下來,讓我們來看看在分布式架構(gòu)下,分布式數(shù)據(jù)修復(fù)存在哪些問題,我們又是怎么去解決的,又取得了怎樣的成效呢。
【關(guān)鍵詞】分布式數(shù)據(jù)庫 修復(fù) 可視化數(shù)據(jù)修復(fù) 福富
1 系統(tǒng)現(xiàn)狀
分布式數(shù)據(jù)庫的使用,給運(yùn)營帶來了新的挑戰(zhàn),從數(shù)據(jù)操作形式、效率和操作結(jié)果等,則是在應(yīng)用系統(tǒng)運(yùn)維層面必須面對的問題。目前主要存在以下幾個(gè)方面問題:
1.1 基于存儲(chǔ)過程的修復(fù)不可用
原本單庫的數(shù)據(jù)會(huì)散列到不同機(jī)器、數(shù)據(jù)庫以及不同的分片下,將要面臨重復(fù)創(chuàng)建,腳本一致性等問題,且有時(shí)分片的規(guī)則又復(fù)雜多變。難以保證事務(wù)的一致性,萬一出錯(cuò)往往不知如何回滾。運(yùn)維人員編寫工作量大,無法保證操作的準(zhǔn)確性。
1.2 關(guān)聯(lián)查詢數(shù)據(jù)的不準(zhǔn)確
不同表之間的物理存儲(chǔ)有可能不在一起,有些表雖然在同一個(gè)物理庫上,但是他們的數(shù)據(jù)是落在不同的物理庫,通過關(guān)聯(lián)可能會(huì)丟失不在相同物理庫上的數(shù)據(jù)。
1.3 修復(fù)數(shù)據(jù)人員要求高
對數(shù)據(jù)修復(fù)人員的要求較高,還要了解分布式數(shù)據(jù)的使用與限制,有時(shí)根本不知道自己操作的數(shù)據(jù)在哪里,以及在傳統(tǒng)單庫上正常執(zhí)行的腳本,在分布式數(shù)據(jù)庫上執(zhí)行的異常一頭霧水。
2 解決方案
本方案主要考慮“靈活配置”、“高性能”、“簡單易用”、“可擴(kuò)展行”等,確保該工具與現(xiàn)有運(yùn)維數(shù)據(jù)修復(fù)習(xí)慣接近,提供簡單易用,性能高效的數(shù)據(jù)修復(fù)工具。
系統(tǒng)的技術(shù)架構(gòu)方面,使用責(zé)任鏈模式實(shí)現(xiàn)配置步驟的執(zhí)行,采用觀察者模式記錄執(zhí)行的相關(guān)信息;通過線程池,future等技術(shù),提供高效的多線程并發(fā)執(zhí)行的功能;通過對jdbc的封裝使用,確保在不同物理庫之間自由的切換查詢,更新操作。前端使用bootstrap+angularjs,實(shí)現(xiàn)自適應(yīng)的數(shù)據(jù)視圖雙向綁定的高效可視化配置操作界面。其技術(shù)原理如圖1所示。
上圖的系統(tǒng)架構(gòu)圖,其各個(gè)主要執(zhí)行部件的主要功能如下:
配置執(zhí)行:通過使用該工具對數(shù)據(jù)修復(fù)邏輯的配置,可解析并正確執(zhí)行修復(fù)邏輯。
輪詢配置執(zhí)行:主要是通過調(diào)用分布式輪詢平臺(tái),將已配置好的修復(fù)邏輯定時(shí)執(zhí)行。
權(quán)限管理:針對于配置過程的查看,修改,執(zhí)行等權(quán)限進(jìn)行授權(quán),或者角色授權(quán),并允許進(jìn)行授權(quán)的傳遞。
SQL審核:調(diào)用審核平臺(tái)接口,對配置中sql進(jìn)行審核,檢查不被允許的操作,防范一些無權(quán),危險(xiǎn)操作。
日志分析:對關(guān)鍵執(zhí)行信息的記錄,并統(tǒng)計(jì)執(zhí)行的效率,數(shù)據(jù)量等信息。
3 建設(shè)成效
本方案在解決分布式的數(shù)據(jù)庫數(shù)據(jù)修復(fù)的過程中,主要從以下幾個(gè)方面向運(yùn)維人員,數(shù)據(jù)分析人員提供了便捷、安全、高效的操作:
(1)提供一個(gè)可視化數(shù)據(jù)修復(fù)配置,有效解決了人工編寫代碼修復(fù)分布式數(shù)據(jù)庫中異常數(shù)據(jù)的問題,降低了修復(fù)的難度,提高數(shù)據(jù)修復(fù)的效率;
(2)利用記錄各個(gè)執(zhí)行狀態(tài)的執(zhí)行信息,提供中斷繼續(xù)執(zhí)行功能,提升了數(shù)據(jù)修復(fù)的可操作性;
(3)提供了分布式并發(fā)調(diào)度執(zhí)行的能力,提供多并發(fā)執(zhí)行機(jī)制,極大的提升了數(shù)據(jù)修復(fù)的進(jìn)度,具備動(dòng)態(tài)擴(kuò)縮數(shù)據(jù)修復(fù)能力,并能夠?qū)崟r(shí)記錄執(zhí)行現(xiàn)場信息,確保問題回溯和安全審計(jì)。
(4)能夠針對不同的權(quán)限,提供相應(yīng)的功能,并且審核配置的sql語句,嚴(yán)格規(guī)范生產(chǎn)數(shù)據(jù)操作,避免對生產(chǎn)數(shù)據(jù)的不受控制的操作;
(5)能夠在SQL語句執(zhí)行前進(jìn)行相關(guān)的語法和執(zhí)行下來的審核與校驗(yàn),確保數(shù)據(jù)修復(fù)邏輯的正確和高效的執(zhí)行。
(6)實(shí)現(xiàn)輪詢調(diào)度的功能,避免運(yùn)維人員需要7*24小時(shí)的值班,提升工作效率和節(jié)約工作成本。
4 總結(jié)
總而言之,在分布式數(shù)據(jù)庫運(yùn)維的數(shù)據(jù)操作上,提升了數(shù)據(jù)修復(fù)成功率,具備可回溯性,并具備一定的SQL審核校驗(yàn)和動(dòng)態(tài)擴(kuò)縮容能力,極大節(jié)約了運(yùn)維人力成本,降低了數(shù)據(jù)修復(fù)的難度,提升了數(shù)據(jù)修復(fù)的效率和成功率,但在界面的友好性和易用性方面,還需要進(jìn)一步完善。
作者單位
福富軟件 福建省福州市 350003