歡迎光臨
每天分享高質量文章

淺談高效能資料庫叢集 —— 分庫分表

點選上方“芋道原始碼”,選擇“置頂公眾號”

技術文章第一時間送達!

原始碼精品專欄

 

來源: https://www.jianshu.com/p/9eadfba9cdaf

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

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

分庫分表概述

讀寫分離分散資料庫讀寫操作壓力,分庫分表分散儲存壓力

適用場景

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

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

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

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

業務分庫

業務分表

業務分表概述

帶來的問題

垂直分表

增加表操作的次數

水平分表

  • 路由問題

  • 資料庫操作問題

實現方法

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

參考

從0開始學架構 —— 李運華

《淺談高效能資料庫叢集——讀寫分離》—— 陳彩華

《架構設計方法初探》 —— 陳彩華

《分庫分表、主從、讀寫分離》




如果你對 Dubbo / Netty 等等原始碼與原理感興趣,歡迎加入我的知識星球一起交流。長按下方二維碼噢

目前在知識星球更新了《Dubbo 原始碼解析》目錄如下:

01. 除錯環境搭建
02. 專案結構一覽
03. 配置 Configuration
04. 核心流程一覽

05. 拓展機制 SPI

06. 執行緒池

07. 服務暴露 Export

08. 服務取用 Refer

09. 註冊中心 Registry

10. 動態編譯 Compile

11. 動態代理 Proxy

12. 服務呼叫 Invoke

13. 呼叫特性 

14. 過濾器 Filter

15. NIO 伺服器

16. P2P 伺服器

17. HTTP 伺服器

18. 序列化 Serialization

19. 叢集容錯 Cluster

20. 優雅停機

21. 日誌適配

22. 狀態檢查

23. 監控中心 Monitor

24. 管理中心 Admin

25. 運維命令 QOS

26. 鏈路追蹤 Tracing

… 一共 69+ 篇

目前在知識星球更新了《Netty 原始碼解析》目錄如下:

01. 除錯環境搭建
02. NIO 基礎
03. Netty 簡介
04. 啟動 Bootstrap

05. 事件輪詢 EventLoop

06. 通道管道 ChannelPipeline

07. 通道 Channel

08. 位元組緩衝區 ByteBuf

09. 通道處理器 ChannelHandler

10. 編解碼 Codec

11. 工具類 Util

… 一共 61+ 篇

目前在知識星球更新了《資料庫物體設計》目錄如下:


01. 商品模組
02. 交易模組
03. 營銷模組
04. 公用模組

… 一共 17+ 篇

原始碼不易↓↓↓

點贊支援老艿艿↓↓

贊(0)

分享創造快樂