淺談網站架構演變

淺談網站架構程序員

 

 

 

做爲一個從過後臺開發已經2年的程序員來說,大部分時間都忙於業務邏輯分析,每每忽略了業務之上的架構層面的設計。數據庫

本文做爲網站架構知識的補充,不只開拓了眼界,也對之後的程序設計益處多多。下面咱們就一塊兒來看看網站架構的演變歷史。緩存

 

網站架構的演變大體分爲以下幾個階段:安全

 

1服務器

 

初始階段的網站架構網絡

網站在最初開始時沒有太多人訪問,用一臺服務器就徹底能夠勝任,此時的網站架構以下圖所示。架構

應用程序,文件存儲,數據庫全部的資源都在一臺服務器上。也就是經典的LAMP架構模型(Linux操做系統+部署在Apache上+MySql存儲+PHP開發)。負載均衡

 

2分佈式

 

應用服務和數據服務分離性能

網站有了愈來愈多的用戶,不斷增加的訪問量致使網站性能愈來愈差,數據庫存儲空間也愈來愈不足,此時由初始架構演變爲應用程序與數據服務分離的架構,以下圖所示。

各個服務器對硬件的資源要求各不相同:

  1. 應用服務器因爲處理大量業務邏輯,所以須要更強大的CPU;

  2. 數據庫服務器須要快速磁盤檢索和數據緩存,所以須要更快的硬盤和更大的內存;

  3. 文件服務器須要存儲大量的文件,所以須要更大的硬盤。

 

3

 

緩存改善網站性能

網站訪問也遵循二八定律:80% 的業務訪問集中在 20% 的數據上。

既然大部分的業務訪問集中在一小部分數據上,那麼把這一小部分數據緩存在內存中,天然能夠提升網站性能,加入緩存後的網站架構以下圖所示。

網站使用的緩存分爲兩種:

  1. 緩存在應用服務器上的本地緩存;

  2. 緩存在專門的分佈式緩存服務器上的遠程緩存。

那二者的區別有哪些呢?

本地緩存訪問速度更快,可是受本地服務器內存限制,緩存數據有限。

遠程分佈式緩存通常使用集羣的方式,部署大內存服務器做爲專門的緩存服務器,能夠理論上作到不受內存容量限制的緩存服務。

 

4

 

應用服務器集羣

加入緩存後,數據訪問壓力緩解,可是單一服務器能夠處理的請求有限,在訪問高峯期,這會成爲網站的瓶頸。

因此對於網站來講,既然能夠經過增長一臺服務器的方式改善負載壓力,那就能夠以一樣的方式持續增長服務器不斷改善系統性能,從而實現系統的可伸縮性。應用服務器集羣則應運而生。此時網站架構以下圖所示。

經過負載均衡將請求分發到應用服務器集羣,若是用戶訪問量持續增加,那麼就在集羣中加入更多的服務器,使服務器的負載壓力再也不成爲整個網站的瓶頸。

 

5

 

數據庫的讀寫分離

隨着網站用戶不斷增多,服務器搭建了集羣便再也不是網站的瓶頸,數據庫反而會由於負載太高而成爲瓶頸。

因爲大部分主流數據庫都有主從熱備的功能,經過配置兩臺數據庫的主從關係,但是實現數據庫之間的數據複製,從而實現數據庫的讀寫分離,減輕數據庫壓力。

此時網站架構以下圖所示。

   

讀寫分離:

應用服務器在寫數據時,訪問數據庫,主數據庫經過主從複製機制將數據更新到從數據庫,當應用服務器讀數據的時候就可用經過從數據庫讀取數據。

 

6

 

CDN和反向代理

CDN和反向代理本質也是緩存。加入CDN和反向代理會有效加速網站訪問速度。此時網站架構以下圖所示。

CDN通常部署在網絡提供商的機房,使得用戶在請求網站服務時,可從最近的網絡提供商機房獲取數據。

反向代理則部署在網站的中心機房,當用戶請求到達中心機房後,先訪問反向代理服務器,獲取反向代理服務器中的緩存的資源,直接返回給用戶。

 

7

 

分佈式文件系統和分佈式數據庫

單一服務器都知足不了大型網站持續增加的需求,這時數據庫要使用分佈式數據庫,文件系統使用分佈式文件系統。此時網站架構以下圖所示。

分佈式數據庫是網站數據庫拆分的最後手段,只有在單表數據特別大時才使用。通常更經常使用的是業務分庫,將不一樣業務的數據庫部署在不一樣機器上。

 

8

 

使用NoSQL數據庫和搜索引擎

隨着網站運營愈來愈久,業務增加愈來愈大,數據的產生也就愈來愈大。此時對數據的檢索和存儲也就愈來愈複雜,那就須要採用非關係數據庫技術-NoSQL數據庫和數據庫查詢技術-搜索引擎。此時網站架構以下圖所示。

 

9

 

業務拆分

大型網站業務日益複雜,會使用拆分的手段將整個網站分爲不一樣的產品線。在技術角度上講,就是講網站拆分紅許多不一樣的應用,每一個應用都要獨立部署。此時網站架構以下圖所示。

 

應用之間能夠經過超連接創建關係,如在首頁導航欄添加各個應用的連接地址。也能夠經過消息隊列進行數據分發,進行業務調用。

 

10

 

分佈式服務架構

隨着業務拆分愈來愈細,存儲系統則愈來愈大,可能會出現不一樣的應用系統須要執行許多相同的業務操做的狀況。那將這些共用的業務提出出來,獨立部署。經過分佈式服務調用共用業務服務完成具體的業務操做。此時網站架構以下圖所示。

大型網站架構演化到這一步,也就是時下流行的分佈式架構。但架構發展並不會止步於此,目前許多大型網站都開始有本身的雲計算平臺,將計算做爲一種資源出售。一些中小網站不須要再關心技術架構問題,將來的網站架構確定還會繼續發展下去,會繼續適應將來持續增加的業務需求。

 

網站架構概述大體分爲以上幾個階段,後續咱們會針對網站架構優化方面再作分享,主要從網站的性能、可用性、伸縮性、擴展性、安全性這幾個方面入手,繼續討論網站架構方面所遇到的問題,分享架構優化的知識。

 

 

參考資料:《大型網站技術架構》----李智慧 

 

關注一下,我寫的就更來勁兒啦 

 

相關文章
相關標籤/搜索