1. 程式人生 > 其它 >61-10000 asp.net 基於事件開發 - 計算器

61-10000 asp.net 基於事件開發 - 計算器

影響系統效率主要是兩方面:磁碟IO,網路IO。
關係型資料庫的資料都要持久化。
分庫分表:本質在於分,資料離散。
分庫,分表:垂直/水平
垂直分庫:一個庫中有多種表資料將不同型別的資料進行分組。商品庫/訂單庫 ,全部資料按照類別分為三類。(電商平臺,將資料分為商品庫/使用者庫/訂單庫)
垂直分表:一個表中有多個欄位,將常用欄位和不常用欄位拆開分為兩張表。在查詢資料時,網路攜帶資料少,網路IO速度就快。(使用者表,將賬號密碼常用的分為一張表,性別愛好分為一張表)


垂直:
特性:
1.每個庫(表)中的資料都不一樣。
2.每個庫(表)中的資料至少有一列一樣
3.每個庫(表)的並集是全量資料。
優點:
1.拆分和業務邏輯清晰(專庫專表按照業務拆分)
2.實現動靜分離,冷熱資料分離設計體現。(手機話費充值,近一個月的在一張表,一個月前的在另一張表,定時同步,熱資料,經常查詢,冷資料:不經常查詢)
3.資料維護簡單,不同業務部署到不同機器上
缺點:
1.單表資料量大,讀寫壓力大。???
2.受某種業務來決定,或者被限制,一個業務往往會影響到資料庫的瓶頸(效能問題)TPS,一個庫併發很高,會影響到其餘庫的效能。
3.部分資料不能聯表join,只能通過java程式介面去呼叫,提供開發複雜度(商品資訊/訂單資訊/會員資訊)

水平:
特性:
1.每個庫(表)的資料結構都一樣。
2.每個庫(表)的資料都不一樣。
3.每個庫(表)並集是全量資料。

優點:
1.單庫(表)的資料維持在一定量,有助於效能提高(資料少了,效能自然上來了)
2.提高了系統的文穩定性和負載能力。
3.拆分的表結構相同,減少程式碼維護(表的實體類欄位相同,不要做修改,垂直分庫,表:表字段不一致,需要將實體類拆分維護)
缺點:
1.資料的擴容很有難度,維護量大。(水平分庫,表,根據一定規則進行分,當資料量上來,需要新增庫和表時需要維護)
2.拆分規則很難抽象出來。
3.分片事務一致問題,部分業務無法聯表jion,只能通過java程式進行。

分庫分表:設計考慮前端,後端,業務複雜程度。
前端:效能要求高,吞吐量大,業務簡單。
後端:效能要求不高,業務複雜。


分庫分表的:
缺點:
1.分散式事務。
2.分散式ID。
3.分頁,排序問題。
4.聯表join問題,增加了程式的複雜度。

如何解決分散式問題。

分散式中介軟體:TDDL(淘寶),ShardingSphere(sharding-JDBC),MyCat
應用層
jdbc:讀寫分離,會自動判斷,效能高,不支援跨語言,支援跨資料庫語言,是一個實現了JDBC協議應用

代理層
proxy: 由於要經過mycat所以效能低,支援跨語言,不支援跨資料庫語言 ,是一個實現了MySQL協議的伺服器


事務一致性問題
跨節點關聯查詢 join 問題
跨節點分頁、排序、函式問題
全域性主鍵避重問題

常用的分庫分表工具如下:
Sharding-JDBC(噹噹)
TSharding(蘑菇街)
Cobar(阿里巴巴)
MyCAT(基於 Cobar)