一、大型網站系統特點
(1)高并發、大流量:PV量巨大
(2)高可用:7*24小時不間斷服務
(3)海量資料:檔案數目分分鐘xxTB
(4)使用者分布廣泛,網絡情況複雜:網絡營運商
(5)安全環境惡劣:黑客的攻
(6)需求快速變更,釋出頻繁:快速适應市場,滿足使用者需求
(7)漸進式發展:慢慢地營運出大型網站
二、大型網站架構演化過程
(1)初始階段網站架構:一台Server就剛需—應用程式、資料庫、檔案等所有資源都集中在一台Server上,典型案例:基于LAMP架構的PHP網站

(2)應用和資料服務分離:三台Server平天下—業務發展,單台不再适應業務的發展,将應用和資料分離後成三台Sever(應用伺服器、檔案伺服器與資料庫伺服器)。分離後三台Server對硬體資源的需求各不相同:應用伺服器需要更快更強大的CPU,而資料庫伺服器需要更快的硬碟和更大的記憶體,檔案伺服器則需要更大的硬碟;
(3)使用緩存改善網站性能:3+X的Server模式—減少資料庫通路壓力,提高網站的資料通路速度。緩存又可以分為:本地緩存和遠端緩存(可以是分布式的),本地緩存通路速度快,但資料量有限;遠端分布式緩存可以叢集,是以容量不受限制;
(4)使用應用伺服器叢集改善網站并發處理能力:叢集—解決高并發、海量資料問題的常用手段,實作系統的可伸縮性。通過負載均衡排程器,可将使用者通路分發到叢集中的某台Server上,應用伺服器的負載壓力不再成為整個網站的瓶頸。
(5)資料庫讀寫分離:使用緩存後絕大部分都可以不通過DB就能完成,但仍有一部分(緩存通路不命中、緩存過期)和全部的寫操作需要通路DB,在網站的使用者達到一定規模後,DB因為負載壓力過高成為網站的瓶頸。大部分主流DB都提供主從熱備功能,利用這一功能就可以配置兩台DB主從關系,一台資料更新同步到另一台Server上。網站利用DB的這一功能,實作DB讀寫分離,進而改善DB負載壓力。
(6)使用反向代理和CDN加速網站響應:CDN和反向代理的基本原理都是緩存,差別在于CDN部署在網絡提供商的機房,而反向代理則部署在網站的中心機房。使用CDN和反向代理的目的都是盡早傳回資料給使用者,一方面加快使用者通路速度,另一方面也減輕後端伺服器的負載壓力。
(7)使用分布式檔案系統和分布式資料庫系統:随着網站業務的發展,兩台DB伺服器依然不能滿足需求,檔案系統也一樣。
(8)使用NoSQL和搜尋引擎:NoSQL和搜尋引擎都是源自網際網路的技術手段,對可伸縮的分布式特性具有更好的支援。應用伺服器則通過一個統一資料通路子產品通路各種資料,減輕應用程式管理諸多資料源的麻煩。
(9)業務拆分:通過分而治之的手段将整個網站業務分成不同的産品線,如淘寶将首頁、商鋪、訂單、賣家、買家等拆分成不同的産品線,分歸不同的業務團隊負責。各個應用之間可以通過建立一個超連結建立關系,也可以通過消息隊列進行資料分發。
(10)分布式服務:既然每一個應用系統都需要執行許多相通的業務操作,比如使用者管理、商品管理等,那麼可以将這些共用的業務提取出來,獨立部署。
三、大型網站架構演化價值觀
(1)核心價值:随網站所需靈活應對
大型網站不是從無到有一步就搭建好一個大型網站,而是能夠伴随小型網站業務的漸進發展,慢慢地演化成一個大型網站。
(2)驅動力量:網站的業務發展—業務成就了技術,事業成就了人,而不是相反
四、大型網站架構設計的誤區
(1)一味追随大公司的解決方案
(2)為了技術而技術->常見問題
(3)企圖用技術解決所有問題:技術是用來解決業務問題的,而業務的問題,也可以通過業務的手段去解決;
本章思維導圖
作者:周旭龍
本文版權歸作者和部落格共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連結。