分庫分表知識詳解與分庫分表中間件介紹

爲什麼需要分庫分表:

如果一個網站業務快速發展,那這個網站的流量也會增加。數據的壓力也會隨着而來。
比如電商系統來說雙十一大促對訂單數據庫的壓力很大。TPS十幾萬併發量,
如果是傳統的架構(一主多從),主庫容量肯定無法滿足這麼高的TPS。
業務越來越大,單表數據超出了數據庫支持的容量。
持久化磁盤IO,傳統的數據庫性能瓶頸,產品經理業務必須這麼做
改變程序。數據庫下刀子切分優化:
1、換數據庫》onsql
2、Sql、索引、字段
3、讀寫分離
4、分庫分表
5、分區

什麼是分庫分表:

即把存於一個庫的數據分散到多個庫中,把存於一個表的數據分散到多個表中。
一個庫一個表 拆分爲 N個庫N個表

分庫分表常見方式:

垂直

通俗的說法叫做“大表拆小表”,拆分是基於關係型數據庫中的“列”(字段)進行的。
在這裏插入圖片描述

特點:
1、每個庫(表)的結構都不一樣
2、每個庫(表)的數據都(至少有一列)一樣
3、每個庫(表)的並集是全量數據
總結:按拆分字段(多表字段拆成少表字段)
優點:

1、拆分後業務清晰(專庫專用按業務拆分)
2、實現動靜分離、冷熱數據分離設計體現。冷庫:發佈說說信息 熱:說說點贊評論數據
3、數據維護簡單、按業務不同業務放到不同機器上
缺點:
1、如果單表的數據量大、寫讀壓力大
2、受某種業務來決定、或者被限制。也就是說一個業務往往會影響到數據庫的瓶頸(性能問題)
3、部分業務無法關聯 join、只能通過java程序接口去調用,提供了開發複雜度。 (商品、訂單信息、會員信息)

水平

以某個字段按照一定的規律(取模)將一個表的數據分到多個庫中

特點:
水平(橫向)分庫
1、每個庫(表)的結構都一樣
2、每個庫(表)的數據都不一樣
3、每個庫(表)的並集是全量數據
總結:按數據(內容)拆分
優點:
1、單庫(表)的數據保持在一定的量(減少),有助於性能提高
2、提高了系統的穩定性和負載能力。
3、切分的表的結構相同、程序改造較少
缺點:
1、數據的擴容很有難度維護量大
2、拆分規則很難抽象出來
3、分片事務的一致性的問題部分業務無法關聯 join、只能通過java程序接口去調用

分庫分錶帶來的問題:

分庫分表:
增加了我們維護成本
分佈式事務(跨庫事務)
跨庫join
分佈式全局唯一ID
分庫分表算法:
**一、取模(Hash)**通過userid用戶表字段值進行123%3=xxxx 數據分散均衡,避免數據熱點 一致性hash(擴容需要O(N))擴容難度

二、範圍區分(range) 按月 按省 A(0-6)B(7-8)C(9 10)熱點數據
三、預定義(list) (100w 1億 移動互聯網)

讀寫分離:

在這裏插入圖片描述

什麼是讀寫分離:我們一般應用程序訪問數據庫無非是讀取數據、修改數據、插入數據、刪除數據 CRUD。
mysql自帶binlog
讀寫分離帶來的問題:

**讀寫分離:**主從同步、數據一致性的問題、網絡延遲的問題
**強制路由:**強制去訪問master

分庫分表的中間件:

在這裏插入圖片描述
Proxy、jdbc兩種方式
Proxy(代理層):mycat代理層、atlas(360)mysql-proxy
優點:
1、開發無感知 2、增刪節點程序不需要重啓 3、跨語言(java 、php)

缺點:
1、性能下降沒因爲多了一層 2、不支持跨數據庫
Jdbc(直連層):shardingsphere(sharding-jdbc)、TDDL(淘寶 部分開源)
優點:
1、性能很好的 2、支持跨數據庫jdbc
缺點:
1、增加了開發難度 2、不支持跨語言(java)

分庫分表中間件:ShardingSphere

Apache ShardingSphere(Incubator) 是一套開源的分佈式數據庫中間件解決方案組成的生態圈,它由Sharding-JDBC、Sharding-Proxy和Sharding-Sidecar(規劃中)這3款相互獨立,卻又能夠混合部署配合使用的產品組成。它們均提供標準化的數據分片、分佈式事務和數據庫治理功能,可適用於如Java同構、異構語言、雲原生等各種多樣化的應用場景。

ShardingSphere定位爲關係型數據庫中間件,旨在充分合理地在分佈式的場景下利用關係型數據庫的計算和存儲能力,而並非實現一個全新的關係型數據庫。它通過關注不變,進而抓住事物本質。關係型數據庫當今依然佔有巨大市場,是各個公司核心業務的基石,未來也難於撼動,我們目前階段更加關注在原有基礎上的增量,而非顛覆。
https://shardingsphere.apache.org

發佈了23 篇原創文章 · 獲贊 144 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章