雲架構那些事兒:數據層存儲雲化的實踐
業務上雲,在面臨海量的業務數據,如何在層出不窮的數據庫中選擇適合自身業務應用的解決方案,成為架構設計的難點。
傳統的集中化存儲,如將所有數據存儲在Oracle中的方式已經沒有辦法滿足現在多樣的數據類型與使用要求。採用“分而治之”的方式,更符合現在雲化架構的整體實現思路。
這裡為大家分享一下數據庫的選型原則,並提供一個真實的案例給大家作為參考。
選型原則:
數據層選型時,要考慮一下六個數據特點,選擇合適的數據存儲解決方案。
- 數據類型 , 關係型數據、KV數據、視頻、圖片、文件
- 數據量 , 萬級、百萬級、千萬級、億級別
- 實時性/一致性 , 實時訪問、準實時訪問、分鐘級延遲、小時級延遲、天級查詢
- 併發度 , QPS、TPS、響應時間
- 使用場景 , 實時業務、報表分析、歷史歸檔數據、多維查詢、正則查詢
- 數據來源 , 文件、數據同步、消息隊列、數據庫
結合以上六點,選擇合適的數據存儲技術形成數據層解決方案。
這裡舉幾個選型的例子:
- 海量關係型數據+實時性高+高併發:可以選擇分佈式關係型數據庫,商業的如阿里雲DRDS、POLARDB,開源的如MyCAT等。
- 多維度查詢+正則查詢+準實時+海量數據存儲:可選擇搜索引擎,如Elasticsearch
- 規則類數據/高併發KV類數據:Redis/Redis Cluster
- 歷史歸檔數據:阿里DRDS/Hbase
- 視頻圖片文件:可選擇分佈式文件系統或對象存儲,商業的如阿里OSS,開源的HDFS、FastDFS、GlusterFS、CephFS
真實案例
以下是我們在某大型企業使用的數據存儲及使用方案:
首先對數據存儲解決方案形成三層架構:
- 第一層,實時數據層
使用Redis實現高併發KV數據的緩存、Session共享。
使用阿里OSS作為大批量文件的存儲。
使用阿里DRDS作為核心業務數據庫。
使用ElasticSearch實現多維數據查詢與正則查詢。
- 第二層,數據傳輸層
使用阿里DTS作為數據同步通道,當然你可以選擇開源的如Otter/Canal來構建自己的數據同步通道,實現近實時的數據同步。
使用DTS-writer,將數據同步至異構數據庫,實現異構數據庫的數據同步,可大幅降低將由應用將數據存儲在各個獨立產品的研發代價。
- 第三層,離線數據層
使用HBASE作為歸檔數據存儲,實現數據挖掘與報表功能
使用阿里DRDS為生產提供離線/冷數據的查詢
使用阿里RDS作為同步部分關鍵數據,為打造業務生態提供個性業務數據
最後,從設計本身的角度,任何得到認可的數據庫產品都有價值,都可以作為數據存儲架構選型的備選項,但由於數據庫本身的重要性,使用團隊熟悉的技術往往可以降低整體風險。選擇使用新技術務必要進行大量驗證。
仔細思考,你一定會有所收穫。
歡迎關注:雲架構那些事兒,專注實用性雲架構分享與IT技術分享。
相關推薦
推薦中...