大型網站架構演化發展歷程(一)

1.初始階段的網站架構數據庫

  大型網站都是由小型網站發展而來,網站架構也是同樣。小型網站最開始沒有多少人訪問,只須要一臺服務器就綽綽有餘。緩存

2.應用服務和數據服務分離服務器

  隨着網站業務的發展,愈來愈多的用戶訪問致使性能愈來愈差,愈來愈多的數據致使存儲空間不足。這時就須要將應用和數據分離。這時須要三臺服務器:應用服務器、文件服務器和數據庫服務器,以下圖。這三臺服務器對硬件的資源要求各不相同:應用服務器須要處理大量的業務邏輯,須要更快更強大的CPU;數據庫服務器須要快速檢索磁盤和緩存,所以須要更快的磁盤和更大的內存;文件服務器須要存儲用戶上傳的文件,所以須要更大的磁盤。架構

  應用和數據分離以後,不一樣特性的服務器承擔不一樣的角色,網站的併發處理能力和數據存儲空間獲得了很大的改善,支持網站業務進一步發展。併發

3.使用緩存改善網站性能負載均衡

  隨着用戶逐漸增多,網站又一次面臨挑戰:數據庫壓力太大致使訪問延遲,進而影響整個網站的性能,用戶體驗很差,此次就須要對網站架構進一步優化。分佈式

  網站訪問特色一樣遵循二八定律:80%業務訪問集中在20%的數據上。淘寶買家瀏覽的商品集中在少部分紅交多,評價良好的商品上;百度搜索關鍵詞集中在少部分熱門詞彙上;只有常常登陸的用戶纔會發微博、看微博,而這部分用戶也是佔總用戶的一小部分(單證信息也是如此)。這樣咱們就能夠把這一小部分數據放入內存中來提升訪問效率。高併發

  網站用的緩存服務器能夠分爲兩種:緩存在應用服務器上的本地緩存和緩存在專門的分佈式緩存服務器上的遠程緩存。訪問本地緩存要快一些,可是本地緩存受應用服務器內存限制,其緩存數據量有限,並且會出現和應用程序爭內存的狀況。遠程分佈式緩存能夠採用集羣方式,部署大內存的服務器做爲緩存服務器,理論上能夠作到不受內存的限制。性能

  使用緩存能夠減少數據庫訪問壓力,提升網站的數據訪問速度,改善數據庫的寫入性能。優化

 

4.使用應用服務器集羣改善網站的併發處理能力

  使用了緩存以後,數據訪問壓力獲得了緩解,可是單機的應用服務器可以處理的請求鏈接有限,在網站訪問高峯期,應用服務器就會成爲整個網站的瓶頸。

  使用集羣是網站解決高併發、海量數據問題的經常使用手段。當一臺服務器的處理能力、存儲空間不足時,不要企圖去更換更強大的服務器(這種方式傳統行業或許能夠,但並不適用於互聯網行業)。這種狀況下,更恰當的作法是增長一臺服務器分擔原有服務器的訪問以及存儲壓力。使用了集羣以後同時也須要增長一臺負載均衡調度服務器來進行請求分發。

5.數據庫讀寫分離

  網站在使用緩存以後,使得絕大部分讀操做均可以不經過數據庫就能夠完成,可是仍有小部分讀操做(緩存沒有命中、緩存過時)和所有的寫操做都訪問數據庫,所以在網站的用戶到達必定規模以後,數據庫由於負載壓力太高而成爲網站的瓶頸。

  可使用數據庫主從的方式來改善這一問題:讀操做在從庫執行,寫操做在主庫執行而後將數據同步到從庫。

  爲了便於應用程序訪問讀寫分離後的數據庫,一般在應用服務器端使用專門的數據訪問模塊,使得數據讀寫分離對應用透明。

相關文章
相關標籤/搜索