淺談高性能資料庫集羣——分庫分表

最近學習了阿里資深技術專家李運華的架構設計關於分庫分表的教程,頗有收穫,總結一下。

本文主要介紹高性能數據庫集群分庫分表相關理論,基本架構,涉及的複雜度問題以及常見解決方案。

分庫分表概述

淺談高性能數據庫集群——分庫分表

讀寫分離分散數據庫讀寫操作壓力,分庫分表分散存儲壓力

適用場景

淺談高性能數據庫集群——分庫分表

類似讀寫分離,分庫分表也是確定沒有其他優化空間之後才採取的優化方案。那如果業務真的發展很快豈不是很快要進行分庫分表了?那為何不一開始就設計好呢?

按照架構設計的“三原則”(簡單原則,合適原則,演化原則),簡單分析一下:

首先,這裡的“如果”事實上發生的概率比較低,做10個業務有一個業務能活下去就很不錯了,更何況快速發展,和中彩票的概率差不多。如果我們每個業務上來就按照淘寶、微信的規模去做架構設計,不但會累死自己,還會害死業務

其次,如果業務真的發展很快,後面進行分庫分表也不遲。因為業務發展好,相應的資源投入就會加大,可以投入更多的人和更多的錢,那業務分庫帶來的代碼和業務複雜問題就可以通過加人來解決,成本問題也可以通過增加資金來解決。

業務分庫

淺談高性能數據庫集群——分庫分表

淺談高性能數據庫集群——分庫分表

業務分表

業務分表概述

淺談高性能數據庫集群——分庫分表

淺談高性能數據庫集群——分庫分表

帶來的問題

垂直分表

增加表操作的次數

水平分表

  • 路由問題
淺談高性能數據庫集群——分庫分表

  • 數據庫操作問題
淺談高性能數據庫集群——分庫分表

實現方法

淺談高性能數據庫集群——分庫分表

類似讀寫分離,具體實現也是“程序代碼封裝”和“中間件封裝”,但具體實現複雜一些,因為還有要判斷SQL中具體操作的表,具體操作(例如count、order by、group by等),根據具體操作做不同的處理。

如果對java微服務、分佈式、高併發、高可用、大型互聯網架構技術、面試經驗交流。感興趣可以關注我的頭條號,我會在微頭條不定期的發放免費的資料鏈接,這些資料都是從各個技術網站蒐集、整理出來的,如果你有好的學習資料可以私聊發我,我會註明出處之後分享給大家。歡迎分享,歡迎評論,歡迎轉發。


分享到:


相關文章: