在使用緩存後,使大部分的數據讀操作訪問都可以不通過資料庫就能完成,但是仍有一部分讀操作(包括未命中緩存的,和緩存過期的)和全部的寫操作需要訪問資料庫,當網站的訪問量繼續增加後,資料庫會因為負載壓力過高導致成為網站的性能瓶頸。 目前大部分的主流資料庫都提供了主從熱血功能,通過配置兩台資料庫的主從關係, ...
在使用緩存後,使大部分的數據讀操作訪問都可以不通過資料庫就能完成,但是仍有一部分讀操作(包括未命中緩存的,和緩存過期的)和全部的寫操作需要訪問資料庫,當網站的訪問量繼續增加後,資料庫會因為負載壓力過高導致成為網站的性能瓶頸。
目前大部分的主流資料庫都提供了主從熱血功能,通過配置兩台資料庫的主從關係,可以將一臺資料庫伺服器的數據同步到另一臺伺服器上,網站利用資料庫的這一功能,可以實現資料庫的讀寫分離,從而改善資料庫的負載壓力。
應用伺服器在寫數據的時候,訪問主資料庫,主資料庫通過主從複製機制將數據更新同步到從資料庫,這樣當應用伺服器讀數據的時候,就可以通過從資料庫獲得數據,為了便於應用程式訪問讀寫分離後的資料庫,通常在應用伺服器端用專門的數據訪問模塊(也叫數據訪問層),使資料庫讀寫分離對應用透明。
資料庫讀寫分離
架構如下圖:
總結:資料庫讀寫分離緩解了資料庫的壓力,但同時會帶來兩個問題:
1,數據同步的問題。一般利用資料庫自帶的數據複製機制解決,可以參考:http://note.youdao.com/noteshare?id=1245e28ab69dc951bb9df9f53e9abc16&sub=E1F1B4AAEB9140D6B37B1998163DBD0B
2,應用程式對於數據源選擇的問題。對於應用程式來說,後面的寫操作全部要走主庫,而讀操作要走從庫。這些操作一般通過中間件數據訪問層來完成。