前言
随着業務的不斷發展,單機資料庫已經不能滿足業務需要。接下來講講資料庫叢集的幾種方式:讀寫分離和分庫分表。
讀寫分離
原理
讀寫分離的原理就是将資料庫的讀寫操作分散在不同的節點上。
實作方式
- 多台資料庫搭建一個叢集,一台資料庫做主庫,其他資料庫做從庫。
- 主庫負責寫操作,從庫負責讀操作
- 主庫通過複制将資料的變更同步到從庫,每台節點都有完整的資料
需要考慮的問題
-
複制延遲
主庫在資料變更後,不可能立即去進行同步,會有一個延遲。如果這時遇到修改完資料需要立即讀出資料的場景,去從庫讀讀是不可行的。這裡有幾個解決辦法
- 這次寫操作後的讀操作指定使用主庫
- 從庫查詢失敗,去主庫進行二次查詢
這種實作較為簡單,但是要考慮二次查詢的頻率,如果二次查詢場景很多,會增加資料庫壓力。
3. 關鍵業務隻走主庫,其他走從庫
比如使用者修改了登入資訊,這時需要走主庫(不然會登入不上)。如果是修改了個性簽名,可以進行讀寫分離。
-
配置設定機制
将讀寫分開,通路不同資料庫,一般有兩種方式:代碼封裝和中間件封裝。
-
代碼封裝
就是在代碼中,實作資料庫連接配接的管理,自由配置設定讀寫分離。
特點:
- 實作簡單
- 如果發生主從切換,就會比較麻煩,則需要修改配置并重新開機服務
-
中間件封裝
中間件封裝的意思就是獨立出一個資料庫管理系統,實作讀寫分離和資料庫連接配接管理。業務系統像連接配接資料庫伺服器一樣連接配接這個管理系統。
特點:
- 實作較複雜
- 可以應用于很多業務系統中
- 業務系統不用關心主從切換,管理系統可以動态識别哪個庫是主庫(可寫)
-
總結
讀寫分離适合讀多寫少的業務場景。
在單機資料庫情況下,表上家索引會優化查詢,但是影響寫入速度。讀寫分離後可以單獨對讀庫進行優化,寫庫寫入速度也會提高。