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

原文:http://www.cnblogs.com/JustOnly/p/4899615.html

前面已經描述了大型網站系統的特點,而對一個大型網站系統,其架構也是重要的一個環節。

  大型網站技術主要的挑戰來自於龐大的用戶、高併發以及海量的數據這三個方面。大型網站的形成就像一顆大樹的成長,歷盡長時間的磨練,最後枝繁葉茂,服務他人。

初始網站架構結構

         起初的網站鑑於用戶量、訪問量較少,只需要一臺服務器足以,應用程序、數據庫、文件等其所有資源放在一太服務器上就已經足夠滿足此時的需求,這時候網站的架構就幾個簡單組成部分如下圖

應用和數據服務分離

  隨着網站業務需求的發展,越來越多的用戶進行訪問,此時一臺服務器漸漸不能滿足需求,數據的存儲空間出現屏障。於是應用程序、數據庫、文件三者面臨分離,各自爲首分配一臺服務器,這三臺服務器對硬件的要求各取所需,應用服務器處理大量的業務邏輯,需求更快更大的CPU;數據庫服務器對數據庫的處理需要快速搜索以及緩存,需求對內存更大,對硬盤讀寫能力更迅速;文件服務器需求放入大量的用戶資源,對硬盤空間要求更大。此時的網站的架構組成部分展示如下圖

使用緩存

  網站的架構進一步改進後可以滿足了業務的發展,但是隨着網站知名度提升,用戶量的進一步增加,訪問數據相比之前愈加頻繁,數據庫壓力急劇上升導致網站訪問出現延遲,用戶的性能體驗出現下滑,面臨此時網站出現的性能問題,網站架構設計需要再一次的進化,鑑於網站訪問也遵循二八定律,例如:新浪微博,只有經常登錄的用戶纔會發微博,看微博,而這些用戶對於總用戶數只是冰山一角。既然出現這一現象,那麼緩存這部分的數據是不是可以解決這現象呢?網站緩存可以分爲本地緩存和分佈式緩存這兩種,二者的區別是本地緩存速度快但是受服務器內存限制緩存的數量有限,而分佈式緩存採用的是集羣處理,理論上是可以避免內存瓶頸。此時網站的架構組成部分如下圖

應用服務器集羣改善網站併發能力

  使用緩存後,數據庫的壓力得到緩解,但是在面臨網站高峯期時,應用服務器處理單一的請求連接出現瓶頸,萬事都有解決的辦法,只是看你願不願去想,願不願去嘗試做,採用集羣,集羣多臺應用程序服務器分佈原有的應用程序服務器,從而實現了系統的可伸縮性,網站架構此時演化成這樣如下圖

數據庫讀寫分離

  使用緩存,雖然使用戶請求數據操作大部分不直接通過數據庫,但是仍有一部分數據(緩存過期、緩存數據沒有命中)讀寫操作需要訪問數據庫,面對這部分數據,可能出現數據訪問負載壓力,把數據庫讀寫操作分離性能效果理當會如何呢?效果無言而喻。

CDN和反向代理加速網站響應

  網絡覆蓋範圍地區廣泛,造就了網絡環境複雜,從而用戶訪問網站性能體現也各有差異,鑑於這問題,網站架構使用CDN和反向代理以技術加速網站響應,二者原理都是緩存,CDN可以從距離用戶最近網絡提供點獲取數據;反向代理則是首先從反向代理服務器中獲取數據。

分佈式文件、數據庫系統

  任何單一的服務器最後都是滿足不了業務需求發展。雖然前面數據庫讀寫分離能夠改善數據庫負載壓力但是隨着業務不斷壯大最終還是難以維持此時使用分佈式數據庫,該技術不到不得以建議不使用,而對於這個技術解決方案更常用的使用業務拆分,將不同的業務數據庫部署在不同的物理服務器上。

NoSQL和搜索引擎

  該技術對於可伸縮的分佈式提供更好的支持,減輕應用程序管理諸多數據源的麻煩。

業務拆分

  大型網站日益發展壯大,業務需求越來越複雜,使用分而治之手段分離整個網站的業務變成不同的產品線。具體到技術上,將一個網站拆分成許多不同的應用,每個應用獨立部署,而應用與應用之間通過超鏈接關聯,不過最多的還是通過訪問同一個數據存儲來構成一個關聯的完整系統。

分佈式服務

  一個應用系統需要執行相同業務操作,那麼可以將共同的業務提取出來,獨立部署,由這些可複用的業務連接數據庫,提供共用業務服務,而應用系統只需要管理用戶界面,通過分佈式調用共用業務服務完成具體業務操作。

  大型網站結構演化到這裏,基本上大多數的技術問題都得以解決了,但是事物發展到一定的階段就會擺脫初衷向更強的方向發展。目前許多的大型網站都建立自己的雲平臺,將計算作爲一種資源進行出售。

大型網站架構演化歷經了長時間磨練才發展如此,在過程中也是出現一些易步入的誤區

  一味的追隨大公司解決方案,大公司的經驗和成功固然重要,但是不能盲目的追從,要與實際的具體業務需求有所改動;

  爲了技術而技術,網站技術是爲業務而存在的,但是一味的追求新技術,可能會導致結構技術之路越走越難;

  企圖用技術解決所有問題,技術雖是解決業務問題的,但也不是萬能鑰匙,有些業務的問題也是可以通過業務手段解決。

 

  參考資料:《大型網站技術架構核心原理與案例分析》


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