在 熱點帳戶問題和經常使用解決方案【中】這篇文章中提到,解決熱點讀性能的一個很是通用方式是數據歸檔。本篇小拽總結下在操做數據歸檔過程當中遇到的一些問題和經驗!
所謂數據歸檔就是把部分低頻訪問的歷史數據
從線上庫遷移到歸檔庫的過程。在設計數據歸檔方案的時候一般須要思考三個問題網絡
下面也着重從這三部分來聊聊運維
存儲選型是歸檔前要作的最重要的一件事情,目前市面上的存儲方式多如牛毛,如何選擇可以支撐當前業務環境的存儲選型,就很是重要!分佈式
既然是要選型數據歸檔的存儲,首先來須要梳理下歸檔數據的特色性能
除了考慮歸檔數據的特色,還要考慮一些通用因素,例如ui
也初步總結和梳理了下可能用到的集中存儲的特性spa
結合歸檔數據的特色和不一樣存儲的優點,最終選用了.net
歸檔過程存在會刪除線上數據,是個很是高危的操做
,因此操做過程當中和操做以後都須要特別注意數據一致性的保證。設計
對於操做過程的一致性保證相對簡單,過程一般兩步
step1 插入確認:查詢線上庫->插入歸檔庫->查詢歸檔庫->確認插入
step2 刪除確認:刪除線上庫->查詢線上庫->確認刪除
注意:過程當中儘量的保證讀取和寫入的時間,刪除會鎖庫,大批量讀會搶網絡和IO,防止對線上業務形成壓力,儘量調優批量數據,推薦條目在200-1000條一次,數據量在5M-100M一次code
數據歸檔後,必然破壞了數據的完整性
,會形成下面幾個問題,,須要提早考慮blog
低頻歷史數據歸檔後,形成線上數據缺失,查詢數據穿透和範圍關係查詢損失都會存在。所以,數據歸檔後,對於讀操做有兩種處理方式
針對讀數據,還有一種比較特殊的狀況,就是跨區間範圍關係聚合,這樣就須要有一份完整數據
來知足極端需求,目前財務系統對於這類需求統一走離線財務數倉來解決!
對於寫數據最大的問題就是冪等健被破壞,歸檔了數據後,rds寫入惟一健破壞,在極端狀況下,可能會形成duplicate
。考慮到問題的出現機率和實現成本,初期能夠忽略,採用人工干預的方式,歸檔最終要寫入全量,寫不進去就是duplicate了;後面能夠採用前置冪等健組來擋,作到最終一致!
不管是數倉數據仍是歸檔數據,做爲財務數據,一旦提供資金服務,那麼就必須保證強一致性,財務目前採用離線分天統計數據的金額和數量,來保證宏觀上的一致性。這裏面也有須要小坑,例如數據飄移,時間gap等,關於財務數倉中遇到的坑和解決方案,後續專項討論
分析了歸檔前選型,歸檔中數據轉移,歸檔後數據完整性問題,初步的歸檔方案以下圖
簡單梳理下核心流程
本篇主要總結了小拽在數據歸檔過程當中,如何選型,如何歸檔以及在歸檔數據後引發的問題如何處理。
經過數據歸檔,更清楚的劃定了不一樣存儲介質的功能邊界,是進行數據中臺搭建,賦能業務的前置準備!