點擊上方「

芋道源碼

」,選擇「置頂公眾號」

技術文章第一時間送達!

源碼精品專欄

 

  • 精盡 Dubbo 原理與源碼 69 篇

  • 精盡 Netty 原理與源碼

     61 篇

  • 中文詳細注釋的開源項目

  • Java 並發源碼合集

  • RocketMQ 源碼合集

  • Sharding-JDBC 源碼解析合集

  • Spring MVC 和 Security 源碼合集

  • MyCAT 源碼解析合集

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

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

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

分庫分表概述

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

分散存儲壓力

適用場景

類似讀寫分離,分庫分表也是確定沒有其他優化空間之後才採取的優化方案

。那如果業務真的發展很快豈不是很快要進行分庫分表了?那為何不一開始就設計好呢?

按照架構設計的「三原則」(

簡單原則,合適原則,演化原則

),簡單分析一下:

首先,這裡的「如果」事實上發生的概率比較低,做10個業務有一個業務能活下去就很不錯了,更何況快速發展,和中彩票的概率差不多。

如果我們每個業務上來就按照淘寶、微信的規模去做架構設計,不但會累死自己,還會害死業務

其次,

如果業務真的發展很快,後面進行分庫分表也不遲

。因為業務發展好,相應的資源投入就會加大,可以投入更多的人和更多的錢,那業務分庫帶來的代碼和業務複雜問題就可以通過加人來解決,成本問題也可以通過增加資金來解決。

業務分庫

業務分表

業務分表概述

帶來的問題

垂直分表

增加表操作的次數

水平分表

  • 路由問題

  • 資料庫操作問題

實現方法

類似

讀寫分離

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

參考

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

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

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

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



如果你對 Dubbo / Netty 等等源碼與原理感興趣,歡迎加入我的知識星球一起交流。

長按下方二維碼噢

目前在知識星球更新了《

Dubbo 源碼解析

》目錄

如下:01. 調試環境搭建02. 項目結構一覽03. 配置 Configuration04. 核心流程一覽

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+

 篇

源碼不易

↓↓↓

點贊

支持老艿艿

↓↓


推薦閱讀:
相关文章