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

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

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

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

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

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

資料庫讀寫分離

架構如下圖:

 

總結:

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

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

2,應用程式對於資料來源選擇的問題。對於應用程式來說,後面的寫操作全部要走主庫,而讀操作要走從庫。這些操作一般通過中介軟體資料訪問層來完成。

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