1. 程式人生 > >大型網站架構演化發展歷程 - 下

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

1-5見上一篇博文:大型網站架構演化發展歷程 - 上

6 使用 CDN 和反向代理加上網站響應

  • CDN 和反向代理的基本原理都是快取,區別在於 CDN 不是在網路提供商的機房,使使用者在請求網站服務時,可以從距離最近自己最近的網路提供商獲取資料
  • 而反向代理則部署在網路的中心機房,當用戶請求到達中心機房後,首先訪問的伺服器時反向代理伺服器,如果反向代理伺服器中快取這使用者請求的資源,就將其直接返回給使用者

使用 CDN 和反向代理的目的都是儘早返回資料給使用者,一方面加快使用者訪問速度,另一方面也減輕後端伺服器的負載壓力。
參考:cdn加速和反向代理

7 使用分散式檔案系統和分散式資料庫系統

資料庫經過讀寫分離後,從一臺拆分成兩臺,但隨著網站業務的發展依然不能滿足需求,這時需要使用分散式資料庫,檔案系統也一樣,需要使用分散式檔案系統。
分散式資料庫是資料庫拆分的最後手段,只有在表單資料規模非常龐大的時候才使用,不到萬不得已,網站更常用的資料庫拆分手段是業務分庫,將不同業務的資料部署到不同物理機上。

8 使用 NoSQL 和搜尋引擎

資料查詢和檢索的需求也越來越複雜,網站需要採用一些非關係資料庫技術如 NoSQL 和非資料庫查詢技術,如搜尋引擎。
應用伺服器通過一個統一的資料訪問模組訪問各種資料,減輕應用程式管理諸多資料來源的麻煩。

9 業務拆分

通過使用分而治之的手段將整個網站業務分成不同的產品線,不同產品線分歸不同業務團隊負責。
具體到技術上,也會根據產品線劃分,將一個網站拆分成許多不同的應用,每個應用獨立維護。應用間可以通過一個超連結建立關係,也可以通過訊息佇列進行資料分發,當然最多的還是通過訪問同一個資料儲存系統構成一個關聯的完整系統

10 分散式服務

隨著業務拆分越來越小,應用系統的整體複雜度成指數級增加,部署維護越來越困難。
每一個應用系統都需要許多相同的業務操作,比如使用者管理、商品管理等,那麼可以將這些共用的業務提取出來,獨立部署。由這些可複用的業務連線資料庫,提供共用服務。

大型網站架構演化到這裡,基本上大多數的計算問題都得以解決。
既然大型網站架構解決了海量資料的管理和高併發事務的處理,那麼就可以把這些解決方案應用到網站自身以外的業務上去。雲端計算平臺將計算作為一種基礎資源出售,中小網站不需要關心技術架構問題,只需按需付費,就可以使網站隨業務增長逐漸獲得更大的儲存空間和更多的計算資源。


文章內容摘抄自《大型網站技術架構 - 核心原理與案例分析》