1. 程式人生 > >大型網站架構演進(5)數據庫讀寫分離

大型網站架構演進(5)數據庫讀寫分離

這一 流數據 tar share 讀數 應用 庫服務器 兩個 .com

原文:大型網站架構演進(5)數據庫讀寫分離

  在使用緩存後,使大部分的數據讀操作訪問都可以不通過數據庫就能完成,但是仍有一部分讀操作(包括未命中緩存的,和緩存過期的)和全部的寫操作需要訪問數據庫,當網站的訪問量繼續增加後,數據庫會因為負載壓力過高導致成為網站的性能瓶頸。

  目前大部分的主流數據庫都提供了主從熱備功能,通過配置兩臺數據庫的主從關系,可以將一臺數據庫服務器的數據同步到另一臺服務器上,網站利用數據庫的這一功能,可以實現數據庫的讀寫分離,從而改善數據庫的負載壓力。

  應用服務器在寫數據的時候,訪問主數據庫,主數據庫通過主從復制機制將數據更新同步到從數據庫,這樣當應用服務器讀數據的時候,就可以通過從數據庫獲得數據,為了便於應用程序訪問讀寫分離後的數據庫,通常在應用服務器端用專門的數據訪問模塊(也叫數據訪問層),使數據庫讀寫分離對應用透明。

數據庫讀寫分離

架構如下圖:

技術分享圖片

總結:

數據庫讀寫分離緩解了數據庫的壓力,也提升了整個網站的性能,但同時會衍生出來兩個問題:

1,數據同步的問題。一般利用數據庫自帶的數據復制機制解決,可以參考:http://note.youdao.com/noteshare?id=1245e28ab69dc951bb9df9f53e9abc16&sub=E1F1B4AAEB9140D6B37B1998163DBD0B

2,應用程序對於數據源選擇的問題。對於應用程序來說,後面的寫操作全部要走主庫,而讀操作要走從庫。這些操作一般通過中間件數據訪問層來完成。

經過數據庫讀寫分離,這個階段,系統並發處理能力理論上可以達到5000+了。

大型網站架構演進(5)數據庫讀寫分離