架構演進 大型網站的技術挑戰主要來自於龐大的用戶,高併發的訪問和海量的數據,任何簡單的業務一旦需要處理數以P計的數據和麵對數以億計的用戶,問題就會變得很棘手。大型網站架構主要就是解決這類問題。 架構選型是根據當前業務需要來的,在滿足業務需求的前提下,既要有足夠的擴展性也不能過度設計,每次的架構升級都 ...
架構演進
大型網站的技術挑戰主要來自於龐大的用戶,高併發的訪問和海量的數據,任何簡單的業務一旦需要處理數以P計的數據和麵對數以億計的用戶,問題就會變得很棘手。大型網站架構主要就是解決這類問題。
架構選型是根據當前業務需要來的,在滿足業務需求的前提下,既要有足夠的擴展性也不能過度設計,每次的架構升級都是為瞭解決系統瓶頸而做的。
初始階段的網站架構
初始階段都比較簡單,通常一臺伺服器就可以搞定一個網站了,看圖。
應用服務和數據服務分離
隨著網站業務的發展,一臺伺服器逐漸不能滿足需求;這時候就需要將應用和數據分離,如圖。
使用緩存改善網站性能
毫無疑問,現在的網站基本上都會使用緩存,即:80%的業務訪問都會集中在20%的數據上。
使用應用伺服器集群改善網站的併發處理能力
因為單一應用伺服器能夠處理的請求連接有限,在網站訪問高峰時期,應用伺服器會成為整個網站的瓶頸。因此使用負載均衡處理器勢在必然。通過負載均衡調度伺服器,可將來自瀏覽器的訪問請求分發到應用的集群中的任何一臺伺服器上。
資料庫讀寫分離
當用戶達到一定規模後,資料庫因為負載壓力過高而成為網站的瓶頸。而目前主流的資料庫都提供主從熱備功能,通過配置兩台資料庫主從關係,可以將一臺資料庫的數據更新同步到另一臺伺服器上。網站利用資料庫這一功能實現資料庫讀寫分離,從而改善資料庫負載壓力。
使用反向代理和CDN加上網站相應
提高網站的訪問速度,主要手段有使用CDN和反向代理。
CDN和反向代理的基本原理都是緩存,區別在於CDN部署在網路提供商的機房,而反向代理是部署在網站的中心機房,當用戶請求到達中心機房後,首先訪問的反向代理,如果反向代理緩存著用戶請求的資源,則直接返回給用戶。
使用分散式文件系統和分散式資料庫系統
任何強大的單一伺服器都滿足不了大型網站持續增長的業務需求。
分散式資料庫時網站資料庫拆分的最後手段,只用在單表數據規模非常大的時候才使用。不到不得已時,網站更常用的資料庫拆分手段是業務拆分,將不同業務的數據部署在不同的物理伺服器上。
使用NoSQL和搜索引擎
搜索引擎也基本已經形成現在大型網站必須提供的功能了,網站需要採用一些非關係資料庫技術如NoSQL和非資料庫查詢技術如搜索引擎。
業務拆分
大型網站為了應對日益複雜的業務場景,通過使用分而治之的手段將真個網站業務拆分成不同的產品線。
具體到技術上,也會根據產品線話費,將一個網站拆分成許多不同的應用,每個應用獨立部署維護。應用之間可以通過超鏈接建立管理,也可以通過消息隊列進行數據分發,當然最多的還是通過訪問同一個數據存儲系統來構成一個關聯的完整系統。
分散式服務
由於每一個應用系統都需要執行許多相同的業務操作,比如用戶管理,session管理,那麼可以將這些公用的業務提取出來,獨立部署。
作者|頂尖架構師棧
本文來自博客園,作者:古道輕風,轉載請註明原文鏈接:https://www.cnblogs.com/88223100/p/Evolution-process-of-large-scale-website-architecture.html