文章目錄
- 垂直分庫架構/分布式數據庫
- 什么是垂直分庫架構
- 架構模型
- 優缺點
- 優點
- 缺點
- 技術案例
- 分布式數據庫
- 架構模型
- 優缺點
- 優點
- 缺點
- 技術案例
垂直分庫架構/分布式數據庫
什么是垂直分庫架構
根據業務的模塊劃分, 將不同業務的數據放到不同的數據庫中。 比如一個電子商城有商品業務, 用戶業務, 交易業務。 那么數據庫對應的里面有商品表, 用戶表, 交易表。 那么采用垂直分庫架構, 就是將里面的每一個業務板塊的表作為單獨的一個庫:商品庫, 用戶庫, 交易庫。
架構模型
整個的流程就是用戶想要訪問一下交易服務, 但是交易服務可能要用到商品服務, 所以就去訪問了一下商品服務, 然后商品服務去檢查熱點數據, 找到了, 就返回結果然后把服務結果返回給交易服務。 交易服務拿到結果后, 再去熱點數據進行查找, 沒找到,就又去冷庫里面讀取,然后讀取到數據返回給用戶。
優缺點
優點
- 減少了不同業務之間的資源競爭, 增加了索引的效率。
- 顯著分擔了并發請求, 增加了應對高并發尤其是寫并發的能力。
- 減少了業務代碼之間的耦合, 業務出現問題更容易定位問題的位置。
缺點
- 跨庫查詢困難, 無法直接使用JOIN
- 數據一致性問題, 比如訂單庫增加, 商品庫就要減少。
- 系統的復雜性上升, 運維成本增加
技術案例
分布式數據庫
分布式數據庫架構是垂直分庫架構的進一步演進。 垂直分庫架構通過業務模塊縱向拆分數據庫。 而分布式數據庫屬于根據數據分片橫向拆分數據庫。同時分布式數據庫還有多副本、分布式事務、負載均衡、一致性模型、透明性等特性。
- 分片: 分片就是在按照業務模塊拆分的基礎上。 對每一個業務數據庫再劃分為一個一個的子集,即進行橫向擴展。就比如原本用戶表、商品表都是使用一個主數據,多個從數據庫。 現在將每個表劃分為多個子集, 每個子集又有自己的主庫和從庫。
- 多副本:將每一個分片都設計成一個主從集群, 分布式數據庫應用了讀寫分離架構架構來提高冗余和提高并發處理能力。
- 分布式事務: 對于垂直分庫架構來說, 跨庫事務是難點。 分布式數據庫支持跨庫的事務處理。 保證多個節點的(分片之間或者主從之間)的ACID。 這也說明分布式數據庫具有一致性的特性, 比如TiDB的強一致性。
- 透明訪問: 提供統一接口, 底層設計對上層透明。
- 負載均衡: 請求自動被分發給流量少的分片, 分片之間能夠流量均衡。
架構模型
優缺點
優點
- 性能高, 高性能計算。
- 處理高并發, 海量數據能力非常強。
- 分片結構擴展能力非常強。
缺點
- 系統復雜度非常高, 硬件成本, 運維成本高昂。
- 一致性協議性能開銷大, 分布式事務性能開銷大。
- 分布式事務管理復雜。