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