資料庫高效能解決方案
阿新 • • 發佈:2018-11-11
高效能資料庫叢集的第一種方式是: 讀寫分離,其本質是將訪問壓力分散到叢集中的多個節點,但是沒有分散 儲存壓力;第二種方式是:分庫分表,既可以分散訪問壓力,又可以分散儲存壓力。
一 讀寫分離
讀寫分離的基本原來是將資料庫讀寫操作分散到不同的節點上,讀寫分離的基本實現如下:
- 資料庫伺服器搭建主從叢集,一主一從,一主多從都可以
- 資料庫主機負責讀寫操作,從機只能負責讀操作
- 資料庫主機通過複製將資料同步到從機,每臺數據庫伺服器都儲存了所有的業務資料
- 業務伺服器將寫操作發給資料庫主機,將讀操作發給資料庫從機
注意:這裡用的是主從叢集,而不是主備叢集,備機一般認為僅僅提供備份功能,不提供訪問功能;而從機可以理解為僕從,僕從是需要幫助主人幹活的,從機是需要提供讀資料的功能,所以使用主備還是主從,是要看場景的,這兩個詞不是完全等同的
讀寫分離的實現邏輯並不是很複雜,但是在實際應用過程中需要應對複製延遲帶來的複雜性
主從複製延遲會帶來一個問題:如果業務伺服器將資料寫入到資料庫主伺服器後立刻進行讀取,此時讀操作訪問的是從機,主機還沒有將資料複製到從機,到從機讀取資料是讀取不到最新資料的,業務上可能會存在問題。
解決主從複製延遲有幾種常見的方法
- 寫操作後讀操作指定發給資料庫主伺服器
- 讀從機失敗後再讀一次主機,這就是通常所說的二次讀取,二次讀取和業務無繫結,只需要對底層資料庫訪問的API進行封裝即可,實現代價較小,不足之處在於如果存在很多的二次讀取,將大大增加主機的讀操作壓力。
- 關鍵業務讀寫操作全部指向主機,非關鍵業務採用讀寫分離