架構學習提煉筆記(三):高性能架構設計技巧——讀寫分離

  讀寫分離的基本原理是:將數據庫讀寫操做分散到不一樣的節點上。數據庫

  讀寫分離的基本實現是:數據庫服務搭建主從集羣,一主一從,一主多從均可以,數據庫主機負責讀寫操做,從機只負責讀操做。主機經過複製將數據同步到從機,每臺數據庫都存儲了全部的業務書,業務出服務器將寫操做發給數據庫主機,將讀操做發給數據庫從機。編程

   

 

  讀寫分離操做主要有兩個複雜度引入:服務器

  1.主從複製延遲。架構

  常看法決思路是:編程語言

  a.寫操做後的讀操做指定發給數據庫主服務器。可是這樣和業務綁定比較深,對業務的深刻和影響比較大。性能

  b.讀從機失敗後,再讀一次主機。可從數據庫訪問層統一封裝,代價較小,但可能形成對主機壓力較大的風險spa

  c.關鍵業務讀寫所有指向主機,非關鍵業務採用讀寫分離3d

  2.分配機制代理

  常看法決思路有:代碼封裝和中間件封裝。中間件

  代碼封裝是經過在代碼中抽象一個訪問層,實現讀寫操做分離和數據庫連接管理,例如,基於 Hibernate 進行簡單封裝,就能夠實現讀寫分離,基本架構圖爲:

   

 

  這種方式實現簡單,能夠根據業務作較多定製,可是開發工做量較大,主從切換時可能須要重啓。

  中間件封裝,是指經過一套獨立的系統,實現讀寫操做分離和數據庫連接操做。對於業務服務器來講,中間件服務器就是數據庫操做服務器,全部的操做都被其代理了。基本架構圖是:

   

 

  中間件的方式,實現很是複雜,服務器性能要求也很高,可是它能夠實現支持多編程語言和業務服務器無感知切換,若是有足夠的人力財力以及多編程語言的要求,能夠採用中間件方式實現讀寫分離。通常推薦直接使用代碼封裝的方式。

相關文章
相關標籤/搜索