大型網站架構演化

jopen 9年前發布 | 22K 次閱讀 網站
 

(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)企圖用技術解決所有問題: 技術是用來解決業務問題的,而業務的問題,也可以通過業務的手段去解決

本章思維導圖

大型網站架構演化

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!