linux企業實戰---怎樣繪製大型網站架構藍圖?

linux企業實戰—怎樣繪製大型網站架構藍圖?

1.網站架構演化發展

初始階段的網站(特點:沒有多臺服務器去管理,既當爹又當媽,特別忙,容易累死)應用程序、數據庫、文件都在一個服務器上。
在這裏插入圖片描述
所以隨着網站業務的發展,一臺服務器逐漸不能滿足需求:服務器的性能會越來越差,存儲空間不足,這時就需要應用和數據分離,需要多臺服務器來滿足我們的需求,緩解我們的壓力。
應用服務器:處理大量的業務,需要更快更強的CPU。
數據庫服務器:需要快速磁盤檢索和數據緩存;需要更快的磁盤和更大的內存。
文件服務器:需要更大的硬盤。
在這裏插入圖片描述
爲了進一步提升網站的性能,我們需要使用緩存服務器去改善網站性能

2. 使用緩存服務器改善網站性能

網站訪問的特點和二八定律一樣:80%的業務訪問集中在20%的數據上。所以如果把這一部分數據緩存在內存中,可以減少數據庫的訪問壓力,提高整個網站的數據訪問速度,改善數據庫的寫入性能。
網站使用的緩存可以分爲兩種:緩存在應用服務器上的本地緩存和緩存在專門的分佈緩存服務器上的遠程緩存。
本地緩存的訪問快一些,但受應用服務器內存限制,緩存數據量有限,遠程分佈式緩存可以使用集羣(n)的方式,部署大內存的服務器作爲專門的緩存服務器,理論上做到不受內存容量的限制的緩存服務。
在這裏插入圖片描述

緩存技術:

  1. 內容分發網絡(CDN)反向代理
  2. 本地緩存 分佈式緩存

使用前提:1. 數據訪問熱點不均勻 2. 是數據在某個時間段內有效,不會很快過期。(比如微博)

3. 使用應用服務器集羣改善併發處理能力

使用緩存後,數據訪問壓力得到有效的緩解,但是單一應用服務器能夠處理的請求鏈接有限,在網站高峯期,應用服務器就成爲整個網站的瓶頸。使用集羣是網站解決高併發,海量數據問題的常用手段。通過負載均衡調度服務器。可將來自用戶瀏覽器的訪問請求分發到應用服務器中的任何一臺服務器上。如果有更多用戶,就是集羣中加入更多的應用服務器,是應用服務器的負載壓力不再成爲整個網站的瓶頸

在這裏插入圖片描述

4. 數據庫讀寫分離

網站在使用緩存後,使絕大部分數據操作訪問都可以不通過數據庫就能夠完成,但是仍有一部分讀操作(緩存訪問不命中,緩存過期)和全部的寫操作需要訪問數據庫,在網站的用戶達到一定的規模後,數據庫因爲負載壓力過高而成爲網站的瓶頸。目前大部分的主流數據庫都提供主從熱備功能,通過配置兩臺數據主從關係。可以將一臺數據庫服務的數據更新同步到另一臺服務器上。網站利用數據庫的這一功能,實現數據庫的讀寫分離,從而改善數據庫負載壓力。
在這裏插入圖片描述

5. 使用反響代理和cdn加速網站響應

加速網站的訪問速度,主要手段使用cdn的反向代理。
CDN的反向代理的基本原理都是緩存,區別在於cdn部署在網絡提供商的機房;而反向代理部署在網站的中心機房,當用戶請求到達中心機房後,首先訪問的服務器是反向代理服務器,如果反向代理中緩存着用戶請求的資源,就將其直接返回組用戶。
在這裏插入圖片描述

6. 使用分佈式文件系統和分佈式數據庫系統

任何強大的單一服務器都滿足不了大型網站持續增長的業務需求。數據庫經過讀寫分離後,從一臺服務器拆分成兩臺服務器,但是隨着網站業務的發展依然不能滿足需求,着時需要使用分佈式數據庫,文件系統也一樣,需要使用分佈式文件系統。
分佈式數據庫是網站數據庫拆分的最後手段,只有在單表規模非常大的時候才用。不到不得已時,網站更常用的數據庫拆分手段時業務分庫,將不同業務的數據庫部署在不同的物理服務器上。

7. 使用NOSQL和搜索引擎

隨着網站業務越來越複雜,對數據存儲和檢索的需求也越來越複雜,網站需要採用一些非關係數據庫技術如nosql和非數據庫查詢技術如搜索引擎。
NOSQL的搜索引擎都是源自互聯網的技術手段,對可伸縮的分佈式特性具有更好的支持。應用服務器則通過一個統一的數據訪問模塊訪問各種數據,減輕應用程序管理諸多數據源的麻煩。

8. 業務拆分

大型網站爲了應對日益複雜的業務場景,通過使用分而治之的手段將整個網站業務分成不同的產品線,如大型購物網站就會將首頁、商鋪、訂單、買家等拆分成不同的產品項,分歸不同的業務團隊負責。
具體技術上,也會根據產品線劃分,將一個網站拆分成許多不同的應用,每個應用獨立部署維護。應用只見可以通過一個超鏈接建立關係,也可以通過消息隊列進行數據分發,當然最多還是通過訪問同一個數據存儲系統來構成一個關聯的完整系統。
在這裏插入圖片描述

9. 分佈式服務

隨着業務拆分越來越小,存儲系統越來越龐大,應用系統的整體複雜度呈指數級增加,部署維護越來越困難。由於所有應用要和所有數據庫系統連接,在數萬臺服務器規模的網站中這些連接數目時服務器規模的平方,導致數據庫連接資源不足,拒絕服務。
既然每一個應用都要執行許多相同的業務操作,比如用戶管理、商品管理等,那麼可以將這些共用的業務提取出來,獨立部署。由這些可複用的業務連接數據庫,通過分佈式服務調用共用業務服務完成具體業務操作。
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章